Solved

ShortestPathFinder - tracing through multilevel line crossing


Badge +1

Hello everyone,

please, I just wanna use ShortestPathFInder to find shortest path between 150 points. FME needs to get clean road (line) topology to get right path. But, Ive got road network, where are tunnels and bridges that crosses roads on surface.

Please, is there any way, how to compute path which uses bridges, tunnels and roads on surface together?

 

I have experience that FME can trace path only network at the same level, or am I wrong?

 

Thank You so much!

Lubo

icon

Best answer by gio 8 April 2020, 16:54

View original

13 replies

Userlevel 2
Badge +16

The ShortestPathFinder does not seem to have an option to ignore different levels.

But would it be an option to create 2D data, using the 2DForcer for this purpose?

I do think this would be a great addition to the transformer and I would vote for the idea if you post it on this Knowledge Board.

Hope this helps.

Badge +3

@lazarlubomir

 

Ok edit it.

I looked up the part of my workspace.

it uses only 1 topologybuilder. (contrary to my earlier statement)

Basicaly enter your network. Bridges and tunnels etc. must be identifiable.

There is a bit for "inline" bridges.

 

It makes a clean network excluding bridges etc.

Then creates a new network inculding bridges and the clean one using tpologybuilder with setting "assume network is clean"

 

It is a Dutch, i 'm too lazy to ranslte my words atm..

ntwrk2forum.fmw

 

Hope youll manage.

 

 

Greets,

Gio

 

Badge +3

the point with using elevation levels is that "one has to climb the ramp" sometime.

Tried that different ways.

 

Making a clean network without bridges and tunnels and then reacreateit including them was easiest solution i found.

Have not knowledge what the common solution might be. Must google it someday.

Userlevel 1
Badge +21

I'm unclear what you're asking for - you want the shortest path finder to take a path which involves jumping off a bridge onto the road below?

I spent a long time trying to cleanse a highways network which had z values but nodes inserted where roads crossed even if not on the same level...

Badge +2

@lazarlubomir If your network is 'clean' then you can use the TopologyBuilder with the Advanced Parameters > Generate From = End Nodes - as described here . This means your bridges / tunnels should not be noded where they cross roads. If you need to remove the nodes, then you can use the the ideas suggested by @gio above, or by @takashi in this post.

You only need to remove the vertex from one of the lines, so for bridges/tunnels, you could probably safely remove any interior vertex and only keep the end points.

Here's an example of an approach I used to clean an electric network: ArcGIS_GN_Remove Duplicate Nodes v00.fmw

Badge +3

I'm unclear what you're asking for - you want the shortest path finder to take a path which involves jumping off a bridge onto the road below?

I spent a long time trying to cleanse a highways network which had z values but nodes inserted where roads crossed even if not on the same level...

@ebygomm

he wants to prevent nodes where a bridge,tunnel, viaduct crosses a road.

Because then you would indeed possibly "jump of the bridge" .

I LOLed at that :)

 

thats what the bit i made does , as i was less inclined to send people to their doom...

Userlevel 1
Badge +21

@ebygomm

he wants to prevent nodes where a bridge,tunnel, viaduct crosses a road.

Because then you would indeed possibly "jump of the bridge" .

I LOLed at that :)

 

thats what the bit i made does , as i was less inclined to send people to their doom...

I did wonder :-) Topologically correct road networks become a bit of a nightmare when you start dealing with things like this, lots of bridge jumping!

Source: Top 40 most complex junctions

Badge +1

the point with using elevation levels is that "one has to climb the ramp" sometime.

Tried that different ways.

 

Making a clean network without bridges and tunnels and then reacreateit including them was easiest solution i found.

Have not knowledge what the common solution might be. Must google it someday.

@gio, Finally, Your supposed solution with creating topology twice - one time without tunnel/bridge and second time with tunnel/bridge is suitable for me. Before it, I had to detect line crossings by SpatialRelator and eery crossed line got an attribute CROSS=1, so I was able to split tunnel/bridge and ground parts of roads.

Badge +1

The ShortestPathFinder does not seem to have an option to ignore different levels.

But would it be an option to create 2D data, using the 2DForcer for this purpose?

I do think this would be a great addition to the transformer and I would vote for the idea if you post it on this Knowledge Board.

Hope this helps.

Hello @erik_jan, thank You! , My data arent in 3D, I have to detect if there are crossings between them or not. If Yes, it means, thet his road is tunnel/bridge. Finally, @gio supposed solution helped me.

Badge +1

I'm unclear what you're asking for - you want the shortest path finder to take a path which involves jumping off a bridge onto the road below?

I spent a long time trying to cleanse a highways network which had z values but nodes inserted where roads crossed even if not on the same level...

Hello @ebygomm thank You for Your time! Finally, @gio supposed solution helped me.

Badge +1

@lazarlubomir If your network is 'clean' then you can use the TopologyBuilder with the Advanced Parameters > Generate From = End Nodes - as described here . This means your bridges / tunnels should not be noded where they cross roads. If you need to remove the nodes, then you can use the the ideas suggested by @gio above, or by @takashi in this post.

You only need to remove the vertex from one of the lines, so for bridges/tunnels, you could probably safely remove any interior vertex and only keep the end points.

Here's an example of an approach I used to clean an electric network: ArcGIS_GN_Remove Duplicate Nodes v00.fmw

Hello @markatsafe, as You wrote, the End nodes parameter helped me, but before it, I had to detect crossings between lines by SpatialRelator. Then, I used supposed solution of @gio - create topology twice - once without tunnel/bridge in End nodes and Intersection regime and then in End nodes regime including tunnels/bridges. anaway, thank You so much for Your time!

Badge +2

Hello @markatsafe, as You wrote, the End nodes parameter helped me, but before it, I had to detect crossings between lines by SpatialRelator. Then, I used supposed solution of @gio - create topology twice - once without tunnel/bridge in End nodes and Intersection regime and then in End nodes regime including tunnels/bridges. anaway, thank You so much for Your time!

@lazarlubomir Thanks for letting us know this worked out. A team effort (sadly I don't think they award team badges on the Community!)

Badge +3

Hello @markatsafe, as You wrote, the End nodes parameter helped me, but before it, I had to detect crossings between lines by SpatialRelator. Then, I used supposed solution of @gio - create topology twice - once without tunnel/bridge in End nodes and Intersection regime and then in End nodes regime including tunnels/bridges. anaway, thank You so much for Your time!

@lazarlubomir

 

Pleased to help out. Glad to hear you managed it.

Greets.

Gio

Reply