【发布时间】:2011-04-11 22:12:59
【问题描述】:
我需要找到一个邮政编码中最近的 5 个邮政编码。 比如我有33304,需要找最近的,比如33309、33308……
是否有数据库或网络服务可以帮助我解决这个问题?
我想我必须建立自己的数据库才能做到这一点?我知道该怎么做,但万一它已经完成了......
【问题讨论】:
标签: geolocation zipcode
我需要找到一个邮政编码中最近的 5 个邮政编码。 比如我有33304,需要找最近的,比如33309、33308……
是否有数据库或网络服务可以帮助我解决这个问题?
我想我必须建立自己的数据库才能做到这一点?我知道该怎么做,但万一它已经完成了......
【问题讨论】:
标签: geolocation zipcode
什么国家?也许您想查看 Geonames:http://www.geonames.org/
特别是:http://www.geonames.org/export/web-services.html#findNearbyPostalCodes
【讨论】:
这个答案是为了响应最近请求美国邮政编码位置的赏金。
美国人口普查局的web site 上有一个邮政编码列表(包括经纬度)。
zip code tabulation areas 是一个 CSV,其中包含(如文件格式说明中所述)以及其他字段:
Column 1 GEOID Five digit ZIP Code Tabulation Area Census Code
...
Column 6 INTPTLAT Latitude (decimal degrees) First character is blank or "-" denoting North or South latitude respectively
Column 7 INTPTLONG Longitude (decimal degrees) First character is blank or "-" denoting East or West longitude respectively
我将使用来自Census Bureau's county business patterns CSV 的数据交叉引用上述内容,以获取城市、州和县的名称。此文件格式被描述为包含(以及其他字段)(描述在您选择下载的文件中):
ZIP C ZIP Code
NAME C ZIP Code Name
...
CITY C ZIP City Name
STABBR C ZIP State Abbreviation
CTY_NAME C ZIP County Name
【讨论】:
这是一个免费的网络服务,可以完全满足您的需求: http://www.zipwise.com/webservices/
【讨论】:
我测试了地名,但发现它不够好。测试您的邮政编码附近的区域,您不会找到所有的邮政编码。这些有很好的结果,但还没有找到任何 API http://www.searchbug.com/tools/zip-radius.aspx
【讨论】:
对于最近的邮政编码,有两种方法:查找相邻的(相邻的)邮政编码和/或根据纬度和经度从一个邮政编码的中心到另一个邮政编码的中心的距离查找最近的邮政编码.
要选择连续邮政编码方式,您需要邮政编码边界数据。 Alignstar 制造了一个我们非常满意的产品(我们转售它),但 ESRI 和其他几家公司也有很好的产品。我的公司 GreatData.com 开发了一个连续的县产品,并且可以开发一个连续的邮政编码产品,但到目前为止,没有人要求它。这可以是数据文件或 API。
要根据质心(邮政编码的纬度/经度中心点)查找最近的邮政编码,您需要一个包含纬度/经度数据的邮政编码数据库(我们提供了一个,或者转到此处获取一些免费资源的链接: //http://uszipcodes.com/free-zip-code-lookup.htm。如果您只想要一个 API 而不是自己做的麻烦,请告诉我们。我们已经开始开发类似的 API,并将根据需求开发。
通过质心这样做的一个警告:我们过去已经看到,如果您有一个大(或长)的相邻邮政编码,则该邮政编码的中心可能比另一个小邮政编码更远,所以您的5 个最近的列表可能会错过相邻的 ZIP。
【讨论】:
PostgreSQL 在 9.1 中有一个名为“KNN”的新特性。它专门用于“最近邻”距离搜索,并且我自己对其进行基准测试和测试,它非常快,并且可以用于邮政编码。这是quick introduction to KNN。
您还可以找到一个 thread about applying KNN to zipcodes 和 more recent follow-up。
【讨论】: