PHP中的邮政编码定位器

时间:2011-06-14 04:26:46

标签: php geolocation zipcode

我正在考虑使用google或yahoo api计算从一个邮政编码到另一个邮政编码的距离,以及获取该邮政编码的城市。但是,api调用是有限的,因为我正在处理的网站将在多个页面中多次查询api。

我想知道在哪里可以找到带有邮政编码和城市的数据库,或者是一个邮政编码数据库来查询lat / long的距离。

我做了一些谷歌搜索,我下载的大多数免费的都不准确,或者它很大,以适应数据库。

由于

我将使用PHP

7 个答案:

答案 0 :(得分:2)

过去我使用this PHP class。虽然我没有广泛使用它,但它在Zip Code查找和距离方面做了我需要做的事情。

答案 1 :(得分:1)

可提供Lat / Long商业邮政编码数据库。它们不贵并且不大(嗯,如果你限制在美国,40K小记录左右)。我过去曾经和zip-finder.com好运,但重要的是警告......一旦你开始维护你自己的邮政编码表,你需要让它与USPS对zipcodes所做的任何事情保持同步时间。他们做的一件非常恼人的事情是删除zipcodes。

也就是说,计算距离非常简单,但每个邮政编码只能获得一个纬度/长点(或多或少是区域的质心)。对于大型邮政编码,您的距离准确度可能会有一英里或更多的污点,因此请注意这一点。

答案 2 :(得分:1)

这是您可以找到的最佳免费邮政编码数据库:http://federalgovernmentzipcodes.us/

如果你不需要超精确的lat,它可以正常工作。不幸的是,lat,lng并不准确,不是因为两位小数 - 而是因为它们只是有点偏离。

我重写了这个数据库,通过点击Google地图

使lat,lng更准确

maps.googleapis.com/maps/api/geocode/json?address=“邮政编码城市州”;

答案 3 :(得分:0)

您可以尝试此API

http://ws.geonames.org/postalCodeSearch?postalcode=10033

使用lat和long得出结果

答案 4 :(得分:0)

结帐PHP-ZipCode-Class。您可以将其调整为任意数量的邮政编码数据库。就个人而言,我会使用商业数据库,因为免费的数据库很容易过时。相信我。我试图在高流量电子商务网站上维护一个免费的数据库多年。只买一个商业数据库本来就是一个很小的便宜。如果你真的坚持使用免费的数据库,这里有一对我知道的(但还没有尝试过)。

答案 5 :(得分:0)

你对api限制是正确的。 Bing也是如此(尽管他们的api非常好)。

如果你使用数据库...... 虽然它需要一些工作,但你可以免费获得美国人口普查Tiger数据 - 这是大多数低端第三方邮政编码数据库的基础。只知道在2000年,他们用ZCTA取代了邮政编码(这是邮政编码,但不完全相同)。我在下面的链接中包含了人口普查网站对ZCTA的解释:http://www.census.gov/geo/ZCTA/zcta.html

需要考虑的其他事项:大多数纬度和经度质心都是基于几何计算 - 这意味着它们可能落在没有人居住的林地,大型湖泊,公园(例如中央公园)的中间。我不确定你的需求是什么,但这可能对你没问题。如果您需要基于人口的中心,您可能需要商业数据(请参阅http://greatdata.com/zip-codes-lat-long点击顶部的“更多详细信息”标签以获取有关此主题的说明)。

此外,确定您是否只需要每个邮政编码的主要城市(一对一关系 - 通常是40,000多条记录),或者如果邮政编码边界覆盖多个城市,则需要将每个城市列为单独的记录(约57,000条记录)。大多数定位器和地址验证实用程序都需要后者。

答案 6 :(得分:0)

我一直在使用http://zip-info.com/的邮政编码数据库多年。它每季度更新一次(非常重要)并且非常准确。该数据库大约50美元,我每年两次购买更新。

美国有54,000个5位数的邮政编码 - 所以任何好的数据库都会很大 - 如果你想要的话,只需删除你不需要的数据字段(限制为zip / lat / lon)减少数据存储(虽然它节省的最少)。正如罗布所说,距离计算很容易做 - 只需要寻找一个可以进行大圆计算的脚本作为起点。