Skip to main content

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?

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.


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.


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:

 


Reply