如何完成地址的地理编码?

时间:2012-03-09 23:15:53

标签: google-maps geolocation google-geocoder

我想知道Google如何进行地理编码和解决?它是否像DNS查找一样工作,它们有一个大地址表,这是一个地理编码的哈希,或者是否有任何有趣的几何图形?如果它是一个大哈希表,他们是如何收集所有数据的呢?

2 个答案:

答案 0 :(得分:5)

Busbina,我在SmartyStreets工作,我们在那里验证并对街道地址进行地理编码 - 所以我会告诉你我所知道的事情,并将你链接到你自己研究的其他来源。

回答你的问题:两者都是。

有大量数据库的供应商(例如,像TIGER Data这样的数据库)包含关系,地理政治信息,包括坐标,街道,边界和名称。对于美国数据,只需通过查找就可以通过这些表获得至少ZIP级精度。但是,为了更准确,请附加+4代码,然后将其缩小到高层建筑的城市街区或楼层。

为了进一步准确(即知道建筑物在街道上的精确位置),谷歌和其他人执行所谓的插值,他们从他们的数据集中获取已知边界,并从中获取已知的主要数字范围。从那个街区或街道的尽头开始,他们解决了一个比例。 如果知道正确的主要号码,对于理想设置中的直道,可以使用这样的简单比例:

(primary number - starting primary number) / (ending primary number) =
        (x - starting boundary coordinate) / (ending boundary coordinate)

x是对街道上实际位置的近似猜测 - 但只是猜测。准确的建筑级数据可能非常昂贵,我认为只适用于某些城市地区。

关键是要获得正确的主号码和准确,最新的数据。保持这一点可能既耗时又昂贵,因为所有的开销都涉及到如此多的信息。

请注意,Google和类似的地图服务仅执行地址近似,而不是地址验证,因此可能会出错(即使地理编码算法非常精确),因为主要数字可能是错误的,甚至可能不存在。因此,当这对您很重要(或者您没有显示Google地图并且必须遵守服务条款)时,LiveAddress之类的东西,作为起点,由USPS认证,不会返回不良地址

所以有一些事情需要考虑。

更多信息:

**我会添加一个注释,因为我有很多这个问题:屋顶或建筑物级别的准确性是非常昂贵的信息。我知道很少有提供此服务的提供商,他们自己挖掘并收集了这些数据。例如,谷歌有街景视图项目,他们从中获得了大致地址的精确坐标,他们可以提供这样的精确度。但是大多数地理编码器使用来自官方来源的相同数据,它们只是插入不同的内容。如果你想要非常精确的坐标,比如建筑级,你可以期望为它付出巨大的代价,或者自己去收集数据。 (是的,谷歌是免费的 - 除非你打算使用这些信息而不仅仅是显示地图,基本上。)

答案 1 :(得分:0)

另一项非常相似的服务是GeoNames,它是美国政府运营的位置名称数据库。这项服务更适合于兴趣点,如机场或地标。这只是一个名称,位置和一些元数据的数据库。

http://www.geonames.org/