我需要找到一个邮政编码中最近的 5 个邮政编码。例如,我有 33304,我需要找到最近的,比如 33309、33308 ...
是否有数据库或网络服务可以帮助我解决这个问题?
我想我必须建立自己的数据库才能做到这一点?我知道该怎么做,但万一它已经完成了......
我需要找到一个邮政编码中最近的 5 个邮政编码。例如,我有 33304,我需要找到最近的,比如 33309、33308 ...
是否有数据库或网络服务可以帮助我解决这个问题?
我想我必须建立自己的数据库才能做到这一点?我知道该怎么做,但万一它已经完成了......
哪个国家?也许您想查看 Geonames:http ://www.geonames.org/
特别是:http ://www.geonames.org/export/web-services.html#findNearbyPostalCodes
这个答案是对最近请求美国邮政编码位置的赏金的回应。
美国人口普查局在其网站上有一个邮政编码列表(带有纬度和经度)。
邮政编码制表区域是一个 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
我将使用来自人口普查局县商业模式 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”的新特性。它专门用于“最近邻”距离搜索,并且我自己对其进行基准测试和测试,它非常快,并且可以用于邮政编码。这是对 KNN 的快速介绍。
您还可以找到 关于将 KNN 应用于邮政编码的主题,以及最近的后续活动。