【问题标题】:Mapbox Geocoder gives index error (internal server error)Mapbox Geocoder 给出索引错误(内部服务器错误)
【发布时间】:2018-10-31 09:30:18
【问题描述】:

我正在使用 mapbox 地理编码器从邮政编码中查找纬度和经度。问题是它有时工作得很好,有时根本不起作用。当它不起作用时,它返回 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 问题)

【问题讨论】:

    标签: python django mapbox geocoding


    【解决方案1】:

    好的,所以我已经找到了解决方案,它比我想象的要简单得多。有时邮政编码是不够的。因此,您必须传递到 geocoder.forward() 整个地址,而不是邮政编码,例如 'Szaserów Warszawa 04- 141` 那么它应该工作得很好。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多