我怎么从Census FIPS转换到Lat Lon?

时间:2017-03-17 23:44:29

标签: python fips census

我试图通过绘制/操纵公共数据集来学习编程(python)的一些技巧。目前,我正试图制作北极的互动人口地图。我从Alaskan State Department of Labor下载了阿拉斯加人口普查数据,这些数据给出了我在FIPS中按人口普查划分的人口数量(即0201301090是阿留申群岛东部的阿库坦市)。有没有办法在Fthon中将FIPS转换为Lat Lon或FIPS绘图?

1 个答案:

答案 0 :(得分:0)

您的示例中的地点的FIPS代码(01090部分)采用了很久以前由人口普查局退休的风格(FIPS 55.3),因此找到一个好的数据源有点棘手。我尝试了一系列奇特的GIS库和人口普查局的大量shp文件,但是尽管你可以与Census Blocks and Tracts非常接近,但是他们都没有足够的数据来追踪FIPS。

但是,我最终发现美国地理名称委员会有一个有用的数据库specific page仍然使用这种格式。

如果您从该页面底部的“使用联邦代码的状态文件”部分下载Alaska文件,则只需使用python的内置csv阅读器即可轻松解析必要的信息。

import csv
datapath = r"C:\folder\where\you\saved\the\file\AK_FedCodes_20170201.txt"
data = []

with open(datapath) as f:
    reader = csv.reader(f, delimiter="|")
    rows = [row for row in reader]

    for row in rows[1:]:

        name = row[1]
        fips = row[7]+row[10]+row[3]
        lat = row[12]
        lon = row[13]

        data.append({"name": name,
                     "fips": fips,
                     "lat": lat,
                     "lon": lon})

        if name == "Akutan":
            print name, fips, lat, lon # just because we can

输出:

Akutan 0201301090 54.1355556 -165.7730556