QGIS: line_locate_point ()

Dal Gruppo Facebook GIS Italia:

Ho un csv con le coordinate di una traccia, vorrei creare un nuovo attributo dato dalla distanza dei punti dall’inizio (primo punto), in modo da avere come ultimo valore la distanza totale percorsa. C’è un modo per ottenerla senza dover modificare il file originale? in caso non ci fosse, come dovrei modificare il csv per poter ottenere il risultato? Grazie mille!!

Ogni nuovo rilascio di QGIS vengono aggiunte nuove funzioni geometriche, quella che utilizzeremo per risolvere il quesito è  ‘line_locate_point‘:

N8
funzione geometrica ‘line_locate_point’

se non erro è presente dalla versione 2.16 in poi.

Unico dato di partenza è un file CSV (con le coordinate dei punti), quindi importiamo in QGIS tramite ‘aggiungi layer testo delimitato’; come è noto un semplice file CSV non è editabile quindi occorre salvarlo come shapefile.

Ottenuto lo shapefile, che io chiamerò ‘vert’, aggiungo tre campi:

  1. ID [integer] e lo popolo, sempre usando il calcolatore di campi, con @row_number;
  2. GR [integer] e lo popolo con un valore costante, per esempio 1;
  3. distanze [real (15,2)] lo popoleremo più avanti;

Creo la linea che collega tutti i punti (è fondamentale che i punti seguano una corretta sequenza altrimenti occorre cambiar metodo) utilizzando un virtual layer:

N9
virtual layer

realizzata la linea, possiamo popolare il campo ‘distanze’ usando il calcolatore di campi nel layer puntuale ‘vert’:

N10
calcolatore di campi

l’espressione usata è:

line_locate_point( geometry (get_feature (‘virtual_layer’, ‘gr’, ‘1’)),$geometry)

N11
tabella attributi con distanze progressive

 


note finali: per la creazione della linea esistono vari plugin ( Points to Paths, ReconstructLine) ma io preferisco sempre usare SQL.


 

Buon lavoro

ConQGIStando!!!

Annunci

Rispondi

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

Logo WordPress.com

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

Foto Twitter

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

Foto di Facebook

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

Google+ photo

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

Connessione a %s...