In ArcGIS Pro (or ArcMap), using built-in Esri geoprocessing tools, how can I create connection lines between address points and the nearest part of a road segment with a matching street name (e.g. 'fishbones')?
There are two Esri tools that come close:
- Generate Origin-Destination Links (https://pro.arcgis.com/en/pro-app/latest/tool-reference/analysis/generate-origin-destination-links.htm). This tool allows user to condition the analysis on a matching field name (road name), but it matches the point geometry to the line centroid instead of the nearest part of the line segment.
- Near and Generate Near Table (https://pro.arcgis.com/en/pro-app/latest/tool-reference/analysis/near.htm and https://pro.arcgis.com/en/pro-app/latest/tool-reference/analysis/generate-near-table.htm). These tools allow a user to ultimately connect a point to the nearest portion of a line, but they do not allow the user to condition the analysis on matching attributes between the two input feature classes.
NOTE: I have already successfully generated fishbones using geocoded (interpolated) connection points on the road centerline network and I'm not interested in methods for this. I specifically want to see a connection between the address point and the nearest part of a line segment (with matching name).
Best Answer
@FelixIP commented a reasonable answer to this question so I'm expanding on it and posting it as the answer here:
Use the "Generate Near Table" tool to match to multiple nearby features. For matching address points to the road segments, 3 candidates would likely be sufficient, but 4 or 5 candidates would ensure the least amount of manual review.
This will result in an output table with many extra, duplicate, and mismatched near features.
Using the
[IN_FID]
and[NEAR_FID]
fields, join back to the input tables. For simplicity, it may be easiest to add fields to the near table (something like[IN_ATT]
and[NEAR_ATT]
to calculate the input and near attributes). Select and delete any rows where the desired attributes did not match.Analyze the remaining records for duplicate
IN_FID
; query/sort/select to keep only the nearest match, deleting the more distant duplicates.