免费的城市/州/邮编转纬度/经度数据库?

9
6个回答

14

请注意,这些第三方城市/州/邮政编码转经/纬度数据库大多基于美国人口普查虎牙数据。从人口普查2000年开始,邮政编码数据被替换为ZCTA - 这是邮政编码的近似值。以下是来自人口普查网站(2011年)的解释:

ZIP Code Tabulation Areas(ZCTAs™)是美国人口普查局开发的一种新的统计实体,用于对Census 2000进行摘要统计。开发这个新的实体是为了克服精确定义每个Zip Code®所覆盖的土地面积困难。定义一个区域的范围是必要的,以便准确地对该区域的人口普查数据进行分析。

ZCTAs是U.S. Postal Service(USPS)邮政编码服务区域的广义区域表示。简单地说,每个ZCTA都是通过聚合使用给定邮政编码的地址的人口普查2000个数据块构建的,该ZCTA获得其ZCTA代码分配为其ZCTA代码。它们代表了在给定区域中发现的大多数USPS五位数字邮政编码。对于那些难以确定主导五位数字邮政编码的地区,将使用更高级别的三位数字邮政编码作为ZCTA代码。有关更多信息,请参阅ZCTA(FAQ)常见问题网页。

下面的链接是更新的说明(2013年):

http://www.census.gov/geo/reference/zctas.html

The OpenGeoCode.Org团队

添加于12/17/13:我们(免费)的州/城市/邮政编码数据集(CSV)可以在以下链接中找到。它是从公共领域的“政府”数据集派生的:

http://www.opengeocode.org/download.php#cityzip


很遗憾,此答案中的链接已经失效 :( - Joris Kinable

5

谷歌提供此功能作为查找。您的应用程序是否可以进行 ajax 调用?

这被称为 Web 服务。 http://code.google.com/apis/maps/documentation/webservices/index.html

您需要使用 Google 地理编码 API。 它很容易使用,只需调用此 URL: http://maps.googleapis.com/maps/api/geocode/json?address=sydney&sensor=false

将 "address=" 更改为您需要的任何内容(例如城市、州和邮政编码)

它还可以用 XML 格式回复。只需将 json 更改为 xml。 http://code.google.com/apis/maps/documentation/geocoding/

示例结果

{
  "status": "OK",
  "results": [ {
    "types": [ "locality", "political" ],
    "formatted_address": "Sydney New South Wales, Australia",
    "address_components": [ {
      "long_name": "Sydney",
      "short_name": "Sydney",
      "types": [ "locality", "political" ]
    }, {
      "long_name": "New South Wales",
      "short_name": "New South Wales",
      "types": [ "administrative_area_level_1", "political" ]
    }, {
      "long_name": "Australia",
      "short_name": "AU",
      "types": [ "country", "political" ]
    } ],
    "geometry": {
      "location": {
        "lat": -33.8689009,
        "lng": 151.2070914
      },
      "location_type": "APPROXIMATE",
      "viewport": {
        "southwest": {
          "lat": -34.1648540,
          "lng": 150.6948538
        },
        "northeast": {
          "lat": -33.5719182,
          "lng": 151.7193290
        }
      },
      "bounds": {
        "southwest": {
          "lat": -34.1692489,
          "lng": 150.5022290
        },
        "northeast": {
          "lat": -33.4245980,
          "lng": 151.3426361
        }
      }
    }
  } ]
}

接下来你只需要打开results[0].geometry.location.latresults[0].geometry.location.lng


1
据我所记,唯一的问题是您不能将任何谷歌位置信息存储在自己的数据库中,这违反了条款。 - Lance
如果您愿意为解决方案付费,那么Intech Solutions(http://www.intechsolutions.com.au/)也可以提供帮助……不要将其与电影《办公室》中的Initech混淆 :) - Jason

4

[编辑于2015年8月3日] 我之前提到的免费非商业邮政编码数据库已经迁移到softwaretools.com网站了。请注意:greatdata.com仍然提供企业级高级邮政编码数据。

小提示。大部分第三方城市/州/邮编转换成纬度/经度数据库都是基于美国人口普查Tiger数据。[安德鲁]

我是一家商用邮政编码数据库公司(GreatData)的开发者。对于低端数据,安德鲁的建议是正确的,并且如果您了解人口普查数据,获取数据也相当容易。只要知道一开始可能需要花费几个小时才能做到这一点。如果您不想自己处理工作,可以在这里获取我们的免费/非商业版本(基本上是安德鲁建议的带有次要增强功能的版本。每隔几个月更新一次)。

如果您想详细了解它缺少什么(更重要的是,大多数基于人口普查ZCTA数据的低端邮政编码数据缺少什么)与商业级别的邮政编码数据相比,请参见这里

附:关于使用谷歌API的建议,我经常看到这个建议,但是除非您在谷歌地图中显示它,否则这违反了谷歌的服务条款。具体来说:"地理编码API只能与谷歌地图一起使用;禁止未在地图上显示地理编码结果"。您会发现StackOverFlow上有几个帖子中提到网站被封锁的情况。

希望这有益。


3

1
正如页面上所提到的那样,该数据集中的纬度/经度分辨率非常低。在人口密集地区,许多邮政编码具有相同的纬度/经度值。这可能会影响您的使用情况;这只是需要注意的事项。 - Rhett Sutphin

0
如果你只需要少量美国城市的坐标,你可以通过在谷歌上进行搜索来建立自己的数据库,而无需跟随任何链接。例如输入以下内容:
芝加哥伊利诺伊州 经度 纬度

0

请查看zcta。您可以使用他们的数据绘制邮政编码的地理边界。


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