【问题标题】:Geocoding 5000 addresses in php script在 php 脚本中对 5000 个地址进行地理编码
【发布时间】:2010-10-13 11:24:27
【问题描述】:

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

我一直在寻找 google 作为这样做的潜在资源,但是我读过报告说,在通过它们运行 200 次左右的查询后,google 将把你踢出一天。

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

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

谢谢

汤姆

【问题讨论】:

  • 您愿意为此付费吗?

标签: php geocode


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    如果在 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 的服务条款禁止将地理编码内容用于除在地图上显示之外的其他目的。

    【讨论】:

    • +1 请注意,Google 的服务条款禁止将地理编码内容用于除在地图上显示之外的其他目的
    • 并不是说它真的很可执行,因为它们甚至不再需要 API 密钥。但作为一家公司,我会三思而后行地大规模这样做
    • 它们将显示在地图上 - 在 iphone 应用程序中 - 纬度和经度将用于将人们引导至谷歌地图以获取行车路线等。所有 google 标志和商标都显示和尊重,所有 TOS 都得到遵守。这在常见问题解答中很有趣,但是它将高速进行所有计算。我可以将sleep(1) 放入我的脚本中以稍微错开请求,但我需要保证结果是经过地理编码的。
    【解决方案3】:

    【讨论】:

    • 好主意,这些准确吗?我从您的链接的第一个结果中看到,即使是付费的也只有 80% 的准确率。这正常吗?
    • @Thomas Clayson:是的,这很正常;谷歌的地理位置也不会有完美的准确性。好消息是,大多数查找都比这更准确 - 换句话说,这个数字受您很少需要查找的“无处可寻”点的影响很大。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      您所做的确实不符合 Google 的服务条款。

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

      实际上,如果您每秒只发出 2 个请求,则在 2'500 天的限制之前不会受到限制。

      【讨论】:

      • 如果他们为在 GMaps 上显示它进行地理编码(而不是每次都查找它),他们可能在 ToS 范围内。没有更多细节,很难说。
      • 详细信息是我们有一个我们需要搜索的特定企业列表的列表。使用谷歌本地 api 是行不通的,它只在我们想要搜索的大约 5k 个企业的这个子集中。该应用程序将这些显示在谷歌地图上,并在纬度/经度坐标处使用大头针来描绘它们的位置。我们需要存储纬度/经度的唯一原因是计算距离。设备将通过 gps 获取用户的位置,我们需要返回最近的 10 或 20 个结果。 AFAIK 这在 TOS 内,一点也不可疑。
      • 所以您的问题是对 5,000 家企业进行一次地理编码,以知道它们在哪里?你可以按照我的建议来做(我已经做过),但是做 5'000 需要几天时间。如果您从 Google 获得它们,那么 TOS 不允许您存储它们,即使它只是一次性的。再说一次,我不是想告诉你该怎么做,只是让你注意我理论上也不应该做的事情 :) 顺便说一句,这里是结果页面 www.calvert.ch/geodesix/offices.htm
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2016-11-07
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多