简体   繁体   中英

How to use OpenStreetMap to get distance between two points

I am working on a vehicle-routing program that needs to accurately get the driving distance between different locations for a vehicle using .NET. I could have used the Google API to get the distances, but the company isn't willing to commit at least USD11,000 per year for subscription fee subject to usage volume.

I tried using the Haversine formula to get the distances, but the correction factor for the route is overwhelmingly high for it to even get close to calculating the total travel time correctly. I have spent quite some time researching OpenStreetMap, but the documentation does not have any specific examples to suit my requirements. I do not need the actual "tiles" to display the maps, only text-response with the distance would suffice.

I was hoping there would be some free to use service I could invoke within OpenStreetMap or others similar, or maybe someone could point me in the right direction to get started.

OpenStreetMap does not have their own routing algorithm.

On the OpenStreetMap wiki , there's a list of software libraries that perform routing. The Intermodal Transport Routing Information System is written in C#.

您可以查找CloudMade for API 以获取 OpenStreetMap 的旅行距离。

OpenStreetMap.org website is not yet able to measure distance between points. But you can still get the distances. To do so there are numerous websites and software that let you draw a track on top of OpenStreetMap based maps, then get the distance:

The CloudMade APIs should work fine for online work.

For offline routing, you could use PGRouting. This is an extension to PostgreSQL/PostGIS, but it can be loaded with an OSM file - or even a complete planet.osm file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM