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

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

5 ответов


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

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

я настоятельно рекомендую использовать 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()

Google Data имеет API для карт есть REST-ful API - и у них тоже есть библиотека Python построен вокруг уже.


вот код, работающий для Google Maps API 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

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


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

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