Мне нужно геокодировать адрес в пару широт и долготу для отображения на Картах Google, но мне нужно сделать эту серверную часть в Django. Я могу найти ссылку на Javascript V3 API. Как это сделать из Python?
Как получить координаты адреса из Python
Ответ 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()
Ответ 3
Google Data имеет API для Карт имеет REST-ful API - и у них также есть
Ответ 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