Curb Approach not according to Side of Edge

08-12-2021 02:32 PM
New Contributor III


i am using a local network. For the VRP i followed the instructions of the video and downloads "Performing Transportation Network Analysis with Python" by Melinda and Max and built it in ArcGIS Pro 2.8.1 in jupyter notebook. so far it works. Only the curb approach seems to be ignored.

The «Orders» are placed on the centerlines. Some of them have to be approached on the right side, some on the left side of the road. This is marked in the input feature class in the attribute "SideOfEdge" according to the direction of the digitization. "CurbApproach" attribute is for both cases on the right side (right-hand traffic).

Two orders which are geometrically at the same place, but one is to be approached on the right and one the left of the road axis, will be picked up at the same time. Expected is that first the one on the right side is picked up, then (in this example) the one at the end where the vehicle is turning and only then the one on the left side. See the screen shot attached; black numbers indicate the sequence of the solver. However, the sequence should be like the red numbers.

I have tested "CurbApproach" on "No U-Turn", the result is the same.

How can I make sure that SideOfEdge is kept?

Your help and suggestions are greatly appreciated.

Tags (2)
0 Kudos
3 Replies
Esri Regular Contributor

My teammates and I have looked at your question, and we have a few ideas, but we're not completely sure what your workflow is.

SideOfEdge refers to the side according to the direction of digitization. When you "locate" a point on the network, SideOfEdge is one of the network location fields that is calculated and stored for the point. You said that your orders are exactly coincident with the centerline, so I presume you have used some type of procedure to explicitly set the SideOfEdge the way you want it. This documentation explains how points are located on the network.

CurbApproach refers to the side with which the vehicle approaches the location. It refers not to the side of the street but rather to the side of the vehicle. If the driver can only service the order to the right side of the vehicle (ie, they drive on the right side of the road and cannot cross the street), the order's CurbApproach should be set to Right side of vehicle. This documentation explains CurbApproach with helpful diagrams.

Based on your question, we think you have it set up this way, although we aren't sure. Assuming you have your data configured in this way, then the question is why the SideOfEdge setting is changing after you solve the analysis. Is that indeed what you're seeing?

The network location fields can be recalculated and updated at solve time. There are some complex rules about when that occurs, but here are some common reasons:

  • You added barriers after the location fields were initially calculated
  • You changed the travel mode after the location fields were initially calculated
  • You re-built the network dataset after the location fields were initially calculated

If you can tell us more about your workflow, we might be able to help you figure out what's going on.

New Contributor III

Thank you very much for your valuable advice Melinda.
I had created the order points using the "Generate Points Along Lines" tool, then assigned each point whether it was on the right or left side of the road (SideOfEdge). This worked well in the "Vehicle Routing Problem" service in Network Analyst.

Test-wise, I had added barriers and also adjusted and re-built the network dataset, but that was before testing with Python. When I ran the data in Python, the Side of Edge changed for some points.

I have also noticed that the solver reaches its limit with too many orders. Do you know where the limit of orders is? I have to mention that I used a local network, maybe that's the reason.

0 Kudos
Esri Regular Contributor

Is it possible for you to post your code, or at least the relevant part of it?

0 Kudos