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‘:

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:
- ID [integer] e lo popolo, sempre usando il calcolatore di campi, con @row_number;
- GR [integer] e lo popolo con un valore costante, per esempio 1;
- 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:

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

l’espressione usata è:
line_locate_point( geometry (get_feature (‘virtual_layer’, ‘gr’, ‘1’)),$geometry)

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