2017-03-17 30 views
2

我想通過繪製/操作公共數據集來學習編程(python)中的一些技巧。目前,我正在嘗試製作北極的互動人口地圖。我從Alaskan State Department of Labor下載了阿拉斯加人口普查數據,這些數據給了我在FIPS人口普查區劃分的人口數量(即0201301090是Aleutians East Borough的Akutan市)。有沒有辦法將FIPS轉換爲Lat Lon或通過FIPS在Python中繪圖?如何將人口普查FIPS轉換爲Lat Lon?

回答

0

您的示例中的地點(01090部分)的FIPS代碼採用人口調查局早已退休的樣式(FIPS 55.3),因此找到一個好的數據源很棘手。我嘗試了一堆花哨的GIS庫和許多來自人口普查局的大型shp文件,但儘管您可以與人口普查區塊和小區非常接近,但它們都沒有足夠的數據來查找FIPS地點。

但是,我最終發現美國地理名稱委員會有一個有用的數據庫here,它仍然使用這種格式。

如果您從該頁底部的「聯邦代碼狀態文件」部分下載阿拉斯加文件,使用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