Creating a Point at a specific distance between two Points

02-15-2017 09:17 AM
New Contributor

Hello, I am trying to create a new point shapefile and I am unsure how to create it. 

I want to create a new series of points that would be based on a specific distance between two points in an existing point data set. 

I have already created an attribute table with two target points that the new point should be in-between and a specified distance that the new point should be away from one of the points towards the direction of the other point.

For example,

New point A  should be between existing point 1 and point 2, 60m from point 1 towards point 2

New point B  should be between existing point 2 and point 3, 80m from point 2 towards point 3

New point C  should be between existing point 3 and point 4, 106m from point 3 towards point 4


I am sure there are tools that can do this in ARC, but I am unsure what to use or how to get started, any help would be much appreciated. 

6 Replies
MVP Legendary Contributor

do you know how to create a featureclass?

could you put the coordinates in a csv or excel spreadsheet? (the math I assume you know how to do)

any suggestions would seem to be too basic, so perhaps you can comment on what you have looked and/or ruled out

Unless I have completely misread this and you are looking for doing some of this in arcpy and the polyline, pointgeometry class etc

MVP Honored Contributor

Further to Dan's suggestion, I'd say the easiest solution is to use arcpy. Create a temporary polyline geometry in between the points, and use its positionAlongLine(value) method to make the new point.

Occasional Contributor III

It was wrote in other thread see that link : 

you can draw it in Arcmap from 2 distance intersect (DISTANCE-DISTANCE).

MVP Frequent Contributor

Another workflow:

1.  Add a new field to your data table called "Line ID".  Give each point pair the same LineID value.  Then use Points to Line with the Line Field (optional) setting set to LineID.  This will generate a new line feature class from your point pairs.

ArcGIS Help (10.2, 10.2.1, and 10.2.2) - Points To Line (Data Management) 

2.  Go into editing mode.  Select a line, then on the Editor toolbar click Editor, then Split, and manually enter the split distance.  Note - check the line Directionality so the split is occurring in the desired spot.   After the line is split, delete the segment not needed.

ArcGIS Help (10.2, 10.2.1, and 10.2.2) - Splitting lines at a specified distance or percentage

3.  Create a new point in Editing Mode by Snapping it to the line end of the newly-edited line file. 

EDIT:  Added step 3 to finish the process (didn't have enough caffeine at original time of writing, so left out the obvious )

Chris Donohue, GISP

MVP Frequent Contributor

If you have access to an Advanced license, Step 2 and 3 can be replaced with the following to eliminate most of the manual editing:

2.  Run Feature Vertice to Points with the Point Location (optional) set to Start to create a point layer of the line starting points from the lines generated in step 1.

ArcGIS Help (10.2, 10.2.1, and 10.2.2) - Feature Vertice to Points (Data Management)

3.  Add a field to the Points for Distance and populate it with the appropriate value (or Join it from your existing table).

4.  Buffer the Points, using the Distance Field as the criteria.  This will create a polygon layer around each start point.

5.  Intersect the Line layer (from step  1) and the Buffer polygon layer, with the Output Type (optional) set to Point.  This will create points on the line at the distance from the start.

6.  Run Split Line at Point on the Line layer using the Line layer as the input and the points from the Intersect.  This will result in a new line layer split at the points.

ArcGIS Help (10.2, 10.2.1, and 10.2.2) - Split Line at Point

7.  Manually delete the unneeded segments.  Or alternately, do Spatial Joins to append the information to each line, then do a query to find the ones not needed and delete them en masse.

8.  Run Feature Vertices to Points again on the lines, with the Point Location (optional) set to End.  The result will be your final points.

Caveats:  If there are many points close together and the distances for each are greater than the distance to nearby points, nearby lines will be split multiple times.  This will require careful review after splitting the lines to pick the correct segments to be deleted, and then editing to reconnect the lines back into one segment for each line (representing start point to desired distance).

Also, if this process can be automated with Modelbuilder or Python, if you are familiar with either.  This might be worth figuring out if you have many datapoints to do and/or will be repeating this same process often.  I bet there is probably a way to do this whole thing with more finesse with Python; but this will work otherwise.

Chris Donohue, GISP

0 Kudos
MVP Honored Contributor

Can you post a screenshot of your attribute table? It really matters how you've got it set up (e.g. is each individual point a separate feature linked to its pair by an ID, or are there from-to coordinates in a single feature?).

0 Kudos