# Finding distance of point along polyline using ArcGIS Desktop?

We need to find the distance of a series of point along a given polyline.

We have a polyline dataset repsenting rivers in a catchment, broken up into river reaches (FID 1 through 35 for example).

We also have a point dataset of abstraction licenses within this catchment, some of which are situated along rivers - we can tell from the attribute table which these are as they are defined as groundwater or surface water licenses.

The two are not related - i.e. one has not been derived from the other. Therefore not all the surface water licenses lie exactly over the river polylines, despite in 'reality' being on these rivers.

We need to be able to see which points are "upstream/downstream" of each other, and so wanted to have a list of which river reach the point is on, followed by the distance downstream from the start of this reach. We can then compare the downstream distances of two point to see which is upstream and which is downstream - the desired outcome!

To solve the problem of finding points on/very close to the rivers we were told to use a (small) buffer around each river reach and then to query the buffer to find the points within it.

This is fine but we are then left with an area (buffer), not a line, so we can't measure a distance along/within this.

Can we use a buffer as described to find out the points on/near the river reach in question and then, somehow (?!) query these points for distance along the river reach (polyline segment)?

• do you have a field on your polyline featureclass containing the downstream reach FID? – Kirk Kuykendall Feb 23 '11 at 22:33
• do you have to do this in arcmap or can you use arcobjects? – Steve Feb 23 '11 at 23:26
• RivEX can generate this type of output, look at the tools for snapping and linking. – Hornbydd Oct 23 '13 at 23:23

This is a perfect task for the linear referencing capabilities in ArcGIS. See the help for Locating Features Along Routes and probe from there. The tools include the ability to turn a layer of points near a route (the river reaches) into "point event" descriptors, which name the route (the reach) and the distance from the beginning of the route. That's exactly what you want. Moreover, these tools allow for a user-settable "tolerance": the points do not have to lie exactly on the routes.

The workflow is:

1. Make the river reaches "measurable." This sets up the ability to find distances along each reach.

2. Represent the points as a point layer.

3. Use the tool to create an "event table" for the points relative to the routes.

4. Check your work, because you may need to reverse the directions of some of the river reaches, depending on how consistently they were digitized.

• +1. They should also look at making the rivers into a geometric network to use tools that will get upstream /downstream features, paths etc. – geographika Feb 24 '11 at 12:17
• Ditto. ArcGIS can do all the heavy lifting of this interpolation problem en.wikipedia.org/wiki/Interpolation – Ragi Yaser Burhum Oct 18 '11 at 1:07
• It should be noted that you need to have the point dataset and your route dataset in the same coordinate system. The Locate Features Along Routes tool would not work properly for me until I had done a re-project of my line feature to the same coord system as my point file, and then I created a route event out of said re-projected line feature. – giski Oct 23 '13 at 21:05
• @Matiss Thank you for that reminder. Despite "on-the-fly" reprojection capabilities in today's GISes, it is still the case that the only reliable way to conduct your analyses is to make sure all the input datasets are physically stored in a common (and appropriate) coordinate system. – whuber Oct 23 '13 at 21:46
• @whuber you always help. – SIslam Aug 27 '15 at 6:25

I've never tried this but you might consider treating this as a reverse geocoding problem. You would do this by to creating an address locator for you rivers, treating the measure as the From and To address.

• I don't think this will give the distance downstream/upstream along the reach. – Kirk Kuykendall Feb 23 '11 at 22:27

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/QueryPointAndDistance_Method/002m00000116000000/

The attribute DistanceAlongCurve will give you what you search. But only for one of the river.

http://resources.arcgis.com/en/help/main/10.1/index.html#//004800000006000000

This tool takes in network ( You have to have Network Analyst) and points. After applying tool you end up having t value (value between 0 and 1 ) as PosAlong. Values are stored in input point table. Since 0 is start point of the polyline and 1 is end point you need to multiply it with polyline length. You also have SourceOID which is polyline id in same table.