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

时间:2011-02-04 02:53:32

标签: ruby-on-rails geolocation

是否存在将city / state / zip映射到lat / lng的标准数据库?我找到了this databaseUSPS has a simple (no lat/lng) API,但还有其他推荐替代方法吗?

更新:找到了这个:http://www.geopostcodes.com/

6 个答案:

答案 0 :(得分:12)

只是一个小小的音符。这些第三方城市/州/邮政到lat / lng数据库的大多数是基于美国人口普查Tiger数据。从Census 2000开始,邮政编码数据被ZCTA取代 - 这是zipcodes的近似值。以下是人口普查网站(2011年起)的解释:

邮政编码列表区域(ZCTAs™)是由美国人口普查局开发的一个新的统计实体,用于列出2000年人口普查的汇总统计数据。这个新实体的开发是为了克服精确定义每个邮政编码所涵盖的土地面积的困难。 ®。为了准确地将该地区的人口普查数据制成表格,必须确定一个地区的范围。

ZCTA是美国邮政服务(USPS)邮政编码服务区域的通用区域表示。简而言之,每个人都是通过将人口普查2000块(其地址使用给定的邮政编码)聚合到ZCTA中来构建的,该ZCTA将该邮政编码指定为其ZCTA代码。它们代表在给定区域中发现的USPS五位数邮政编码的大多数。对于难以确定主要五位邮政编码的区域,ZCTA代码使用更高级别的三位邮政编码。有关详细信息,请参阅ZCTA(FAQ)常见问题网页。

以下链接是更新说明(2013):

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

OpenGeoCode.Org团队

ADDED 12/17/13:我们的(免费)州/城市/邮政数据集(CSV)可在以下链接中找到。它源自公共领域“政府”数据集:

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

答案 1 :(得分:5)

Google将此作为查询提供。你可以从你的应用程序进行ajax调用吗?

它叫做webservices。 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

答案 2 :(得分:3)

[编辑8/3/2015] 我在下面提到的免费非商业邮政编码数据库已移至softwaretools.com。注意:greatdata.com仍然拥有企业的高级邮政编码数据。

  

只是一个小小的音符。这些第三方城市/州/邮政到lat / lng数据库的大多数是基于美国人口普查Tiger数据。 [安德鲁]

我是商业邮政编码数据库公司(GreatData)的开发人员。对于低端数据,安德鲁的建议是正确的,如果你了解人口普查数据,那么很容易得到它。只要知道它最初可能需要几个小时才能正确完成。如果你不想自己做这项工作,你可以获得我们的免费/非商业版本here(这几乎是安德鲁建议的一些小改进。它每隔几个月更新一次)。

对于其中缺少的内容(更重要的是,大多数基于人口普查ZCTA数据的低端邮政编码数据中缺少的内容)与商业级别的相关内容,请参阅here

ps - 关于使用Google API的建议,我看到了很多建议,但除非您在Google地图中显示,否则会违反Googles TOS。具体来说:“Geocoding API可能只能与Google地图一起使用;禁止在地图上显示地理编码结果。”你会发现StackOverFlow在那些被阻止的网站上有几个主题。

希望这是有益的

答案 3 :(得分:3)

这是一个老线程,但我最近在寻找相同的信息,也遇到了这个免费的数据库:

http://federalgovernmentzipcodes.us

答案 4 :(得分:0)

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

答案 5 :(得分:0)

如果您拥有少数美国城市,您可以轻松地从Google建立自己的数据库,直接在搜索页面上为您提供坐标,而无需关注任何链接,例如:类型:

芝加哥伊利诺伊州经度纬度