Skip to main content
Solved

Split line with points but not at intersections

  • February 21, 2017
  • 3 replies
  • 41 views

jon
Contributor
Forum|alt.badge.img+5
  • Contributor

My goal is to split lines when there is a point within a tolerance (i.e. 20ft) but NOT at intersections (they are already split at intersections. I've been using the PointOnLineOverlayer which works great everywhere except at intersections since the points are close to the intersection but not at them. Here's an image to try and explain the situation:

Any thoughts on how I can ignore the points near the intersections when splitting?

Best answer by takashi

Hi @jon, I would try this procedure.

  1. Send all lines to a TopologyBuilder, make sure that the Assume Clean Data parameter is set to No. Then the intersections will be output via the [Node] port, and the lines split at the intersections will be output via the [Edge] port.
  2. Add a NeighborFinder to the workspace, send the points to the Base port, send the intersections (nodes coming from the TopologyBuilder [Node]) to the Candidate port, clear the Number of Neighbors to Find parameter, and set the tolerance to the Maximum Distance parameter. Then, the [UnmatchedBase] port will output the Base points except ones close to any Candidate (intersection) within the specified distance.
  3. Add a PointOnLineOverlayer to split the lines coming from the TopologyBuilder [Edge] by the points coming from the NeighborFinder [UnmatchedBase].

Hope this helps.

View original
Did this help you find an answer to your question?

3 replies

erik_jan
Contributor
Forum|alt.badge.img+18
  • Contributor
  • February 21, 2017

Could you use a NeighborFinder to count the points that are within a distance of more than one line (e.g. the red arrow points). Then do a Tester to count the matches and ignore all with more than one match.

Use only points with one match in the PointonLineOverlayer as before.

Hoe this helps.


takashi
Influencer
  • Best Answer
  • February 21, 2017

Hi @jon, I would try this procedure.

  1. Send all lines to a TopologyBuilder, make sure that the Assume Clean Data parameter is set to No. Then the intersections will be output via the [Node] port, and the lines split at the intersections will be output via the [Edge] port.
  2. Add a NeighborFinder to the workspace, send the points to the Base port, send the intersections (nodes coming from the TopologyBuilder [Node]) to the Candidate port, clear the Number of Neighbors to Find parameter, and set the tolerance to the Maximum Distance parameter. Then, the [UnmatchedBase] port will output the Base points except ones close to any Candidate (intersection) within the specified distance.
  3. Add a PointOnLineOverlayer to split the lines coming from the TopologyBuilder [Edge] by the points coming from the NeighborFinder [UnmatchedBase].

Hope this helps.


jon
Contributor
Forum|alt.badge.img+5
  • Author
  • Contributor
  • February 24, 2017
takashi wrote:

Hi @jon, I would try this procedure.

  1. Send all lines to a TopologyBuilder, make sure that the Assume Clean Data parameter is set to No. Then the intersections will be output via the [Node] port, and the lines split at the intersections will be output via the [Edge] port.
  2. Add a NeighborFinder to the workspace, send the points to the Base port, send the intersections (nodes coming from the TopologyBuilder [Node]) to the Candidate port, clear the Number of Neighbors to Find parameter, and set the tolerance to the Maximum Distance parameter. Then, the [UnmatchedBase] port will output the Base points except ones close to any Candidate (intersection) within the specified distance.
  3. Add a PointOnLineOverlayer to split the lines coming from the TopologyBuilder [Edge] by the points coming from the NeighborFinder [UnmatchedBase].

Hope this helps.

Thanks @takashi! I ended up using your approach. One thing to note, on step 2, I had to set the "Close Candidate List Name" to something otherwise there was a warning saying "Number of Neighbors to Find" was forced to use 1. I also set the Group By on my TopologyBuilder since some lines were getting split when they intersected each other (for my purposes I didn't want that to happen).

 

 

Thanks for your help! Here's what my work benched ended up looking like:

 


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings