Domanda posta nel Gruppo Telegram ufficiale di QGIS Italia:
Sto cercando un modo per far si che la numerazione venga alternata (bustrofedica). Per chiarirci vorrei che nella seconda riga, anziché ripartire da sinistra, ripartisse da destra (15 dove ora c’é 28).
ValP

Un problema molto simile è stato già affrontato in un precedente blog post, in questo caso la complessità è legata alla modalità di scrittura bustrofedica.
La mia soluzione passa dal generare non più una sola linea, ma due in direzione opposte come in figura:

L’algoritmo presente in strumenti di processing genera un reticolo con ID che va dall’alto a sinistra verso il basso per poi continuare a partire dall’alto (vedi screenshot di sopra), per etichettarlo con scrittura bustrofedica ho usato questa espressione:
CASE WHEN
floor((length(shortest_line( $geometry, geometry ( get_feature_by_id( 'linea', 1)))) / 7.5) +.1) % 2 = 0
THEN
array_find(
array_sort(
array_agg(
length(shortest_line( $geometry, geometry ( get_feature_by_id( 'linea', 1)))))) ,
length(shortest_line( $geometry, geometry ( get_feature_by_id( 'linea', 1)))))+1
ELSE
array_find(
array_sort(
array_agg(
length(shortest_line( $geometry, geometry ( get_feature_by_id( 'linea', 2)))))) ,
length(shortest_line( $geometry, geometry ( get_feature_by_id( 'linea', 2)))))+1
END
la dimensione del reticolo è 10 x 7.5 m
Nel linguaggio umano:
length(shortest_line( $geometry, geometry ( get_feature_by_id( 'linea', 1))))
calcola la distanza tra la linea, con id=1, e il singolo rettangolo;- divido per la dimensione minore del rettangolo 7.5 m e aggiungo 0.1 per essere sicuro che il successivo
floor
parta da 1; - poi, uso la funzione
%
per distinguere le righe pari e dispari; - il resto è noto e spiegato nel blog post precedente.

NOTE FINALI: Le due linee devono seguire un criterio molto semplice ma importate: devono partire da un estremo e raggiunger l’altro estremo del reticolo, devono essere sempre crescenti o decrescenti (non funzionerebbe se la linea fosse parallela al reticolo); poi la punta della freccia deve distare, dal reticolo, meno della dimensione del reticolo stesso (in questo caso la dimensione del reticolo è 10×7.5 m, quindi la freccia deve distare meno di 7.5 m).
Riferimenti
Ringraziamenti
- Il gruppo Telegram QGIS Italia per i continui spunti;
- ValP, per aver fatto la domanda;
- Antonio per aver chiesto un blog post.
Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!
Eccezzionale, davvero!
"Mi piace"Piace a 1 persona
Ciao Luca e grazie! 😉
"Mi piace""Mi piace"