Have you ever tried to get a route between several points in ArcMap and received the message "Warning: Location X in 'Stops' is on a non-traversable network element position"? You do a little research and find out you need to enable the setting "Exclude restricted portions of the network". Even after turning that setting on, you still get the error. What's going on?
If you try the same route in ArcGIS Pro, there’s no error message. And you can't find the “Exclude restricted portions of the network” setting anyway.
What's going on? What is the problem here? And what is the difference between ArcMap and ArcGIS Pro?
The problem that's preventing the stop from being on the route is with the network location.
What is the network location? Per Esri Help documentation, “a network location is a type of network analysis object that is tied to the network; furthermore, its position on the network is input for the analysis." (Network Locations, http://bit.ly/2gfVM6m). In plain terms, it's where ArcGIS Network Analyst routes to.
When ArcGIS Network Analyst solves a route, Network Analyst doesn't route to the XY location of the point. Instead, the extension will snap the point to the nearest street and calculate some location values on that street. That location is the network location.
The network location can be seen in four fields*: SourceID, SourceOID, PosAlong, and SideofEdge.
SourceID: This will be the name of the source feature class that the network location is on.
SourceOID: The OID of the source feature that the network location is on in the source feature class.
PosAlong: The position along the digitized direction of the source line feature**. The number is expressed as a ratio, between 0 and 1. For example, a PosAlong value of 0.557 indicates that the location is 55.7% down the line.
SideOfEdge: The side of the line that the original XY location is on with reference to the digitized direction of the line.
The message "Warning: Location X in 'Stops' is on a non-traversable network element position" indicates that the network location for that point is on a street that is considered prohibited or non-traversable. Some examples of a location that is on a prohibited street include, but are not limited to:
The analysis has been set so that it simulates driving a car, and the network location is on a pedestrian-only street.
The stop is on the right side of a one-way street which is prohibited in the "along" direction***.
The network location is on an unpaved road, and unpaved roads are prohibited in the analysis.
You can use the Network Identify tool on an edge in the network dataset to see which network attribute restrictions (like one-way or unpaved roads) would cause the edge to be traversable or prohibited.
So, the network location is on a prohibited network edge. What do you do about that? Let's continue by looking at the "Exclude restricted portions of the network" setting, since that's the setting we use to fix the error.
The "Exclude restricted portions of the network" setting causes network analysis objects to locate only on elements that don't have active prohibit-restrictions, which are restrictions that are checked in the Analysis Settings tab. With this on, then a network location will not be placed on any edge considered prohibited at the time.
How does it work? If the "Exclude restricted portion of the network" setting is on when ArcGIS Network Analyst is calculating the network locations, ArcGIS Network Analyst will skip any street considered prohibited and find the closest street which is traversable.
Let's go back to the example of the analysis being set up to simulate driving a car, and the point is closest to a street marked as pedestrian-only. Getting more specific, let's say I work for a pizza delivery service. A customer called and ordered a pizza. They live in a college dorm, which is located on a pedestrian walkway. If I have the "Exclude restricted portions of the network" setting enabled when I load the point for that location, I'll get a route. And I'll see that it's not taking me to that pedestrian walkway; it's taking me to a point on the main road through the campus. From there, I'll park on the side of the road, get out and walk to the dorm to deliver the pizza. Then go back to my car and continue the route.
This setting is where we see one of the biggest differences in network locations between ArcMap and ArcGIS Pro. Let's start with ArcMap.
In ArcMap, all network location settings are accessed through the Network Locations tab of the network analysis Layer Properties****.
The order of changing settings related to network location matters because network location settings in ArcMap are not retroactive—they don’t go back and change any network locations already calculated. So, if you change a network location setting after loading your locations, you'll need to recalculate the network locations.
By default, ArcGIS Network Analyst in ArcMap does not use the "Exclude restricted portions of the network” setting, so you will need to turn it on. Either turn it on before loading the locations or after—if after, be sure to recalculate the network locations before solving.
In the situation described in the beginning of this blog, the "Exclude restricted portions of the network" was turned on, but the network locations were not recalculated. Here are some example steps to follow to ensure stops are included in the route:
Load the locations into the analysis layer.
Turn on "Exclude restricted portions of the network".
Make any remaining changes to the analysis settings, including which restrictions are turned on or off.
Recalculate the network locations *****.
ArcGIS Pro has more advanced network location settings. All settings are found in the Add Locations geoprocessing tool, which loads the points into the network analysis layer and calculates the network locations. So, it makes sense that the network location settings are found in the Add Locations geoprocessing tool.
But wait, where is the "Exclude restricted portions of the network"? It's not gone; it's still there. In fact, ArcGIS Pro turns it on by default, so it's always in effect. Also, ArcGIS Pro automatically recalculates network locations for locations affected by setting changes automatically before the solve. So, you do not need to manually recalculate locations in ArcGIS Pro; it does it for you.
These are some of the most used settings to keep in mind when working with ArcGIS Network Analyst, but there are many more. I encourage you to check out the settings and see how they can improve your network analysis.
* For points. Network locations for lines and polygons (for barriers, route zones, etc.) are stored in a single blob field and cannot be easily read.
** One of the easiest ways to see the digitized direction of a line is to add an arrow at the end of the line symbology. In ArcMap and ArcGIS Pro, there is a default symbology called “Arrow at End” that can be used.
*** “Along” indicates travelling with the digitized direction. “Against” indicates travelling against the digitized direction.
**** Common ways to access the network analysis Layer Properties are either double-clicking the analysis layer name in the Table of Contents or by clicking the Layer Properties box in the top-right corner of the Network Analysis window.
***** To recalculate the network locations, right-click the sublayer in the Network Analysis window, and choose Recalculate Location Fields.