I've created a multi-modal network data set with four main modes being Metro, BRT, Walking and Cycling.
I want to have travel time as and impedance with multiple modes. However, to get onto the metro takes more time than getting of the metro. That is why i made two transfer lines between the metro and the walk infrastructure. They are in digitized in opposite direction and both have a oneway restriction.
However, when solving a route from the metro infrastructure to somewhere else, it is impossible to get of the metro system. The analyst simply says there are no routes possible.
I have the feeling that i defined my oneway restrictions in the right way. However, when i removed the restriction from the network dataset attributes, it was possible to get of the metro infrastructure.
I added a picture in which the situation is explained. The metro transfer line has an arrow at the end to see in which direction it is digitized.
I hope one of you can help me out.
Hello Rogier. I am not sure what's wrong with your Oneway restriction in this case, but a Oneway restriction doesn't seem like the best way to model a difference in travel time between entering and exiting the metro.
When you set up your cost attribute's Evaluators, you have the option to calculate the travel time differently in the "From-To" direction and the "To-From" direction, which refers to the direction of digitization. So, you do NOT need two different line features. You just need one line feature, and you can determine the impedance differently depending on the direction of travel along that one line feature.
See my example below. In this example, I'm setting the impedance for Streets to a constant of 1 in the From-To direction and a constant of 2 in the To-From direction. You don't have to use a constant. You could use a Field or a Function evaluator or whatever. It works the same.
Thank you for your answer.
I remodeled the dataset, and got rid of the double infrastructure and applied your solution to take into account the difference between boarding and leaving the metro. Therefore, i also deleted the oneway restrictions.
However, a similar problem keeps occurring. Now, i am not able to go from the transfer line to the 'real' infrastructure. I still do not have any idea what causes this.
It is possible to travel along the transfer line (first screenshot). However, when the 'false metro station' is reached, it is not possible to travel further and i get an error (second screenshot). However, i am pretty sure that the infrastructure is connected, as shown in the third screenshot and my connectivity should also be correct (fourth screenshot).
I hope you or somebody else can help me.
This network looks very complicated.
Even if your connectivity policy is correct, the points of connection still need to have either a vertex or an endpoint. In your second screenshot, does the blue line have an endpoint or vertex where the pink line touches it?
In the original data there's no end point at the intersection with the blue line.
However, in the edges, it is divided at the point of intersection.
Furthermore, when i invert the stops 1 and two, traveling is in fact possible (See screenshot)
So does the fact that there is no end point in the original data affect this?
Furthermore, i would like to thank you a lot for your help.
How are you calculating the impedance on the blue lines? It sounds like it's only letting you travel on the blue line in one direction. Or, do you still have a oneway restriction, and is it restricting travel in a particular direction along the blue line?
My impedance is calculated with a 'minutes' field.
I do in fact have a one-way restriction on the blue line, because i do not want people to get from the metro network to the bicycle network, because you cannot take your bike in the metro.
However, underneath the blue(bike) line, is a red (walk) line to which no one-way restriction is applied. Also, there is a double 'false station' one for the bikes and one for the pedestrians.
So obviously, when getting from the metro network it is impossible to get on the bike transfer line, but the solver should be able to make the route go trough the pedestrian transfer, right?
Is either of your "false stations" restricted? Because even if the lines are unrestricted, if the junction between them in restricted, then it might not be possible to travel through the junction. Even if one junction is unrestricted, the restricted one still blocks the path.
Is there a reason you've chosen to duplicate your lines for the walking and biking modes? I think it would make a much cleaner network and less confusing network if you just used a single set of line features for both walking and biking. You can add some attribution to the line features, like a field called "BikesAllowed" and one called "PedestriansAllowed" or something like that, and then you can just create restrictions that control whether or not travel is allowed on those network edges.
My false stations are not restricted. At least i don't think so, in the added screenshot there is also nothing indicating a restriction.
I chose to duplicate it because i got the data from somebody else this way. I also have to say that where the different line features overlap at lets say 90 percent, there's also infrastructure that's bike-only or pedestrian-only.
Also, i am not very familiar with programming in Python, so i decided that if i could work around it, i should.
But let's say i would merge the two layers. How would i make sure that after the commuter has been on the metro, the network analyst will take into account only the pedestrian time of the infrastructure? And that it will not use the bike-only infra?
The problem with having overlapping lines is that a stop or facility or whatever will "snap" to the closest network edge. When they are directly on top of one another, it's sort of arbitrary which one it picks. I think maybe in the example above, it snapped to the bike line instead of the pedestrian line. The bike line has a oneway restriction, so it won't let you travel in that direction. You would have had to snap to the walk line instead in order for that route to work. You can control where your stops and facilities a little using the location settings tab on the NA layer, but that gets ugly quickly. It would be much neater to merge it all into one dataset and use restrictions. When you turn on, say, your biking restriction, and you turn on "Do not locate on restricted network elements", then the stops or facilities won't get located on network edges that don't allow bikes.
To answer your question about pedestrian time, you need to create two different cost attributes, one for walking and one for biking. You would set up the evaluators for each attribute to model the correct travel time based on walk speed or bike speed. So, pedestrians and cyclists use the same lines, but the travel time is calculated differently. When you run your analysis, you just choose the correct cost attribute (and restrictions) for the mode you're trying to model.