4

我的小站点应该使用活动用户的位置作为过滤器从表中汇集项目列表。想想Craigslist,您在其中搜索“dvd”,但结果并非来自所有数据库,它们是按您选择的位置过滤的。我的问题有 2 个级别:

  1. 我应该去 a-la-craigslist 并要求用户使用城市级别的位置吗?我的问题是您需要生成在我看来是硬编码的手工制作的位置列表。
  2. 我应该去一个-la-zipCode。只要求用户输入他的邮政编码,然后汇集所有与他的邮政编码相同或有一定距离的项目的想法。

我似乎更喜欢邮政编码方式,因为它似乎更优雅的解决方案,但是究竟如何创建所有邮政编码的数据库并实现给定邮政编码 12345 的功能,获取 1 英里距离内的所有邮政编码?

这应该是相当普遍的“任务”,因为许多网站都有与我类似的需求,所以我希望不要在这里重新发明轮子。

4

5 回答 5

5

获取邮政编码数据库没有问题。你可以试试这个免费的:http: //zips.sourceforge.net/

虽然我不知道它的最新情况,但您也可以使用众多提供商之一。我们对ZipCodeDownload.com进行年度订阅,只需100 美元,我们就可以每月更新最新的邮政编码数据,包括邮政编码中心的纬度/经度。

至于查询某个半径内的所有拉链,您将需要某种空间库。如果您只有一个带有 lats/longs 的 zips 表,您将需要一个面向数据库的机制。SQL Server 2008 具有内置的功能,并且有一些开源库商业库会将这些功能添加到 SQL Server 2005。开源数据库 PostgreSQL 有一个项目 PostGIS,它将这种功能添加到该数据库中。它在这里: http: //postgis.refractions.net/

其他数据库平台可能有类似的项目,但这些是我所知道的。使用这些基于数据库的库之一,您应该能够直接查询给定半径内的任何邮政编码(或任何具有纬度/经度列的任何类型的行)。

如果您想走不同的路线,可以使用带有地图库的空间工具。这里也有开源选项,例如SharpMap许多其他谷歌可以提供帮助)可以使用美国的免费老虎地图作为数据源。但是,如果您只需要半径搜索,则此路线会稍微复杂一些并且性能可能会降低。

最后,您可能想要研究 Web 服务。正如您所说,这是一种常见的需求,我想您可以订阅任何数量的 ob 网络服务,这些服务可以从提供的邮政编码提供给定半径内的所有邮政编码。一个快速的谷歌搜索出现了这个: http ://www.zip-codes.com/free-zip-code-tools.asp#radius 但是对于这个主题的搜索有很多资源。

于 2008-08-15T23:12:26.323 回答
0

[...] 到底如何实现给定邮政编码 12345 的功能,获取 1 英里距离内的所有邮政编码?

这是有关如何执行此操作的示例:

http://www.codeproject.com/KB/cs/zipcodeutil.aspx

于 2008-08-16T00:22:39.690 回答
0

只是为了技术...... PostGIS 不是 Postgres 社区的项目......它是一个建立在 Postgres 之上的独立项目。如果您需要 PostGIS 的帮助或支持,您将希望去它的社区而不是 Postgres。

于 2008-09-16T05:50:34.017 回答
0

您可以使用 PostGIS。此外,我使用了 deCarta 的映射库。他们拥有允许您对任意数据类型进行地理定位的技术。然后你可以在空间上查询这些。

免责声明:我为 deCarta 工作

于 2008-09-22T07:54:57.323 回答
0

仅找出 1 英里半径范围内的城市并将该信息存储在表格中不是更有效吗?这样您就不必一直在数据库中进行计算。

于 2008-11-18T22:42:52.083 回答