邮政编码/邮区号 + 国家 转换为 地理坐标

11
什么是获取给定国家的给定邮政编码的坐标(纬度/经度)最完整、精确和可靠的方法?我需要进行大量请求,因此高API限制速率(甚至不存在)将很有用。GeoNames转储看起来很酷,但它似乎有太多重复的坐标(example),而且它似乎缺少某些特定国家的邮政编码。是否有其他(可靠的)替代方案?

我正在阅读一个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,于是我搜索了一下,我找到了这个非常有趣的信息

使用限制

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

每个IP地址的限制:/v1/public/:每小时1000次调用;/v1/yql/:每小时1万次调用

请问是否有人知道在使用YQL对地址进行地理编码方面可以获取更具体的信息?


许多重复内容,包括https://dev59.com/Z0nSa4cB1Zd3GeqPKQac - anon
@Neil:并不完全准确,那个问题中的所有答案都使用了GYM/GYB API,并且速率限制很低。 - Alix Axel
1
您能否详细解释一下您需要这些数据的目的?例如在德国,一个邮政编码适用于一个由地区或县边界定义的非常大的区域。两个具有相同5位邮政编码的地址可能相隔10-20公里远。在我的祖国芬兰也是如此(距离甚至更远)。邮政编码的地理编码只能是一个虚拟中心点。您似乎非常关注数据的质量 - 这对您有什么好处?此外,操作是否真的需要在一天内完成?为什么不在几周内分发查询? - Pekka
@Pekka:是的,在我的国家葡萄牙,我们有7位数字的邮政编码,每个邮政编码距离下一个不到1公里。我知道并非所有国家都具有相同的精度(不幸的是),但我必须接受这一点。葡萄牙的邮局要求近33k欧元来覆盖该国80%的邮政编码(他们甚至不使用WGS84标准)。我不能分享项目的具体细节,但我需要在相当短的时间内(2至3周)对欧洲的每个邮政编码进行地理编码,我已经完成了葡萄牙,但还有26个国家要处理... - Alix Axel
我会把它放在答案里,见下文。 - Pekka
显示剩余5条评论
4个回答

6

Yahoo! GeoPlanet可以为您提供邮政编码的重心纬度/经度点。在我的经验中,它们非常可靠。API限制为每天50,000个请求。我不确定他们关于缓存结果的策略是什么。我有印象如果你联系Yahoo!,你可以与更高的请求限制建立一种安排,尽管可能需要付费。

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


谢谢,但是每天仍然只有50k个请求对我来说不够(仅我的小国家就有近300k个邮政编码)。而且我发现雅虎在将邮政编码转换为坐标时并不是非常精确,几个不同的邮政编码会返回相同的坐标。不过知道WOEID转储还是很不错的。=) - Alix Axel
很高兴了解您对它们的不精确性有经验。我同意Pekka的观点;虽然可能需要一些费用,但可以尝试向Yahoo!提出请求,也许您可以支付一小笔费用,让他们取消每日限制或者与您合作缓存结果。 - npdoty

5
我认为你的选择可能取决于你每天打算进行多少个API调用。免费的Google Maps API每个IP地址的日请求限制是15,000次。(来源:Google Maps API FAQ。)
你可以使用以下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的条款和条件。您可能需要查看更多有关这些限制的信息。


每天15000有点低,不太符合我的需求......顺便问一下sensor=false是什么意思? - Alix Axel
Google可以每年大约$10k增加您的地理编码限制:http://groups.google.com/group/Google-Maps-API/browse_thread/thread/1b416f54040b87aa。你没有说它必须是免费的 :) - Daniel Vassallo
高API速率 = 在一天内对一个国家的所有邮政编码进行地理编码 - Alix Axel
2
那将排除Google地图,可能也包括其他任何网络服务。此外,我认为永久存储地理编码结果是违反Google地图条款的行为。 - Daniel Vassallo
但是您可以使用 memcached 来避免浪费 API 调用 ;-D - jacktrade

2
当然最简单的方法是找到一个没有请求限制的高质量服务提供商。为什么不向谷歌询问报价呢?据我所知,他们对企业客户非常灵活。
如果这不是一个选择,你可以在许多国家获得个别数据文件,并且价格比33,000美元便宜。我很确定德国和奥地利以3位数的价格销售数据文件,而对于英国,则有邮政编码地址文件(PAF),这是来自皇家邮政的数据,我认为质量不会更好了。 当然,除了费用和麻烦之外,还需要完成许多转换工作,使用来自不同邮局等26个单独的文件 - 这是一项我不会羡慕任何人的工作 :) 如果你有预算,最便宜的可能是与谷歌或雅虎交谈。

他们几乎每周都会更新邮政编码!我找到了一个相对便宜的数据提供商(http://www.geopostcodes.com/buy_eu_zip_codes),但我不太确定他们的数据质量如何。 - Alix Axel
有趣,我不知道这一点,但在英国他们几乎跌到了一个房子的价值,所以很明显它们波动很大...好吧,这就解释了为什么与皇家邮政的年度订阅费用为1700英镑 :) - Pekka
我仍然认为这是一种滥用,因为我们在这里拥有街道级别的精度,而他们每年只更改一两次邮政编码。 - Alix Axel
1
没错,在家里我也有过同样的经历,Google的数据中很大一部分区域没有到街道级别的地理编码(这在一个大城市里居然发生了!) - Pekka
1
是的,每年1700英镑的费用绝对是敲诈,毫无疑问。33k也一样,或者干脆不要收取任何费用——毕竟,这些数据在大多数(如果不是全部)欧洲国家都是由纳税人支付的公共数据。 - Pekka

1
这实际上是一个非常棘手的问题,因为邮政编码不是多边形区域,而是一组聚合在一起的线段(详见如何获取美国邮政编码的边界坐标?的最佳答案)。在美国境内,人口普查局维护着一个名为“五位数邮政编码制表区”(ZCTA5)的大致邮政编码边界列表。您可以直接下载这些数据并进行任意处理。有几个地理编码工具可以帮助您入门;我使用PostGIS (http://postgis.net/),但还有其他工具,最重要的是覆盖全球的Open Street Maps数据(http://www.openstreetmap.org)。

非常简单的美国边界API。网址为www.boundares-io.com,使用该API需要付费(每月25美元)。 免责声明:我在这家公司工作 - Jeryl Cook

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