Network analysis using OSM roads data

01-13-2022 04:54 PM
Labels (1)
New Contributor

Hi! I am creating service areas to figure out how far someone could walk within 2km of schools. I'm using the OSM roads data with the motorways and motorway links removed. The issue I'm having is that when I create my network dataset, junctions are automatically generated at all points where two lines cross. So, for example, at a pedestrian overpass, the network allows for going to the road crossing below. Because we don't want to assume that people will be able to jump off bridges or tunnel up through the ground, this is an issue.

I'm using the tool "Integrate" to tell ArcGIS that lines in the same place are connected. The OSM roads data does have a Field called "layer" which gives the elevation of the road in integer format relative to "0" (e.g. -1, 0, 1, 2, etc.). I'm assuming that my error is somewhere when I'm creating the junctions or when I'm using "Integrate." I know that there is "Vertical Connectivity" within the network dataset properties, but it seems like that wouldn't allow for connecting any roads of different elevations, even if they do connect with the network at their endpoint. Is there somewhere I can set a tolerance so that the "endpoints" of two polylines with different elevations will connect, but that anywhere else along the polyline where it intersects with another line of a different elevation it will not connect? I'm not very familiar with creating a topology, so the answer might be somewhere in there. 

I'm pasting some screenshots below that might help to understand. The fields "elevation" and "frequency" were added by me. "Elevation" is the same as the "layer" field except that the data type is Long instead of Double. The third image shows where I've tested my network to see if it will jump from one to the other. 

Thanks for whatever advice you can provide!

3 Replies
MVP Honored Contributor

It's been a while since I worked with Network Analyst, but can you supply your own nodes for the junctions, rather than use the auto-generated ones?

The way highways are mapped in OSM, nodes should only be present when highway features truly intersect, such as at a junction. If you are obtaining the OSM data yourself, you should be able to pull the node features the lines are comprised. If you can use those as your junctions, you'd be all set.

Are you finding that using Integrate is actually necessary? Highways in OSM are mapped in a topologically integrated way already, and most editing applications mappers use will flag any errors prior to uploading.

- Josh Carlson
Kendall County GIS
0 Kudos
Esri Regular Contributor

Generally speaking, if you use OSM data, you should set Any Vertex connectivity and build the network. You do not Integrate as that WILL create end points/vertices where streets cross.

Also you do not need to remove the motor ways and links. Just have a restriction that turns them off in the network dataset for pedestrian routing.

Jay Sandhu

0 Kudos
New Contributor

Thanks for the thoughtful replies. Without integrate or a topology, it did not recognise that each line connected to other lines, so the service area did not work. That may have been due to how I exported the OSM data using Geofabrik. There may have been a better way to export this to preserve the topology. 

I just figured out the best way for me to solve this was to split up the OSM roads into 2 layers - roads (with layer =0) and bridges/tunnels (with layer not equal to 0). Then I could choose "any vertex" connectivity for the roads and "endpoint" connectivity for the bridges/tunnels in the network dataset properties. 

0 Kudos