在PHP / Zend中使用SaaS应用程序,并希望为用户提供按邻居和邮政编码半径进行搜索的功能。我们一直在努力寻找一个体面的美国社区数据库,但到目前为止只找到了非常昂贵的资源。
是否有人通过邮政编码或lat / long找到/建立了邻居数据库?
答案 0 :(得分:14)
刚刚找到了一种从2个数据源创建自己的Neighborhood数据库的方法。一个是带有Lat / Long Centroids的美国邮政编码的完整文件。另一个是来自USGS的http://geonames.usgs.gov/domestic/download_data.htm
的免费文件好消息是USGS文件有一个名为“人口稠密地点”的要素类型,在城市地区包含社区名称。我对Urbanmapping进行了测试,对于旧金山和亚特兰大,它只有1个邻居名称(通过Neighborhood API演示)。
由于邮政编码文件和USGS文件都有纬度/经度,因此唯一要做的就是将邻域名称与邮政编码相关联。为此,您可以使用以下等式计算所有邮政编码纬度/经度和所有填充位置纬度/经度之间的距离,然后根据您想要包含的距离进行选择。我使用5英里半径的拉链质心。这是等式:
((ACOS(SIN('。$ latitude。'* PI()/ 180)* SIN(纬度* PI()/ 180)+ COS('。$ latitude。'* PI()/ 180)* COS(纬度* PI()/ 180)* COS(('。$经度。' - 经度)* PI()/ 180))* 180 / PI())* 60 * 1.1515)AS距离
希望这可以帮助其他人在同样的问题上挣扎,并且难以证明许可这些数据的成本(这对于初创公司来说是巨大的)。
答案 1 :(得分:1)
我认为这涵盖了您的问题:https://stackoverflow.com/questions/6095392/resolve-city-code-from-user-input/6354044#6354044
或者,这可能会提供价值:resolve city from user input。特别是@Michael Borgwardt的答案。
答案 2 :(得分:0)
不确定数据有多好,但Zillow有一些创意公告数据:http://www.zillow.com/howto/api/neighborhood-boundaries.htm
答案 3 :(得分:-1)
我构建了这个工具,至少可以解决邮政编码的半径:
http://www.woodstitch.com/resources/zip-code-catcher.php
如果您需要知道如何在一个区域内以实用方式获取邮政编码,它会变得有点棘手但仍然非常可行 - 我写博客解释如何在这里执行:http://taylor.woodstitch.com/php/php-mysql-best-solutions-for-finding-points-in-a-polygon-from-a-database/