批量地理编码多个地址

19

我需要对大约200个地址进行地理编码,每天需要处理大约3000次请求。我将使用PHP在服务器端完成此操作。我已经查看了如何将地址转换为经纬度?,但无法找到一种方式来为Google Maps HTTP Request API或Yahoo Geocoding REST API(由于这是在服务器端运行,因此无法使用JavaScript)发送多个地址。

我主要将使用它来根据坐标排序地址,并在API支持的情况下填充每个地址的缺失数据。地址仅限于美国。要进行地理编码的地址来自用户输入,因此可以是类似于“街道地址,邮政编码”或“城市,州”等任意格式。对于坐标的精度并不太重要,大约在500英尺左右即可。

是否有免费的API可处理此操作?是否有方法可以让Yahoo或Google在一个请求中处理多个位置?


8
尊敬的先生/女士,敬请告知我在哪里可以免费查找每天600,000个地理位置记录的数据库... - Alnitak
也许他想复制/粘贴整个地理位置数据库 :) - balexandre
3
如果您是教堂、图书馆、学校或501c3非营利组织,SmartyStreets提供免费的地址验证服务。600,000条记录大约需要15分钟时间。(我知道这一点是因为我在SmartyStreets工作,并且是我提出免费赠送的想法)。 - Jeffrey
7个回答

21

我查看了Google地图API、Yahoo地图API、MapQuest API和Microsoft虚拟地球API,但这些免费服务都不允许进行大规模地理编码。

然而,Google地图API每天允许进行15,000次地理编码。但是,如果您一次发送太多请求,他们会不喜欢。他们建议在请求之间等待200ms,并通过IP地址跟踪您。

Yahoo允许每天进行5,000次地理编码,而且API易于使用。 Microsoft虚拟地球允许每天进行5,000次地理编码,但API文档很麻烦。

MapQuest很奇怪,似乎提供的结果也不太准确(至少是我见过所有服务中最不准确的)。

实际上,我已经设置了我的代码来在多个服务之间交替进行,这样我就可以同时发出多个请求。这 - 在某种程度上 - 模拟了批量编码。


1
@Nyxynyx - 我今天刚看了一下,他们目前允许免费账户每天使用2,500个地理编码(企业账户为100,000个)。 - Tom Pietrosanti
1
还要注意... "注意:地理编码 API 只能与 Google 地图一起使用;禁止在没有显示地图的情况下使用地理编码结果。" 请参阅 https://developers.google.com/maps/documentation/geocoding/ - puddleglum

7

geocoder.us可以满足您的需求,但如果需要批量查询可能会遇到同样的问题。但是,他们提供收费的批量查询服务。

通过批量原始数据或者他们的web servicesGeoNames是否能够提供足够的信息?


对于他预计的每日量,geocoder.us将收取每天1500美元。 - Alnitak
3
当Alnitak提到每天需要进行60万个地理编码查找时,我决定在本地进行查找。GeoNames在这里提供了免费下载:http://www.geonames.org/export/。还有一个可以在本地使用Geo:Coder:US的PERL脚本。Mat提供了很好的想法,谢谢大家。 - ace2600

5

2

2

这可能听起来有些奇怪,但我一段时间以前做了一个网站,客户希望用户只输入邮政编码,而我们提供其余数据。我使用了雅虎天气API,当时返回一个包含所有天气数据的XML文件,城市、州和邮政编码对于美国地址很有效。


1

网站在2021年6月宕机了。 - cweiske

0
使用GDirections。它允许一次最多25个途经点,并为每个途经点返回一个地理编码位置。

你能提供一个例子函数吗?它接受25个位置作为输入,并使用GDirections返回25个坐标。谢谢。 - dma_k
http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GDirections - liammclennan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接