Query point and distance

This recipe shows how to find the point on a specified line nearest the input point and the distance between those points.

querypointdistance

Finding only the distance can be done using the geometry’s distanceTo() method.

distance = point.distanceTo(line)

If you need to find the distance and the closest point on the line, use the Generate Near Table tool. As shown in the previous recipe, geometry objects can be inputs to Geoprocessing tools.

# Find the closest point on a line. Also, return the location of that closest point.
near_result = arcpy.analysis.GenerateNearTable(
       point, 
       line, 
       r'in_memory\neartable', 
       '', 
       'LOCATION', 
       'NO_ANGLE', 
       'CLOSEST')

with arcpy.da.SearchCursor(near_result, ['NEAR_DIST', 'NEAR_X', 'NEAR_Y']) as rows:
    row = rows.next()
    distance = row[0]
    x = row[1]
    y = row[2]

Our previous recipe demonstrates how to split a line with a point. In this case, if you needed to split the line, you can either do two things:

1. Use the distance as search radius for the Split Line at Point tool:

 split_lines = arcpy.management.SplitLineAtPoint(
        in_line,
        in_point,
        arcpy.Geometry(),
        distance)

2. Construct a point geometry and use it as the input points for the Split Line At Point tool.

pnt_on_line = arcpy.PointGeometry(arcpy.Point(x, y), point.spatialReference)
split_lines = arcpy.management.SplitLineAtPoint(
       in_line,
       pnt_on_line,
       arcpy.Geometry())
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s