寻找地点的城市和邮政编码

5
8个回答

3
任何提到的在线服务及其竞争对手都提供“反向地理编码”,可以将经度/纬度坐标转换为某种街道地址。如果您只需要邮政编码和/或城市,则可以从美国人口普查局获得免费的邮政编码数据库和城市区域数据库http://www.census.gov/geo/www/cob/zt_metadata.html。然后,您可以自己设计空间数据搜索算法,或者利用Microsoft SQL Server、PostGIS、Oracle Spatial、ArcSDE等空间数据库之一。更新:2010年人口普查数据可在以下网址找到:http://www2.census.gov/census_2010/

你的链接已经过期了。你正在链接到2000年人口普查的数据,那是很久以前的事情了。 - James D

2

1

您有两个主要选项:

使用反向地理编码服务

  • Google的只能与嵌入在同一页上的Google地图一起使用,因此除非您正在这样做,否则我不建议使用。
  • Yahoo有一个很好的服务,请参见http://developer.yahoo.com/search/local/V3/localSearch.html
  • 我没有使用过OpenStreetMap的服务。他们的地图看起来非常详细和全面,并且一直在变得更好,但我会担心延迟和可靠性以及他们的地址数据是否完整(地址数据在地图上不是直接可见的,而OpenStreetMap主要是交互式地图)。

使用邮政编码地图

美国人口普查局发布了一张美国邮政编码地图这里。他们是从最小的统计单位——人口普查区块开始构建的,大多数情况下,它对应于一个城市街区。对于每个街区,他们找到该街区上最常见的邮政编码(大多数街区只有一个邮政编码,但靠近邮政编码边界的街区可能有多个)。然后将所有具有相同邮政编码的街区聚合成一个称为邮政编码制表区的单个区域。他们以ESRI shapefile格式发布了这些区域的地图。
我知道这一点是因为我写了一个Java库和Web服务,其中包括使用此地图返回给定纬度和经度的邮政编码。这是一种商业产品,所以不适用于所有人,但它快速、易于使用,并解决了这个特定问题而无需API。您可以在这里阅读有关此产品的信息:

http://askgeo.com/database/UsZcta2010

关于你们在地理位置方面的所有服务:

http://askgeo.com

与仅作为Web API可用的反向地理编码解决方案不同,因为运行自己的服务将非常困难,您可以在自己的服务器上运行此库,而不依赖于外部资源。

0

Google的反向地理编码的问题在于,你只能在嵌入了Google地图的情况下使用它。 - James D

0
如果您的服务调用量过高,您应该考虑获取自己的邮政数据。在大多数情况下,这将提供您所需的所有信息,并且有许多数据库工具可用于索引位置数据(例如PostgreSQL的PostGIS)。

SQL数据库对于GIS应用来说非常糟糕。是的,它们有插件可以帮助,但是它们很难设置并且性能不佳。而且它们只能合理地查询数据库中最近的记录,这对于查找查询点的邮政编码来说并不是很好,因为最近的点很容易(而且经常)在不同的邮政编码区域内。您应该使用逆向地理编码API提供纬度/经度的街道地址,或者使用ZIP代码多边形地图。 - James D

0

邮政编码不是一个单一的纬度/经度对。如果你只是在参考的数据库中找到最近的条目,很多时候你会得到错误的邮政编码。 - James D

-1

GeoNames使用一个点位置数据库(城市中心,学校,公共建筑,公园,兴趣点等),并找到最接近您查询点的那个点。不能保证最近的兴趣点与您的查询点具有相同的邮政编码。一个正确的地理编码解决方案可以返回最近的街道地址,但是GeoNames不提供这个功能。 - James D

-1

还有一个尚未列出的反向地理编码提供商是OpenStreetMap:您可以使用他们的Nominatim搜索服务。

OSM可能具有额外的优势,即完全由用户编辑(类似维基百科),因此对所有这些数据都有非常自由的许可计划。将其视为开源地图数据。


1
你的链接已经过时了。他们已经切换到了一个新的API,网址为http://wiki.openstreetmap.org/wiki/Nominatim。 - James D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接