7

我希望在 PHP 脚本中一次对超过 5000 个地址进行地理编码(这只会运行一次)。

我一直在寻找谷歌作为这样做的潜在资源,但是我读过报告说,在通过他们运行 200 次左右的查询后,谷歌将让你一整天都在工作。

我只是想知道是否有任何其他方法可以对 5000 个左右的地址进行地理编码、其他服务(如 google 提供的服务或我可以使用的类似服务)?

还是我只需要错开这个?问题是我真的没有太多时间,每天为 5000 个结果做 200 或 300 个将需要将近 5 个(工作)周。

谢谢

汤姆

4

5 回答 5

13

您可以改用 Bing 地图:空间数据 API用于一次对数千个地址进行批量地理编码(该链接甚至是关于如何将其与 PHP 一起使用的详细教程)。

您只需要在http://www.bingmapsportal.com上注册一个密钥,但这是免费且快速的(您会在几分钟内收到确认电子邮件)。

于 2010-10-13T11:55:42.133 回答
6

我可以提交的地理编码请求的数量是否有限制?

如果在 24 小时内从单个 IP 地址收到超过 2,500 个地理编码请求,或者从单个 IP 地址提交地理编码请求的速度太快,则 Google Maps API 地理编码器将开始响应状态代码 620。

[...]

如果您需要向 Geocoding Web Service 提交大量地址以供缓存以供以后使用,您应该考虑Google Maps API Premier,它为此目的提供了单独的批量地理编码配额。

-- http://code.google.com/apis/maps/faq.html#geocoder_limit

正如@Pekka 所提到的:请注意,Google 的服务条款禁止将地理编码内容用于除在地图上显示之外的其他目的。

于 2010-10-13T11:29:43.803 回答
1

正如@Bart Kiers 所说,您在 24 小时内可以执行的请求数量是有限制的;还有一个“不太快”的每小时(?)限制。我建议您除以(每天秒数)86400/2500(限制)以获得不应超过每小时“太快”限制的查询率。每 35 秒大约有一个查询,这应该会在两天内为您提供结果。

但是,请检查返回代码:如果服务开始返回 620,请停止并让它休息一段时间,否则您将面临被禁止的风险。

于 2010-10-13T11:46:01.537 回答
0

您尝试做的事情确实不符合 Google 的服务条款。

也就是说,如果您在地理编码请求之间没有暂停至少 250 毫秒,Google 将开始返回“超出配额”的响应。

在实践中,如果您每秒只发出 2 个请求,您将不会受到限制,直到 2'500 天的限制。

于 2010-10-13T12:09:30.643 回答