Punto di interpolazione su ogni linea dal vertice in QGIS

Aug 24 2020

Come posso interpolare un punto su ogni linea dal vertice? Devo interpolare ogni vertice lungo la linea per una certa distanza. Ho bisogno di offset su tutte le linee.

Gli strumenti QGIS standard si spostano in modo errato e la direzione viene persa. Penso che il problema possa essere risolto solo utilizzando il generatore di geometria, funzione line_interpolate_point().

Come posso generare l'interpolazione su tutte le linee?

Voglio ottenere queste linee con le frecce.

Risposte

1 Taras Aug 25 2020 at 18:13

Supponiamo che ci sia uno strato di polilinea "line", vedi l'immagine sotto.


Una soluzione che utilizza "Geometry Generator" senza line_interpolate_point().

Procedi con RMT > Symbology > Single Symbol > Line > Geometry Generator

Applicare le seguenti impostazioni per le frecce all'inizio delle righe

E queste impostazioni per le frecce alle estremità delle righe

Il risultato finale sarà simile a:

Nota: le frecce all'inizio o alla fine possono avere le stesse impostazioni di visualizzazione, ad esempio lo stesso colore. Nell'esempio sopra ho reso le frecce leggermente distinguibili.

Per mantenere la geometria originale delle linee è sufficiente duplicarle e metterle sotto le frecce o in alternativa aggiungere un 'Simple Line'livello nel Generatore di geometrie, vedere l'immagine sotto.

Per poter avere un offset nel punto iniziale o finale della linea, applicare le seguenti espressioni

difference(intersection($geometry, buffer(start_point($geometry), 2.5)), buffer(start_point($geometry), 0.5))
per un punto di partenza

o

difference(intersection($geometry, buffer(end_point($geometry), 2.5)), buffer(end_point($geometry), 0.5))
rispettivamente per un punto finale, vedere l'immagine sotto.


Una soluzione che utilizza "Geometry Generator" con line_interpolate_point().

Impostazioni per un punto di partenza
make_line(start_point($geometry), line_interpolate_point($geometry, 2))

Impostazioni per un punto finale
make_line(end_point($geometry), line_interpolate_point(reverse($geometry), 2))

E ottieni il risultato:

Se la riga deve avere un offset, applicare le seguenti espressioni: dove inizia la riga
make_line(line_interpolate_point($geometry, 1), line_interpolate_point($geometry, 2))

e rispettivamente

make_line(line_interpolate_point(reverse($geometry), 1), line_interpolate_point(reverse($geometry), 2))
dove finisce la linea.

L'output grafico apparirà come segue

In seguito sarai in grado di creare frecce su quelle linee.


Riferimenti:

  • Documenti QGIS> 14.2.2.12. Funzioni di geometria> line_interpolate_point