如何使用openstreet地图订购路点



我在文章中看到,OpenStreet地图提供了一个API,在给定一条具有起点和终点以及多个(无限?(路点的路线时,它会根据最佳路线对路点进行排序。我不知道是哪一个终点。有人能给我指一下文件中解释如何实现这一点的部分吗?有没有一个ruby gem来封装这个端点请求?

非常感谢

这是旅行推销员的问题。有不止一个基于OSM的路由器来解决这个问题。根据help.openstreetmap.org上的类似问题:

所有主要的OSM路由引擎都支持这一点:

  • Mapzen的瓦尔哈拉("Valhalla还包括时间+距离矩阵计算等工具,等时线、高程采样、地图匹配和游览优化(旅行推销员(。"(
  • MapboxOSRM("trip插件使用贪婪解决旅行推销员问题启发式。。。"(
  • Graphhopper使用JSPrit图书馆对于路线优化("TSP问题可以通过定义车辆路线问题。。。"(

这些服务都没有免费和无限制的在线服务(会很快被试图在自己的AWS上省钱的人滥用成本(。Mapzen提供了一个优惠,您可以注册一个免费的API密钥并使用那个OSRM不需要API密钥,您只需使用它。Graphhopper需要注册,虽然他们有免费试用,但我不认为他们有一个免费的层。

这三个都是开源的,您可以安装和使用它们,而无需本地限制。

对于GraphHopper,请查看路由优化API。有关OSRM,请参阅trip插件。

设置您自己的OpenStreetMap服务器-这样您就不会在每次应用程序需要运行地图查询时产生数据访问费用。具体来说,安装Valhalla地图服务器。这是一个免费的应用程序。最好在Linux上安装:

https://github.com/valhalla/valhalla

或者下载并在docker中运行docker镜像:

https://hub.docker.com/r/abihf/valhalla/

https://github.com/interline-io/valhalla-docker

服务器提供了一个专门用于订购航路点的API:https://valhalla.readthedocs.io/en/latest/api/optimized/api-reference/

最新更新