我的目标是跑我城市里每条街的每一个街区。我一直在跟踪我绘制的自定义google地图的进度。这是繁重的日志和令人讨厌的尝试和错误的新路线
随着我对Python有了更多的了解,我意识到这是一个自动化的成熟任务。
环顾四周,我发现路线规划API有很多选择(谷歌和GraphHopper看起来很吸引人)。但我并不是只想从A->B获取并最小化距离。
我想要提升某些块(我还没有运行过的块)和其他块(我已经运行了数百次的块)的权重。这绝对是一个已经解决的问题(例如,“当前流量”被用来衡量路由优化),但我似乎找不到好的例子。
是否有任何现有的python库可以对地图进行加权并提供路由解决方案?
或者,我这么快就放弃了其中的一些API是错误的吗?
发布于 2017-01-26 14:43:17
我不认为这些API会有帮助,因为你需要一个使用自定义“成本函数”计算的路由。
为了简化,路由API,如graphhopper/google地图,使用一个成本函数,如成本=距离/速度。
相反,您需要一个成本函数,为“尚未运行”的街道提供较低的值。
您可以在本地安装graphhopper,并遵循下面的示例https://github.com/graphhopper/graphhopper/blob/0.8/docs/core/weighting.md
或者,您可以使用PostgreSQL + PostGIS + pgRouting,并根据您的历史记录计算自定义成本。您可以在这里找到与您的需求类似的内容http://pgrouting.org/docs/howto/oneway.html
我相信你可以用python连接到postgresql数据库,但是你需要做一些额外的工作来安装必要的软件和导入数据。
Graphhopper有一个内置的OSM导入器,你可以更容易地获得一个工作的实例(在我看来)。
https://stackoverflow.com/questions/40923369
复制