选择最准确的地理编码

时间:2009-07-12 11:58:24

标签: google-maps geocoding street-address

我正在使用http://maps.google.com/maps/geo?用于对某些地址进行地理编码的Web服务。

我遇到的问题是,更完整的地址并不一定能提供更准确的地理编码。

例如,在Llantysilio,Denbighshire,英国的传球远比Llantysilio,Llangollen,Denbighshire,UK更准确

XML中的Accuracy属性在决定选择哪个地址时似乎没有用。

其他人如何处理此问题?有没有一种好方法可以选择最适合/最有效的地理编码?

*编辑 一些额外的信息 - 当我放入更全面的地址时,地址的第一行被忽略,地理编码器跳转到另一个但确切的地址,该地址位于添加到地址的额外行中的中央街道。在这个例子中,它选择了Llangollen中间的Castle Street,似乎无视Llantysilio。

由kdgregory编辑:这是我使用的两个API请求(缺少API密钥似乎不是问题):

http://maps.google.com/maps/geo?q=Llantysilio,+Denbighshire,+UK&sensor=false&output=xml

http://maps.google.com/maps/geo?q=Llantysilio,Llangollen,++Denbighshire,+UK&sensor=false&output=xml

5 个答案:

答案 0 :(得分:4)

你必须解释我朋友的准确性。精度通常有2个部分,首先是地址macthing。第二部分是重要的部分。您可以将某些内容编码为美国的准确度级别,或城市级别,邮政编码质心,街道插值级别或实际宗地精度级别。第一个例子有一个4,第二个例子是9.对于这个服务,更高的是更好。

准确性值描述 0未知准确度。 1国家级精度。 2地区(州,省,县等)水平准确度。 3子区域(县,市等)级别的准确性。 4镇(市,村)级精度。 5邮政编码(邮政编码)级别准确性。 6街道级精度。 7交叉等级精度。 8地址级精度。 9前提(建筑物名称,物业名称,购物中心等)水平准确度。

答案 1 :(得分:1)

值得注意的是,Google 不遵循XAL规范 ,而是在子集中实现它们。

所以,这意味着你不一定能做到:

place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName
place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName
place.AddressDetails.Country.CountryName

因为可以提供国家和地区,而行政区域不是。

返回的数据通过精度计标识,可以让您对数据的期望有一个相对的了解。因此,您可以使用此变量存储对象并切断整个地址的一部分,并尝试以这种方式进行地理编码 - 但不建议这样做。

通常情况下,完整地址(没有通道)是查找大致位置的好方法。您可以使用Google提供的一些加权优先逻辑来优化地址。

E.g。使用setViewPort或setCountryCode可以更准确地提供搜索。

请记住,地理编码 不是科学 。你不能指望一致的结果。

答案 2 :(得分:0)

地理编码response.Placemark [0]通过gmap你可以检查你得到了什么,并采取水平或再试一次。我按顺序

选择了默认值
place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName
place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName
place.AddressDetails.Country.CountryName

如上所述,它可能更具逻辑性。 gmaps 3与v2有些不兼容。

答案 3 :(得分:0)

你可以尝试一个非常丑陋的黑客,它包括对你的地址所包含的单词的所有子地址进行地理编码,你会得到很多地理编码,用于通过反向地理编码工具获取与它们相关的地址。 一旦你有足够的地址,你可以将它们与你最初给出的地址进行比较,然后你就可以获得最准确的地理编码...... 许多请求,很多迭代随着你添加到你的地址中的每个单词而增长,这是一项丑陋的工作,但是可以很有趣地进行一些统计^^

答案 4 :(得分:0)

最后我得出的结论是,与英国google的地理编码网络服务在地址一致性方面存在太多奇怪的问题,但最终设法找到了一种使用邮政编码的方式,这更准确:{{3} }