OSM получает продолжительность и направления от маршрута A до B в Python

Я новичок в работе с Картами и поисковыми алгоритмами. В настоящее время я использую пакет 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'}

Так что для каждого места я могу рассчитать расстояние. Теперь мало вопросов

  1. Это расстояние авиакомпании? Также OSM предоставляет продолжительность поездки, как это делает Google?
  2. Как я могу проложить маршрут, если я хочу перейти из «Чикаго» в «Даллас», как Google? Есть ли способ получить маршрут напрямую из OSM, помимо использования API MapQuest и т. д.?
  3. Как мы можем реализовать слои трафика в нашей модели? Мне нужны хорошие ресурсы для этого, и если есть какие-либо реализации Python, это было бы здорово.

person muazfaiz    schedule 18.01.2018    source источник


Ответы (1)


Это расстояние авиакомпании?

Да, см. документацию Geopy по расчету расстояния. На данный момент geopy не поддерживает реальную маршрутизацию.

Также OSM предоставляет продолжительность пути, как это делает Google?

Да, если вы используете настоящий маршрутизатор. Взгляните на онлайн-маршрутизаторы на основе OSM. Некоторые из них, такие как GraphHopper и OSRM, предоставляют пошаговые инструкции.

Как я могу проложить маршрут, если я хочу перейти из «Чикаго» в «Даллас», как Google? Есть ли способ получить маршрут напрямую из OSM, помимо использования API MapQuest и т. д.?

Смотрите мой предыдущий ответ. Используйте API одного из множества онлайн-маршрутизаторов. В качестве альтернативы запустите свой собственный экземпляр маршрутизации. Многие из этих маршрутизаторов имеют открытый исходный код и могут быть установлены локально.

Как мы можем реализовать слои трафика в нашей модели? Мне нужны хорошие ресурсы для этого, и если есть какие-либо реализации Python, это было бы здорово.

Не могу помочь вам с этим. Я бы начал с просмотра http://opentraffic.io/ и https://github.com/graphhopper/open-traffic-collection.

person scai    schedule 19.01.2018
comment
Спасибо или пошаговый ответ. - person muazfaiz; 21.01.2018
comment
Итак, под созданием экземпляра вы подразумеваете загрузку всех данных из OSM на мой собственный сервер, настройку сервера и дальнейшие действия? - person muazfaiz; 22.01.2018
comment
Да. Либо для всей планеты, либо для конкретной области/страны, которая вас интересует. - person scai; 22.01.2018