I'm currently using the Overpass API to do some queries that give me a particular Way of interest with highway=residential|unclassified|tertiary|secondary. Now I would like to find the nearest Way with highway=motorway|trunk|primary. I know I could do something like this:
and then process through the results, calculating the distance between each of the returned ways and my original road way and take the shortest one. If none are found I could requery for 10000 meters, etc. But that is not precise enough for my needs. The closest Way in straight overland distance is not necessarily the closest by roads. It may not even connect for dozens of miles due to terrain. Is there maybe a routing API that could handle this type of need? I'd prefer something that uses OSM data so I could feed it in the way ID for my starting road, but I could just as easily specify a coordinate. I wouldnt be able to specify a definite destination. As a bonus, I'd also like to be able to do the same thing for other types of map features as well, like nearest (by road distance, not as the crow flies) city/town, bus stop, gas station, etc to the smaller road. asked 03 Feb '17, 00:37 joshcoady |
I doubt that there is a off the shelf solution but it wouldn't be particularly difficult to do with any of the available routing engines (for example OSRM or graphhopper), you should however probably run your own instance if you are planing to do such queries in a larger way. answered 03 Feb '17, 10:25 SimonPoole ♦ Could you give me a push in the right direction? I looked (briefly) at OSRM, but it seemed like I needed to know the destination in order for it to route. Did I miss another way to query for a route? Yes, I'll be doing this on private instances.
(03 Feb '17, 17:34)
joshcoady
Yes, you need to know two points. One point is the road you are currently on and the other point the road you found via Overpass API. With OSRM you can check if the road is connected to your road and how long the distance/drive time will be. Needs still a lot of queries in the worst case, though.
(03 Feb '17, 19:07)
scai ♦
You're right. I think that should mostly be doable. I think I could do it with a max of 1-2 overpass queries to see if there are a couple highways in the immediate vicinity of the road (maybe 3km then 10km radius). If that results in 1-4 highways, route to each and find the nearest one. If results in zero or 5+ then I'm thinking I could just route to 4 points 200km N, S, E, and W of the road and one of those should eventually use a highway. So a max of 4 routing queries.
(04 Feb '17, 03:31)
joshcoady
|