QGIS etichettatura bustrofedica

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


Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!

SE IL POST VI È STATO UTILE CONTRIBUITE A MANTENERLO AGGIORNATO PAYPAL


Pubblicità

2 pensieri su “QGIS etichettatura bustrofedica

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.