Ошибка геокодирования python: ошибка REQUEST_DENIED

#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