Isochrone Speed Assumptions & Distance Intervals


Would you be able to confirm the average speed assumptions embedded within the walking, cycling and vehicle isochrones when the time function is being used?

Also, for walking and cycling, I think it would be very useful to allow smaller intervals to be used within the distance isochrone function. I would suggest intervals of 100m for walking and 250m for cycling would be helpful as these would allow alternative assumptions for walking and cycling speeds in different locations to be easily replicated.

Many thanks

Hey Gavin,

the speeds should be the same as in routing, meaning they are dependent on your chosen profile (car, hgv, …) and some other internal factors. You can find those here:
Using the API you can specifiy lower boundaries and step sizes than on the client. I am currently unsure about the limit, though. The accuracy might also suffer if the intervals are defined too finely. We will set this up as an issue and take a look at it. Can’t promise anything, though!



I have a subsequent question on the calculation of the average speed. The description in the link says Waytype Speed, Surface and actual Speed Limits are used, if multiple values apply for this segment, the lowest value is used. Is this really the case? 100 km/h as waytype speed on Motorway and 60 / 65 on Secondary / Primary seems - for Germany - a bit low. When I look up the assumed traveling time for a motorway-segment in the routing funtion of OpenRouteService it also seems to have a higher average speed as 100 km/h.

Could you provide some more information on the combination of the different information regarding speed-limits for a segment? Thank you in advance.


Hey Markus,

it is a complicated process. I had a deeper look into things and as far as I can tell you at the moment, it is like this:
First, the waytype for a given road is retrieved and a speed according to the list youve seen is estimated. Afterwards, if there is a maxspeed:none tag (So the tags concerning legal regulations) on the road, the speed is set to 140 kmh. If there are other maxspeed tags provided, the speed is chosen according to this:
// on some German autobahns and a very few other places
if (“none”.equals(str))
return 140;

    if (str.endsWith(":rural") || str.endsWith(":trunk"))
        return 80;

    if (str.endsWith(":urban"))
        return 50;

    if (str.equals("walk") || str.endsWith(":living_street"))
        return 6;

After this consideration, the speed is multiplied with 0.9, because we dont assume youre always going at full max speed. There is also some consideration going into it concerning acceleration.
As far as I can tell, the speed is set to the values from the list if there is no maximum speed provided by tags.

Further, we apply a penalty for bad surfaces, which is probably seldom the case in Germany.
So the reason why you see a higher average speed is because the actual used speed is modulated by the maxspeed tag.


Hello Hendrick,
thank you for your reply, the information you provided is really helpful to me!