Mapbox Geocoder выдает ошибку индекса (внутренняя ошибка сервера) - PullRequest
0 голосов
/ 31 октября 2018

Я использую геокодер mapbox для поиска широты и долготы по zip-кодам. Проблема в том, что иногда она работает просто отлично, а иногда просто не работает. Когда она не работает, она возвращает index error out of bounds, но в мой терминал также показывает internal server error. Что можно сделать в этой ситуации?

Мой код ниже:

    def get_context_data(self, **kwargs):
        context = super(SingleCenterDetailView, self).get_context_data(**kwargs)
        zip_code = self.object.center.zip_code
        geocoder = Geocoder(access_token=mapbox_access_token)
        response = geocoder.forward(str(zip_code))
        response = response.geojson()['features'][0]
        resp = response.get('center')
        geo = [resp[0],resp[1]]
        context['geo'] = geo
        return context

И проблема в строке response = response.geojson()['features'][0], поскольку, когда она работает хорошо, когда я печатаю эту строку, она показывает dict, как это

{'text': '53-334', 'context': [{'text': 'Wrocław', 'wikidata': 'Q1799', 'id': 'place.8365052709251970'}, {'short_code': 'PL-DS', 'text': 'Dolnośląskie', 'wikidata': 'Q54150', 'id': 'region.25860'}, {'short_code': 'pl', 'text': 'Poland', 'wikidata': 'Q36', 'id': 'country.340'}], 'geometry': {'coordinates': [17.026519, 51.096412], 'type': 'Point'}, 'center': [17.026519, 51.096412], 'type': 'Feature', 'relevance': 1, 'bbox': [17.024936, 51.095263, 17.028411, 51.09752], 'place_name': '53-334, Wrocław, Dolnośląskie, Poland', 'place_type': ['postcode'], 'properties': {}, 'id': 'postcode.5334805015388220'}

когда он не работает, он ничего не печатает (вот это ошибка индекса)

Так что мой вопрос: можно ли что-нибудь сделать, чтобы решить эту проблему? Я имею в виду, если это иногда работает, а иногда нет, то это, вероятно, означает, что для некоторых почтовых индексов это не могу найти широту и долготу, но, может быть, есть какой-то обходной путь? Или, может быть, проблема гораздо более тривиальна, и я просто сделал что-то не так? (Я даже могу себе представить, что это какая-то проблема Django из-за этой внутренней ошибки сервера)

1 Ответ

0 голосов
/ 31 октября 2018

Хорошо, так что я нашел решение, и оно намного проще, чем я думал. Иногда почтового индекса недостаточно. Поэтому вместо почтового индекса вы должны перейти на geocoder.forward() весь адрес, например, 'Szaserów Warszawa 04- 141` тогда это должно работать довольно хорошо.

...