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 谷歌
- 城市
- 地质点
- 英国阿伯丁
- lat=57.14369,lng=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使用了旧的端点。