本文介绍了OSM获取从路径A到路径B的持续时间和方向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我不熟悉地图和搜索算法。目前我正在使用geopy
包获取与Nominatim
from geopy.geocoders import Nominatim
from geopy.distance import vincenty
nom = Nominatim()
chicago = nom.geocode("chicago")
dallas = nom.geocode("dallas")
chicago_gps = (chicago.latitude, chicago.longitude)
dallas_gps = (dallas.latitude, dallas.longitude)
distance = vincenty(chicago_gps, dallas_gps).km
print('Distance in kms: {}'.format(distance))
print(chicago.raw)
输出
Distance in kms: 1294.7623005649557
{'lat': '41.8755546', 'osm_id': '122604', 'boundingbox': ['41.643919', '42.0230219', '-87.940101', '-87.5239841'], 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright', 'lon': '-87.6244212', 'place_id': '178038280', 'class': 'place', 'icon': 'https://nominatim.openstreetmap.org/images/mapicons/poi_place_city.p.20.png', 'osm_type': 'relation', 'importance': 0.29566190262222, 'display_name': 'Chicago, Cook County, Illinois, United States of America', 'type': 'city'}
所以对于每个位置,我都可以计算出距离。现在问题不多了- 是航空公司的距离吗?此外,OSM是否像谷歌一样提供旅程持续时间?
- 如果我想像谷歌一样从芝加哥到达拉斯,我如何才能找到方向?除了使用MapQuest等接口,有没有办法直接从OSM获取路由?
- 如何在我们的模型中实现流量层?我在这方面需要一些很好的资源,如果有任何这方面的Python实现,那就太好了。
推荐答案
是,请参阅geopy documentation on distance calculation。Geopy目前不支持实际路由。如果您使用的是真正的路由器,则会发生这种情况。请看OSM-based online routers。其中几家公司,如GraphHopper和OSRM,提供逐个转弯的指令。请参阅我之前的回答。使用众多在线路由器之一的API。或者,运行您自己的路由实例。其中许多路由器都是开源的,可以在本地安装。
我帮不了你。我将从http://opentraffic.io/和https://github.com/graphhopper/open-traffic-collection开始。
这篇关于OSM获取从路径A到路径B的持续时间和方向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!