Question

How to segment a line from a particular point and continue segmentation as the line branches.


Hello,

 

I'm working with Ordnance Survey data, in particular their OS MasterMap Highways Network RoadLink and RoadNode datasets. This is a topologically correct link and node dataset. I'm looking for a way to segment the RoadLink polyline dataset at 25m intervals up to 100m starting from RoadNode points marked as roundabouts, as shown in the example image below.

Roundabout exampleMy intention is to merge all lines with the same road name and road number using the LineCombiner transformer and then use the Chopper transformer to segment the lines at the required intervals. However for this to work, I need to be able to orientate the direction of digitisation of the lines away from the roundabouts nodes, as the chopper will do it's chopping in the same direction as digitisation. I can then chop them starting from the roundabout point and up the line away from this point.

 

My main question is, is there a way to use a point that lies on the end of a line and identify if the line is digitised toward this point or away from it. Once I know this, I can orient the line correctly and chop the lines in the right direction.

 

After this, I will also need to continue segmentation as the road branches. Any suggestions on how to tackle this would be much appreciated. My current method involves merging the road segments with the same attributes, so I can segment these at the right intervals from the roundabout. This will not work for those roads with different names or numbers and join further up the road, but within 100m from the roundabout. Is there a way to segment consecutive line segments within a network like this within FME from a given starting point?

 

Any help with this would be much appreciated!

Sam


3 replies

Userlevel 4

Perhaps the TopologyBuilder can help, it will tell you the _from_node and _to_node in the direction of digitalisation.

Badge +2

@samaye​ @david_r​ is putting you on the right track or (excuse the pun) route with TopologyBuilder. But remember to include your roundabouts as input, along with your roads. Set an attribute on the roundabouts something like _exist? = yes to flag these as existing before they enter the TopologyBuilder. Then after TB, you can filter for these nodes and drop all the new ones added by TB. Also, in TopologyBuilder, under Advanced, make sure you set Generate From = End Nodes Only. This setting assumes your network is clean and will not split you lines at junctions - and undo the LineCombiners work. Now you should be able to use the _from/to_node attributes to join back to the roundabout, and Orienter reverse the line orientation if needed

@samaye​ @david_r​ is putting you on the right track or (excuse the pun) route with TopologyBuilder. But remember to include your roundabouts as input, along with your roads. Set an attribute on the roundabouts something like _exist? = yes to flag these as existing before they enter the TopologyBuilder. Then after TB, you can filter for these nodes and drop all the new ones added by TB. Also, in TopologyBuilder, under Advanced, make sure you set Generate From = End Nodes Only. This setting assumes your network is clean and will not split you lines at junctions - and undo the LineCombiners work. Now you should be able to use the _from/to_node attributes to join back to the roundabout, and Orienter reverse the line orientation if needed

Thanks both, this worked! I've been able to identify direction of digitisation to any one point, which is a massive help for my overall workflow.

Reply