Punto di interpolazione su ogni linea dal vertice in QGIS
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
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 partenzamake_line(start_point($geometry), line_interpolate_point($geometry, 2))
Impostazioni per un punto finalemake_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