获取给定国家/地区的给定邮政编码的坐标(纬度/经度)的最完整,最精确和最可靠的方法是什么?我需要提出很多请求,因此API限制率很高(甚至可能不存在)会很有用。
GeoNames的 转储会很酷,但似乎有太多重复的坐标(例)并且它们的数据库似乎也缺少特定国家/地区的一些邮政编码。
还有其他(可靠的)替代品吗?
而 我正在阅读一个Meta问题,我发现了这个链接:
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,但我不知道我可以将它用于GeoCode地址,所以我搜索了一下 我发现这个非常有趣的信息:
使用限制
每个申请限额(由
您的访问密钥):每次100,000个电话
天
每IP限制:/ v1 / public /:1,000
每小时通话; / v1 / yql /:10,000
每小时来电
有谁知道在使用YQL到GeoCode地址时我可以获得更具体的信息?
雅虎GeoPlanet 将为您提供邮政编码的质心纬度/长点。根据我的经验,他们一直很可靠。 API限制是每天50,000个请求。我不确定他们对缓存结果的政策是什么。我得到的印象是,如果您联系Yahoo!,您可以设置一个具有更高请求限制的安排,但可能需要花费一些钱。
他们也让你 下载他们的大部分数据 根据知识共享许可,但不幸的是,这似乎仅限于WOEID关系和国家/地区名称。
我认为您的选择可能取决于您每天打算进行多少API调用。免费Google Maps API的每日限额为每个IP地址15,000个请求。 (资源: Google Maps 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条款和条件。您可能想要检查有关这些限制的更多信息。
最简单的方法当然是找到一个没有请求限制的高质量服务提供商。为什么不向Google提出要约?据我所知,他们对商业客户非常灵活。
如果这不是一个选项,你肯定能够获得个人数据文件,并且在许多国家的票价比33美元便宜。我非常确定德国和奥地利以3位数的价格销售数据文件,对于英国而言,则有 邮政编码地址文件(PAF) 这是来自皇家邮政的数据,我认为质量不会比这更好。
当然,除了成本和麻烦之外,还有很多转换工作要处理来自不同邮局的26个单独的文件以及诸如此类 - 工作我不会羡慕任何人:)如果你有预算,它可能是最便宜与谷歌或雅虎交谈。
这实际上是一个非常棘手的问题,因为邮政编码实际上并不是一个多边形区域,而是一组聚集在一起的线条(参见最佳的 如何获取美国邮政(zip)代码的边界坐标? 对此有一个非常详细的解释。)
在美国,人口普查局维护一个大致的邮政编码边界清单,称为“五位邮政编码列表区”(ZCTA5)。您可以直接下载这些并随意处理它们。有几种地理编码工具可以帮助您入门;我使用PostGIS(http://postgis.net/)但还有其他,最重要的是开放街道地图数据(http://www.openstreetmap.org),它涵盖了世界。