如何使用OpenStreetMap获取两点之间的距离?

时间:2010-12-20 06:46:46

标签: c# routing openstreetmap

我正在开发一种车辆路线选择程序,需要使用.Net准确地获取车辆不同位置之间的行驶距离。我本来可以使用谷歌API来获取距离,但公司不愿意每年承诺至少11000美元的订阅费用(视使用量而定)。

我尝试使用Haversine公式来获取距离,但是路线的修正系数非常高,甚至无法正确计算总行程时间。我花了很多时间研究OpenStreetMaps,但文档没有任何具体的例子来满足我的要求。我不需要实际的“瓷砖”来显示地图,只有文字响应与距离就足够了。

我希望有一些可以免费使用的服务,我可以在OpenStreetMap或类似的其他地方调用,或者也许有人可以指出我正确的方向开始。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

OpenStreetMap没有自己的路由算法。

OpenStreetMap wiki上,有一个执行路由的软件库列表。 Intermodal Transport Routing Information System是用C#编写的。

答案 1 :(得分:2)

如果有人仍然感兴趣,您可以查找cloudmade for API以获取OpenStreetMap的行程距离。

答案 2 :(得分:1)

OpenStreetMap.org网站尚无法测量各点之间的距离。但你仍然可以获得距离。为此,有许多网站和软件可以让您在基于OpenStreetMap的地图上绘制轨迹,然后获取距离:

答案 3 :(得分:0)

CloudMade API适用于在线工作。对于离线路由,您可以使用PGRouting。这是PostGres / PostGIS的扩展,但可以加载OSM文件 - 甚至是一个完整的planet.osm文件。