Подтвердить что ты не робот

Как получить координаты адреса из Python

Мне нужно геокодировать адрес в пару широт и долготу для отображения на Картах Google, но мне нужно сделать эту серверную часть в Django. Я могу найти ссылку на Javascript V3 API. Как это сделать из Python?

4b9b3361

Ответ 1

Я бы предложил использовать Py-Googlemaps. Использовать это легко:

from googlemaps import GoogleMaps
gmaps = GoogleMaps(API_KEY)
lat, lng = gmaps.address_to_latlng(address)

ОБНОВЛЕНИЕ: При необходимости установить Py-Googlemaps через: sudo easy_install googlemaps.

Ответ 2

Я настоятельно рекомендую использовать geopy. Он вернет широту и долготу, после чего вы сможете использовать ее в клиенте Google JS.

>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim()
>>> location = geolocator.geocode("175 5th Avenue NYC")
>>> print(location.address)
Flatiron Building, 175, 5th Avenue, Flatiron, New York, NYC, New York, ...
>>> print((location.latitude, location.longitude))
(40.7410861, -73.9896297241625)

Кроме того, вы можете конкретно определить, что хотите использовать сервисы Google, используя класс GoogleV3 в качестве геолокатора

>>> from geopy.geocoders import GoogleV3
>>> geolocator = GoogleV3()

Ответ 4

Вот код, который работает для API Карт Google v3 (на основе этого ответа):

import urllib
import simplejson

googleGeocodeUrl = 'http://maps.googleapis.com/maps/api/geocode/json?'

def get_coordinates(query, from_sensor=False):
    query = query.encode('utf-8')
    params = {
        'address': query,
        'sensor': "true" if from_sensor else "false"
    }
    url = googleGeocodeUrl + urllib.urlencode(params)
    json_response = urllib.urlopen(url)
    response = simplejson.loads(json_response.read())
    if response['results']:
        location = response['results'][0]['geometry']['location']
        latitude, longitude = location['lat'], location['lng']
        print query, latitude, longitude
    else:
        latitude, longitude = None, None
        print query, "<no results>"
    return latitude, longitude

См. официальную документацию для полного списка параметров и дополнительной информации.

Ответ 5

Пакет Python googlemaps кажется очень способным делать геокодирование и обратное геокодирование.

Последняя версия пакета googlemaps доступна по адресу: https://pypi.python.org/pypi/googlemaps