Google maps 如何使用某些web服务检查地质点是否属于某个城市?

Google maps 如何使用某些web服务检查地质点是否属于某个城市?,google-maps,reverse-geocoding,Google Maps,Reverse Geocoding,鉴于: 城市 地质点 问题:确定给定的地质点是否属于城市 我目前的解决方案很简单: 执行反向地理编码(我正在使用python包)。这将生成结果字典 检查结果['Placemark'][0]['AddressDetails']查找LocationName关键字 如果找到的LocationName等于城市名称,则将给定的地质点视为城市内部 到目前为止还不错。即使它不是最好的算法,它肯定是最简单的。然而,也存在一些问题。例如: 英国阿伯丁 lat=57.14369,lng=2.22314 谷歌

鉴于:

  • 城市
  • 地质点
问题:确定给定的地质点是否属于城市

我目前的解决方案很简单:

  • 执行反向地理编码(我正在使用python包)。这将生成结果字典
  • 检查结果['Placemark'][0]['AddressDetails']查找LocationName关键字
  • 如果找到的LocationName等于城市名称,则将给定的地质点视为城市内部
  • 到目前为止还不错。即使它不是最好的算法,它肯定是最简单的。然而,也存在一些问题。例如:

    • 英国阿伯丁
    • lat=57.14369,lng=2.22314
    谷歌地图反向地理编码(57.14369,-2.22314)产生以下结果:

    { u'Placemark': [ { u'AddressDetails': { u'Accuracy': 6,
                                             u'Country': { u'CountryName': u'UK',
                                                           u'CountryNameCode': u'GB',
                                                           u'Thoroughfare': { u'ThoroughfareName': u'A944'}}},
                        u'ExtendedData': { u'LatLonBox': { u'east': -2.2200414,
                                                           u'north': 57.1480762,
                                                           u'south': 57.1453783,
                                                           u'west': -2.2239393}},
                        u'Point': { u'coordinates': [-2.221984, 57.1467683, 0]},
                        u'address': u'A944, Aberdeen, Aberdeen City AB15, UK',
                        u'id': u'p1'}],
      u'_id': 7635459717214061L,
      u'loc': [-2.2231, 57.1437]}
    
    问题是格式化的地址(
    A944,英国阿伯丁市阿伯丁AB15
    )没有细分为详细信息-返回的
    AddressDetails
    基本上是无用的

    因此,看起来必须手动解析返回的
    地址
    ,这在一般情况下似乎是一个真正的PITA

    我想知道其他人是如何解决这个问题的。使用谷歌地图web服务API不是一项要求


    谢谢。

    反向地理编码web服务

    产生的数据远远超过您从Python包发布的数据,包括

    {
       "results" : [
          {
             "address_components" : [
                {
                   "long_name" : "A944",
                   "short_name" : "A944",
                   "types" : [ "route" ]
                },
                {
                   "long_name" : "Aberdeen City",
                   "short_name" : "Aberdeen City",
                   "types" : [ "administrative_area_level_2", "political" ]
                },
    ...
    

    这似乎很合适。你会看到“阿伯丁城”。

    嗯,这不是我发明的。这就是googlemaps python包返回的内容。它也没有发明它。我可以附加相应的HTTP请求和响应。我将按照你的建议尝试使用json端点。@马克:我的意思不是说你只是发明了它,而是说Python包没有返回使用Web服务可以得到的所有信息。抱歉:我应该说得更清楚一些。python包返回它在响应中得到的所有内容-我已经检查过了。没有隐瞒任何信息。我认为该服务有两个端点,python googlemaps使用了旧的端点。