11

获取给定国家/地区给定邮政编码的坐标(纬度/经度)的最完整、精确和可靠的方法是什么?我需要提出很多请求,因此较高的 API 限制率(甚至可能不存在)会很有用。

GeoNames转储会很酷,但它似乎有太多重复的坐标(示例),而且他们的数据库似乎也缺少特定国家/地区的一些邮政编码。

还有其他(可靠的)替代方案吗?


我阅读 Meta question时,我遇到了这个链接:

http://query.yahooapis.com/v1/public/yql?q=select%20%2A%20from%20geo.places%20where%20text%3D%22Jyv%C3%A4skyl%C3%A4%22&format=xml

我之前听说过 YQL,但我不知道我可以将它用于地理编码地址,所以我搜索了一下,发现了这个非常有趣的信息

使用限制

每个应用程序限制(由您的访问密钥标识):每天 100,000 次调用

每个 IP 限制:/v1/public/:每小时 1,000 个呼叫;/v1/yql/:每小时 10,000 次调用

有谁知道我在哪里可以获得更多关于使用 YQL 到地理编码地址的具体信息?

4

4 回答 4

6

雅虎!GeoPlanet将为您提供邮政编码的质心纬度/经度点。根据我的经验,它们是可靠的。API 限制为每天 50,000 个请求。我不确定他们对缓存结果的政策是什么。我的印象是,如果您联系 Yahoo!,您可以设置请求限制更高的安排,尽管这可能会花费一些钱。

他们还允许您根据知识共享许可下载他们的大部分数据,但不幸的是,这似乎仅限于 WOEID 关系和国家名称。

于 2010-01-16T21:11:38.730 回答
5

我认为您的选择可能取决于您打算每天进行多少 API 调用。免费 Google Maps API 的每日限制为每个 IP 地址 15,000 个请求。(来源:谷歌地图 API 常见问题解答。)

您可以使用以下 HTTP 请求使用 Google Maps API 进行地理编码:

简单的 CSV:

http://maps.google.com/maps/geo?q=W1A+1AA,+London&output=csv&sensor=false

更复杂的 XML:

http://maps.google.com/maps/geo?q=W1A+1AA,+London&output=xml&sensor=false

只需将带有邮政编码和国家/地区的“q”参数更改为地理编码。

但是,我认为将地理编码结果永久存储在您的数据库中可能违反了 Google Maps API 条款和条件。您可能需要查看有关这些限制的更多信息。

于 2010-01-16T13:31:23.400 回答
2

最简单的方法当然是找到一个没有请求限制的高质量服务提供商。为什么不向 Google 索要报价?据我所知,他们对商业客户非常灵活。

如果这不是一个选项,您当然可以获得单独的数据文件,并且在许多国家/地区的票价比 33 grand 便宜。我很确定德国和奥地利以 3 位数的价格出售数据文件,而对于英国来说,邮政编码地址文件 (PAF)是来自皇家邮政的数据,我认为质量不会比这更好。当然,除了成本和麻烦之外,还有很多转换工作要处理来自不同邮局的 26 个单独文件等等 - 我不会羡慕任何人的工作 :) 如果你有预算,可能与谷歌或雅虎交谈最便宜。

于 2010-01-16T22:05:17.423 回答
1

这实际上是一个非常棘手的问题,因为邮政编码实际上不是一个多边形区域,而是一组聚合在一起的线(请参阅How to get the bounding coordinates for a US postal(zip) code?的最佳分析器以获得非常详细的解释这个的。)

在美国,人口普查局维护着一个近似邮政编码边界的列表,称为“五位邮政编码制表区”(ZCTA5)。您可以直接下载这些并根据需要进行处理。有几种地理编码工具可以帮助您开始使用;我使用 PostGIS ( http://postgis.net/ ),但还有其他的,最重要的是 Open Street Maps 数据 ( http://www.openstreetmap.org ),它覆盖了全世界。

于 2015-05-25T16:00:53.097 回答