Solved

Dangle Nodes

  • 10 January 2014
  • 13 replies
  • 59 views

Badge +1
Which transformer can we use for finding Dangled Nodes from a Road Network ? (:
icon

Best answer by parashari 29 January 2014, 08:15

View original

13 replies

Userlevel 2
Badge +17
Hi again :)  I think the SpikeRemover can be used.
Userlevel 4
Hi,

 

 

if by "dangled nodes" you mean topology nodes that aren't correctly digitized, I'd try to isolate them with a NeighborFinder and a suitable tolerance.

 

 

The nodes could be the BASE features and the network lines could be the CANDIDATE. You could look for candidates withing the tolerance distance that aren't connected to the base node in question.

 

 

If your nodes and lines aren't properly referenced, send your data through a TopologyBuilder first.

 

 

David
Badge +1
Hello Takashi,

 

 

Once again for yout help. !!

 

For TopologyBuilder I provided the inputs (both the Line feature & the Point feature), but that is not extracting the dangled nodes. The output is the same. ):
Userlevel 2
Badge +17
Ah, "dangled node" means isolated point which does not touch with any network node? If so, I agree with David. I would create network nodes based on the network lines (roads) with a TopologyBuilder, and then use a NeighborFinder to find "dangled nodes" as NOT close points to any network node within certain tolerance.
Badge +3

U can compare all end and startpoints (in network to and from points):

  • -Connect line-ouptut from topology builder  to 2 parallel featuremergers  (connect to requestor and suplier):
  • -One merger has to_node asrequestor  and from_node as suplier  and the   other featuremerger visa versa.
  • Set merger to proces duplicates, enter listname.

Not merged outputs from both the mergers should yield all dangles.

  •  
  • U cant set a tolerance here, so all not connected lines in the topology will be revealed.
  •  
  • If u need tolerance, you better extract start and end coordinates and go trough a spatial relator process as David said. (or via listbuilding and matching proces )

 

I think there are at least 4 ways to do this using transformers.

 

 

 

Badge +1
Hi,

 

Thank you for the suggestions !!

 

     Actually, I have a road network which consists of some dead ends. Those road have to be extracted. The problem is that all the intersected points on the road n/w are being selected along with dangled nodes and I only need to find the dangles.

 

     I have done this work in ArcGIS (Model Builer), but it is creatinf a little problem in FME.
Userlevel 2
Badge +17
If you send the network lines to a TopologyBuilder, nodes coming from NODE port will have a structured list attribute called "_node_angle{}". It contains the information on connected network line(s). I think you can determine whether the node is "dead end" or not by checking the number of its elements (use ListElementCounter and Tester). That is, if the number of elements of the list is equal to 1, the node is a dead end. 
Badge +1
Hi,

 

 

Thanks Takashi, David and Gio once again. I have, with your help, find out the dangled lines' nodes. Attaching the model.  (:
Badge +1

Hi,

 

 

Thanks Takashi, David and Gio once again. I have, with your help, find out the dangled lines' nodes. Attaching the model. (:

 

Badge +1
All these answers are beating about the bush! The simple answer is to calculate the Node Valence.

 

 

All dangles will have a valence of 1.

 

PseudoNodes have a valence of 2,

 

Tees have a valence of 3,

 

Junctions have a valence of 4 or more.

 

More that 4 is usually an error with collapsed lines or too large a tolerance when building the network.

 

 

To get the NodeValence you first have to have a clean network with all lines/arcs/edges broken at the junctions/nodes/intersections. Then number each segment uniquely with a counter. Then run Intersector (again) with a ListName eg reach on the output Nodes (which are really only points but fortunately only one per junction not per segment), you can add another counter to give the nodes a unique id. Then use ListElementCounter to get the Valence.

 

 

Enhancement Request - Add the Valence to the Nodes in Intersector, and add the Node ID as a From-node and To-node to the segments.
Badge +1
Hi Kimo,

 

 

I have not worked on Nodealance. Can you help me with an illustrative workbench or an example.

 

Thanks :)
Userlevel 4
Badge +13
All these answers are beating about the bush! The simple answer is to calculate the Node Valence.

 

 

All dangles will have a valence of 1.

 

PseudoNodes have a valence of 2,

 

Tees have a valence of 3,

 

Junctions have a valence of 4 or more.

 

More that 4 is usually an error with collapsed lines or too large a tolerance when building the network.

 

 

To get the NodeValence you first have to have a clean network with all lines/arcs/edges broken at the junctions/nodes/intersections. Then number each segment uniquely with a counter. Then run Intersector (again) with a ListName eg reach on the output Nodes (which are really only points but fortunately only one per junction not per segment), you can add another counter to give the nodes a unique id. Then use ListElementCounter to get the Valence.

 

 

Enhancement Request - Add the Valence to the Nodes in Intersector, and add the Node ID as a From-node and To-node to the segments.
Hi Kimo,

 

 

I have not worked on Nodealance. Can you help me with an illustrative workbench or an example.

 

Thanks :)

Hi

use the TopologyBuilder and activate the Option "Generate List from Input Edges"

topologybuilderthis will create a list on all nodes of the touching edges. Dangle nodes will only have 1 list entry.

Reply