You can use a virtual layer and join each point to a line (I use within 5 m distance below) and measure the distance along the line. `ST_Line_Locate_Point`: > return a number (between 0.0 and 1.0) representing the location of the > closest point on LineString to the given Point, as a fraction of total > 2d line length so I multiply with the line length. Replace "waypoint" with the name of your point layer and "path" with the name of your line layer. And add more fields from the point layer if you want to. Like `select pnt.id, pnt.someotherfield, ...` <!-- language: sql --> select pnt.id, pnt.geometry, round(ST_Line_Locate_Point(line.geometry, pnt.geometry)*st_length(line.geometry),1) as distalongline from "waypoint" pnt left join "path" line on PtDistWithin(pnt.geometry, line.geometry, 5) order by ST_Line_Locate_Point(line.geometry, pnt.geometry) [![enter image description here][1]][1] [1]: https://i.sstatic.net/w0C9A.png