我是使用地图和搜索算法的新手。目前我正在使用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)
output
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 是否也像 Google 一样提供旅程的持续时间?
- 如果我想像谷歌一样从“芝加哥”去“达拉斯”,我该如何获得路线?除了使用 API 之外,还有什么方法可以直接从 OSM 获取路由MapQuest https://www.mapquest.com/ etc ?
- 我们如何在模型中实现流量层?我需要一些好的资源,如果有任何 python 实现那就太好了。