#python #geocode
#python #геокодирование
Вопрос:
итак, это так: мне нужно найти местоположение, где была сделана фотография. Мне удалось взять координату фотографии и сохранить ее в переменных широты и долготы, но когда я пытаюсь извлечь местоположение города из этих координат с помощью python, я получаю эту ошибку: мой код :
import reverse_geocoder as rg
from pygeocoder import Geocode
location = Geocoder.reverse_geocode(12.9716,77.5946)
print("City:",location.city)
ошибка :
Ошибка геокодирования: ошибка REQUEST_DENIED
Запрос: https://maps.google.com/maps/api/geocode/json ?latlng=12.971600,77.594600amp;sensor=falseamp;границы =amp;регион=amp;язык=
как мне ее устранить? если я получу код KPI Google Maps, куда мне его вставить?
спасибо tnx за помощь!
Комментарии:
1. Вы не установили ключ API. Пожалуйста, нажмите на размещенную вами ссылку и прочитайте ответ JSON. Он содержит ссылку, как действовать.
Ответ №1:
Вам необходимо передать свой ключ API.
Смотрите пример ниже
import googlemaps
gmaps = googlemaps.Client(key='Add Your Key here')
# Look up an address with reverse geocoding
reverse_geocode_result = gmaps.reverse_geocode((40.714224, -73.961452))
Комментарии:
1. Спасибо! Это немного странно. я использовал код, а затем получил другую ошибку, в которой говорилось, что у меня не установлена библиотека, поэтому я установил ее, и теперь я вернулся к той же ошибке..
Ответ №2:
Я думаю, вы смешиваете использование двух пакетов обратного геокодирования.
обратный геокодер
reverse_geocoder, который вы сначала импортируете, будет работать точно так же
In [1]: import reverse_geocoder as rg
In [2]: results = rg.search((12.9716,77.5946))
Loading formatted geocoded file...
In [3]: results
Out[3]:
[{'lat': '12.97194',
'lon': '77.59369',
'name': 'Bangalore',
'admin1': 'Karnataka',
'admin2': 'Bangalore Urban',
'cc': 'IN'}]
reverse_geocoder
Пакет хорош, поскольку он является автономным обратным геокодером, что означает, что он содержит все адреса, включенные в пакет, и ему не нужны никакие ключи API или доступ в Интернет.
pygeocoder
Геокодеру из pygeocoder потребуется ключ API для Карт Google. Инструкции см. В документации по ключу API Карт Google. Обратите внимание, что для Карт Google вам понадобится учетная запись для выставления счетов, и ее использование может стоить денег. Правильный синтаксис будет
location = Geocoder(api_key='INSERT API KEY HERE').reverse_geocode(12.9716,77.5946)
Документация для Geocoder
этого находится в справке IPython:
In [4]: Geocoder?
Init signature: Geocoder(api_key=None, client_id=None, private_key=None)
Docstring: A Python wrapper for Google Geocoding V3's API
Init docstring:
Create a new :class:`Geocoder` object using the given `client_id` and
`private_key`.
:param api_key: Google Maps Simple API key
:type api_key: string
:param client_id: Google Maps Premier client ID
:type client_id: string
:param private_key: Google Maps Premier API key
:type client_id: string
Google Maps API Premier users can provide his key to make 100,000
requests a day vs the standard 2,500 requests a day without a key
Комментарии:
1. да, это была проблема. Я попытался использовать reverse_geocoder, как вы объяснили, и это сработало. кроме того, я понял, что pygeocoder не работал, потому что у меня нет платежной учетной записи API, поэтому API не работал. последний вопрос: где я могу найти дополнительную информацию об этой библиотеке (reverse_geocoder) может ли она показать мне страну координаты или только город ?.
2.
cc
В выходных данных указан код страны ISO 3166-1 alpha-2 . Если вы хотите преобразовать его в полное название страны, взгляните на pycountry или этот файл iso3166-1.json .
Ответ №3:
также не сработало. я пытался :
location = Geocoder(api_key='myCode').reverse_geocode(12.9716,77.5946)
это вся ошибка, если это поможет вам помочь мне:
---------------------------------------------------------------------------
GeocoderError Traceback (most recent call last)
<ipython-input-85-083207d98109> in <module>
68 # print("City:",location.city)
69
---> 70 location = Geocoder(api_key='myCode').reverse_geocode(12.9716,77.5946)
71
D:paythonlibsite-packagespygeocoder.py in reverse_geocode(self, lat, lng, sensor, bounds, region, language)
161
162 if self is not None:
--> 163 return GeocoderResult(self.get_data(params=params))
164 else:
165 return GeocoderResult(Geocoder.get_data(params=params))
D:paythonlibsite-packagespygeocoder.py in get_data(self, params)
210
211 if response_json['status'] != GeocoderError.G_GEO_OK:
--> 212 raise GeocoderError(response_json['status'], response.url)
213 return response_json['results']
214
GeocoderError: Error REQUEST_DENIED
Query: https://maps.google.com/maps/api/geocode/json?latlng=12.971600,77.594600amp;sensor=falseamp;bounds=amp;region=amp;language=amp;key=AIzaSyB7FWHM4cZsUogGIb50R3uTK2ks97jh6vM