Skip to main content
Solved

NeighborFinder with a barrier?

  • September 19, 2019
  • 2 replies
  • 62 views

joshuadamron
Contributor
Forum|alt.badge.img+8

Howdy,

I have street light points that I need to match up with their nearest address based upon an address point file. However I need to make sure that the matching address is on the same side of the street.

 

1) Is there a way to have the neighbor finder tool recognize a street center line geometry as a barrier and exclude a potential neighbor if the candidate angle crosses over a street center line?

2) If that can't be done then I'd love suggestions on how to do this most efficiently.

 

Assuming the NeighborFinder can't evaluate a match based on a line barrier, the first process of achieving my goal that comes to mind for achieving this would be:

  1. run the NeighborFinder, then create a line between the street light point and the nearest neighbor address point (PointConnector),
  2. check to see if the new line crosses a street centerline (e.g. SpatialFilter),
  3. use the results to identify which light point to address point matches ought to be excluded/prevented;
  4. re-run the neighbor finder to exclude matching up those that exclusion list, however, as far as I know there's no way to force a match to be excludes in the Neighbor Finder. So this would lead to:
    1. Option A: would be a water fall approach similar to this question: https://knowledge.safe.com/questions/59605/neighborfinder-and-excluding-candidates-after-matc.html
    2. Option B: Set a max distance parameter then generate a list in the NeighborFinder and then process the list to kick out any hits that match my list of excluded matches then keep the next closest hit.

Am I missing anything? Is there a way to speed this up?

Thank you in advance for the assistance.

 

 

Best answer by erik_jan

You could use the LeftRightSpatialCalculator to assign an attribute to each address and streetlight (Left or Right from the Centerline).

Then you could use the Group By function on the NeighborFinder to group by Left or Right.

Hope this helps.

This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

2 replies

erik_jan
Contributor
Forum|alt.badge.img+22
  • Contributor
  • 2179 replies
  • Best Answer
  • September 19, 2019

You could use the LeftRightSpatialCalculator to assign an attribute to each address and streetlight (Left or Right from the Centerline).

Then you could use the Group By function on the NeighborFinder to group by Left or Right.

Hope this helps.


joshuadamron
Contributor
Forum|alt.badge.img+8
  • Author
  • Contributor
  • 33 replies
  • September 19, 2019

You could use the LeftRightSpatialCalculator to assign an attribute to each address and streetlight (Left or Right from the Centerline).

Then you could use the Group By function on the NeighborFinder to group by Left or Right.

Hope this helps.

I've never used the LeftRightSpatialCalculator before, it 100% did the trick!

Brilliant! Thanks for leading me to discover a new tool!