I'm using Network Analyst to build a road network for finding haulage routes. Unfortunately the data I'm using was not designed for routing, so I'm having to manipulate it a fair bit to get what I want. One issue I'm yet to resolve is how to deal with turns at junctions that shouldn't exist. In the screenshot below, the junctions in the green circle are actually an overpass/underpass scenario. I know I can delete the vertices to stop a junction forming, but this is proving difficult to automate because in some instances the vertices are the start/end of lines and then a break forms in the lines.
Instead, I'm sure there's a way to prevent a turn occurring at a junction but I can't for the life of me figure out how it all works.
Do I need to create a Turn Feature Class? If so, can I just populate it with segments (like below) and somehow set that as restricted in the Network Properties?
Is there another way? (I wanted to delete the junctions after they were created through a spatial selection but it's not editable).
Yes you do need to create a turn feature class. That is where the data lives that will restrict the turn.
This is step 18, 19 and 20 from the above link...
This might be helpful too
There is a Network Analyst Community here too that you could look into
Thanks for the links. By the looks of it, there's no way of mass creating this type of data - it must all be done manually (not what I was looking for unfortunately). I was looking for a way to solve many overpasses turning onto the underpasses instead of taking the on/off ramps.
I did manage to come up with a solution though. I did a once off pass of the data identifying the overpass or underpass I didn't want turns to happen on, buffered the segments 5 metres into a polygon feature class (yellow features below), and in my network building process, use those polygons to spatially select any segments (wholly within) and create one line data source, and then repeat it selecting everything else (wholly within inverted) to create a 2nd line data source. Both of these line feature classes are then used to build the network, but the one containing the no-turn features within the polygons are set to an Endpoint policy in Group Connectivity, whilst the rest of the data has an Any Vertex policy. Where the datasets meet, turns occur (valid intersections or connections), but when crossing an over/underpass, turns won't happen.
Glad you found a solution. It sounds similar to using an elevation field to separate segments. I haven't had a network with underpasses and overpasses yet, but they describe using elevation values in the same way, except you only need one feature class.
Elevation fields are used in the network dataset to refine the connectivity at line endpoints. They contain elevation information derived from fields on a feature class participating in the network. This is different from establishing connectivity based on z-coordinate values, in which the physical elevation information is stored on each vertex of the feature. Elevation fields apply to edge and junction sources. Edge feature sources using elevation fields have two fields to describe elevation (one for each end of the line feature)
Yeah. I did consider trying to use the elevation fields, but decided against it as it would have been too much work to attribute all the required features in a reliable manner (it's a state-wide dataset). Unfortunately it's not my data and our State doesn't have a routable network source available (the data was setup for asset management).