I am using QGIS 3.10 version.
Image those two blue lines are points. How to measure the white line between those points?
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It only takes a minute to sign up.Sign up to join this community
You can use network tools from processing toolbox for this:
Here an example using "Shortest path (point to point)" (if you have only two points like in your example):
Just start the tool, choose your line layer as input, and shortest as path type to calculate, then click on your two points (you can enable snapping to get a more precise result, but will work without as well) and hit run:
You can then open the attribute table of this new layer and calculate the length, e.g. by using
length(transform($geometry,layer_property(@layer_name,'crs'),'EPSG:31468')) (replace EPSG:31468 with your EPSG-Code you wish to have your length in)
You can split the lines at points using the methods discussed here
Then create a field using the formula
$length to calculate the length of the lines (make sure your coordinate system is projected in metres or the value you want your measurement in).
This will add a length attribute to each line section that you can view in the attribute table
As far as I can see, there is still no genuine QGIS algorithm to split lines with points (but as mentioned by @jdavid05, you can use GRASS or SAGA tools). However, there is an algorithm for splitting lines with another line. You can use this, converting your points to (very small) lines that are then used to split the line.
Use this expression to create a new layer from the points (see here how to do it)- it basically "extends" the points to become a line:
extend( make_line( $geometry, project( $geometry, 1,0 )), 1, 0 )
Menu Processing / Toolbox / Split with lines - as input, select your original line, for
Split layer select the line layer created in step 1.
Now you can select the line (or lines) between the two points and measure it's lengt using field calculator:
length ($geometry) (planimetric measurement) or
$length (ellipsoidal measurement).
Screenshot: the black line is split at the points, the section between the points is selected. For this selection, the field calculator measures the length (
$length) - see preview of the result at the bottom:
Use QGIS expressions to directly calculate the length of the line segment between two points from another layer, without any geoprocessing.
Use this expression on the line layer, replace
point with the name of your point layer and the numbers (
2 in line 6 and
1 in line 15) are the
$id values of the two points:
line_locate_point( $geometry, geometry ( get_feature_by_id ( 'point', 2 ) ) ) - line_locate_point( $geometry, geometry ( get_feature_by_id ( 'point', 1 ) ) )
Measuring the length of the red curved line segment - the length value is created as a dynamic label with the expression from above as input. As you can see (comparing with the measurement tool that returns a similar value for a comparable length) the correct value is returned: