按邮政编码或其他基于位置的数据检索策略过滤
我的小站点应该使用活动用户的位置作为过滤器从表中汇集项目列表。 想想Craigslist,在那里你搜索“DVD”,但结果不是来自所有的数据库,它们是由你选择的位置过滤。我的问题有2个层次:
我似乎更喜欢邮政编码方式,因为它似乎更优雅的解决方案,但如何创建一个所有的邮政编码的DB和实现给予邮政编码12345的功能,获得所有邮政编码在1英里的距离?
这应该是相当普遍的“任务”,因为许多网站都有类似于我的需求,所以我希望不要在这里重新发明轮子。
获取邮政编码数据库不成问题。 你可以试试这个免费的:http://zips.sourceforge.net/
虽然我不知道它是多么现代化,或者您可以使用众多提供商之一。 我们每年订阅ZipCodeDownload.com,并且可能有100美元,我们每月更新最新邮政编码数据,并附有邮政编码质心的经纬度。
至于查询某个半径内的所有拉链,您将需要某种空间库。 如果你只有拉丁文的lats / longs表,你需要一个面向数据库的机制。 SQL Server 2008具有内置的功能,并且有开放源码库和商业库将向SQL Server 2005添加这样的功能。开源数据库PostgreSQL有一个项目PostGIS,它将该功能添加到该数据库中。 它在这里:http://postgis.refractions.net/
其他数据库平台可能有类似的项目,但这些是我所知道的。 使用这些基于数据库的库之一,您应该能够直接查询给定半径内的任何邮政编码(或具有纬度/长度列的任何类型的行)。
如果您想要采用不同的路线,则可以将空间工具与映射库一起使用。 在这里也有开源选项,比如SharpMap和其他许多可以使用美国免费Tiger地图作为数据源的软件(谷歌可以提供帮助)。 然而,如果你需要的只是一个半径搜索,这条路线会更复杂一些,可能性更差。
最后,你可能想看看一个Web服务。 正如你所说,这是一个常见的需求,我想有可以订阅的任何数量的ob服务,它可以提供给定邮政编码的给定半径内的所有邮政编码。 一个快速的谷歌搜索出现了这个:http://www.zip-codes.com/free-zip-code-tools.asp#radius但有这个主题搜索有很多资源。
如何实现给定邮政编码12345的功能,在1英里距离内获得所有邮编?
以下是如何做到这一点的示例:
http://www.codeproject.com/KB/cs/zipcodeutil.aspx
只是为了技术... PostGIS不是Postgres社区的项目......它是一个建立在Postgres之上的独立项目。 如果你需要PostGIS的帮助或支持,你会想要去社区而不是Postgres。
链接地址: http://www.djcxy.com/p/35813.html上一篇: Filter by zip code, or other location based data retrieval strategies
下一篇: Catch event if user have already liked any facebook page