Linee rette dall'etichetta alla funzione in QGIS?


11

Quello che sto cercando di fare è etichettare una serie di feature punto ma a causa della densità delle feature punto dovrò spostare le etichette lontano dalle feature punto. Voglio quindi utilizzare una semplice linea retta (non una freccia) per mostrare quale etichetta si riferisce a quale punto.

Ho usato il plugin "Easy Custom Labels" per generare le etichette e spostarle dove le voglio. Ma ciò che non riesco a fare è creare una semplice linea retta tra il punto e la tabella.

La cosa migliore che ho ottenuto è cambiare il "tipo di livello simbolo" (Livello etichette> Proprietà> Stile) in "freccia", deselezionare "frecce curve" e deselezionare "ripeti freccia su ogni segmento". E quindi rendere la lunghezza e lo spessore della testa 0 e rendere la "larghezza della freccia" e "la larghezza della freccia all'inizio" il più possibile. Ma questo crea ancora una linea spessa. Vedi l'immagine A.

Ho provato a impostare il "simbolo tipo successivo" su "linea semplice", ma questo si traduce in linee con nodi / vertici / angoli. Vedi l'immagine B.

Idealmente, vorrei linee rette tra le etichette e l'elemento (come nell'immagine A) che hanno una larghezza simile a quelle nell'immagine B.

Esempi di due tipi di etichettatura

Risposte:


11

È possibile utilizzare un'espressione per creare una linea tra etichetta e geometria

inserisci qui la descrizione dell'immagine

expresion:

CASE 
 WHEN (label_x IS NOT NULL AND label_y IS NOT NULL) THEN
  make_line(centroid($geometry),make_point(label_x -2,label_y), make_point(label_x ,label_y))
ELSE
  NULL
END

E questo dovrebbe il risultato:

inserisci qui la descrizione dell'immagine


Solo un sidenote, se le etichette vengono spostate manualmente utilizzando la barra degli strumenti delle proprietà dell'etichettatura e la posizione viene memorizzata nel progetto, le variabili label_x, y cambiano in campi chiamati "auxitime_storage_labeling_positionx" e "auxiliare_storage_labeling_positiony".
Gabriel C.

1
Posizionando il tuo punto medio di 2 unità verso ovest mentre lo fai qui make_point(label_x -2,label_y), le etichette sulla costa occidentale appariranno divertenti. Inoltre, lavorare su una scala diversa renderà questo inutile. Funzionerebbe meglio impostando questo punto in relazione alla distanza dall'etichetta e alla posizione relativa dal centroide.
Albert,

2

La risposta di Carlos rende un leader allineato orizzontalmente all'estremità dell'etichetta, mentre solo un punto in meno nel generatore di geometria fornisce linee rette. Nel mio esempio, ho spostato le etichette manualmente usando la barra degli strumenti di etichettatura in QGIS 3.0.3. Si noti che la tecnica può essere trovata nella domanda 232709 .

Le uniche modifiche che ho dovuto apportare sono i valori x, y nella mia espressione:

CASE
   WHEN ("auxiliary_storage_labeling_positionx" IS NOT NULL AND "auxiliary_storage_labeling_positiony" IS NOT NULL) THEN
        make_line(centroid($geometry),make_point("auxiliary_storage_labeling_positionx","auxiliary_storage_labeling_positiony"))
   ELSE
      NULL
END

Per quanto riguarda le linee guida stesse, l'albero della simbologia va così:

  • Riempire
    • Generatore di geometria
      • Linea
        • Linea di marcatura
          • marcatore
            • Marcatore semplice
          • Linea semplice

Per assicurarsi che i capi finiscano nel centro dell'etichetta, basta modificare i valori nell'allineamento definito dai dati delle etichette su "Centro" per orizzontale e "Metà" per verticale. Per modellare la linea in base alle tue esigenze, utilizza la semplice linea nidificata nella linea dell'indicatore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.