查找美国城市所在美国郡的最佳方式是什么?

时间:2011-07-05 21:08:24

标签: geolocation geocoding geo

我正在寻找以编程方式获取某个美国城市所在美国郡名称的最佳/最简单方法。似乎没有一个简单的API可用于这样一个(看似简单的)任务?

6 个答案:

答案 0 :(得分:8)

您可以下载免费提供的县/市/邮政编码信息数据库,例如: http://www.unitedstateszipcodes.org/zip-code-database/(无需注册或支付)

将整个或其子部分导入本地持久性数据存储(例如数据库),并在需要查找某个城市的县时查询它

注意:自从此答案发布以来,县信息已从原始链接的.csv文件中消失。 此链接不再包含县信息:http://federalgovernmentzipcodes.us/free-zipcode-database.csv

答案 1 :(得分:3)

1)城市跨越县

2)拉链跨越城市和县,甚至不在同一条线上

任何使用zip作为中介的解决方案都会破坏您的数据(不,“zip + 4”通常不会修复它)。你会发现城市到邮编到县的数据地图(#2)有比城市到县的更多数量的匹配而不是更精确的模型(#1) - 这些都是不良匹配。

您正在寻找的是免费的人口普查数据。您需要的联邦信息处理标准(FIPS)数据集称为“2010年地方ANSI代码”:https://www.census.gov/geo/reference/codes/place.html

人口普查“地方”是我们问题的“城市”。这些文件将“地点”映射到一个或多个县。

答案 2 :(得分:2)

使用地理空间函数完成此任务并不容易,因为县的奇数多边形和城市的点位置。

您最好的选择是参考城市及其各自县的数据库,但我不知道您在哪里可以找到。 也许德克萨斯出版了一个? CommonDataHub不包含此信息。

答案 3 :(得分:1)

从2000年人口普查中查看TX中所有城市的链接

http://www.tsl.state.tx.us/ref/abouttx/popcity32000.html

答案 4 :(得分:1)

以下是一些代码,使用Google Maps API以编程方式获取美国某个城市/州的美国郡名称。此代码缓慢/低效,并且没有任何错误处理。然而,它对我来说是可靠的,可以将县与约1,000个城市的列表相匹配。

#Set up googlemaps API
import googlemaps
google_maps = googlemaps.Client(key='API_KEY_GOES_HERE')

#String of city/state
address_string = 'Atlanta, GA'

#Geocode
location = google_maps.geocode(address_string)

#Loop through the first dictionary within `location` and find the address component that contains the 'administrative_area_level_2' designator, which is the county level
target_string = 'administrative_area_level_2'
for item in location[0]['address_components']:     
    if target_string in item['types']: #Match target_string
        county_name = item['long_name'] #Or 'short_name'
        break #Break out once county is located
    else:
        #Some locations might not contain the expected information
        pass

这会产生:

>>> county_name
Fulton County

注意事项:

    如果google_maps.geocode()未通过有效,
  1. 代码将会中断 解决
  2. 某些地址不会返回与“administrative_area_level_2”
  3. 对应的数据
  4. 这并不能解决跨越多个县的美国城市问题。相反,我认为API只返回与address_string
  5. 相关的单纬度/经度相关联的县

答案 5 :(得分:0)

最快且最不回避的方式可能是使用免费地理位置API(在Google上轻松找到)的JSON / XML请求。这样您就不需要创建/托管自己的数据库了。