Как получить координаты маршрута между двумя городами в Python

Представим, что нам нужно получить координаты маршрута между Винницей и Одессой. Для этого воспользуемся Google Directions API и модулем googlemaps.

Установка

pip install -U googlemaps

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

Запрос к Directions API для получения маршрута.

import googlemaps
from datetime import datetime

now = datetime.now()
gmaps = googlemaps.Client(key='API_KEY')
result = gmaps.directions("Vinnytsia, Ukraine", "Odessa, Ukraine", mode="transit", departure_time=now)
raw = result[0]['overview_polyline']['points']

Но вот незадача, координы хранятся не в виде широты и долготы, а в виде следующей последовательности }wjiGtd. Нам поможет модуль polyline.

Установка

pip install -U polyline

Использование

import polyline
points = polyline.decode(raw)

В points список кортежей с координатами, который можем передать в Google Maps Static.

coordinates = "|".join(["{0},{1}".format(p[0], p[1]) for p in points])
url = "http://maps.googleapis.com/maps/api/staticmap?size=800x800&path={0}".format(coordinates)
python_direction_api.png

blog comments powered by Disqus