Skip to content

Instantly share code, notes, and snippets.

@manassra
Last active May 29, 2018 11:29
Show Gist options
  • Save manassra/d6aebeb804c09601ff98b497a3d7397f to your computer and use it in GitHub Desktop.
Save manassra/d6aebeb804c09601ff98b497a3d7397f to your computer and use it in GitHub Desktop.

Revisions

  1. manassra revised this gist May 29, 2018. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion join-labor-force-with-shapefiles.py
    Original file line number Diff line number Diff line change
    @@ -10,7 +10,6 @@
    with open('labor-force.csv', 'r') as f:
    reader = csv.DictReader(f);
    for row in reader:
    print row
    statefip = int(row['state_fips'])
    countyfip = int(row['county_fips'])
    labor_force = int(row['labor_force'])
  2. manassra revised this gist May 29, 2018. 1 changed file with 39 additions and 30 deletions.
    69 changes: 39 additions & 30 deletions join-labor-force-with-shapefiles.py
    Original file line number Diff line number Diff line change
    @@ -1,36 +1,45 @@
    import sys
    import json
    import csv 
    import csv

    data = {}
    geojson = {}

    ## Step 1: Load the labor force data set, and store into a dictionary
    ## based on the state and county codes
    with open('labor-force.csv', 'r') as f:
     reader = csv.DictReader(f);
     for row in reader:
     print row
     statefip = int(row['state_fips'])
     countyfip = int(row['county_fips'])
     labor_force = 0
     if (row['labor_force']):
     labor_force = int(row['labor_force'])
     employed = int(row['employed'])
     unemployment_level = int(row['unemployment_level'])
     unemployment_rate = float(row['unemployment_rate'])
     if statefip not in data:
     data[statefip] = {}
     data[statefip][countyfip] = {
     'labor_force': labor_force,
     'employed': employed,
     'unemployment_level': unemployment_level,
     'unemployment_rate': unemployment_rate
     }
    geojson = None
    reader = csv.DictReader(f);
    for row in reader:
    print row
    statefip = int(row['state_fips'])
    countyfip = int(row['county_fips'])
    labor_force = int(row['labor_force'])
    employed = int(row['employed'])
    unemployment_level = int(row['unemployment_level'])
    unemployment_rate = float(row['unemployment_rate'])

    if statefip not in data:
    data[statefip] = {}
    data[statefip][countyfip] = {
    'labor_force': labor_force,
    'employed': employed,
    'unemployment_level': unemployment_level,
    'unemployment_rate': unemployment_rate
    }

    ## Step 2: Load the shapes for the counties (features), lookup the labor force
    ## values based on the state/county codes, and set it as part of the feature
    ## properties
    with open('counties.geojson', 'r') as f:
     geojson = json.load(f)
     for feature in geojson['features']:
     featureProperties = feature['properties']
     statefp = int(featureProperties['STATEFP'])
     countyfp = int(featureProperties['COUNTYFP'])
     featureData = data.get(statefp).get(countyfp, {})
     for key in featureData.keys():
     featureProperties[key] = featureData[key]
    geojson = json.load(f)
    for feature in geojson['features']:
    featureProperties = feature['properties']
    statefp = int(featureProperties['STATEFP'])
    countyfp = int(featureProperties['COUNTYFP'])
    featureData = data.get(statefp).get(countyfp, {})
    for key in featureData.keys():
    featureProperties[key] = featureData[key]

    ## Step 3: Save the augmented shapefile
    with open('counties-unemployment.geojson', 'w') as f:
     json.dump(geojson, f)
    json.dump(geojson, f)
  3. manassra renamed this gist May 29, 2018. 1 changed file with 0 additions and 0 deletions.
  4. manassra created this gist May 29, 2018.
    36 changes: 36 additions & 0 deletions join-labor-force-shapefile.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,36 @@
    import sys
    import json
    import csv 
    data = {}
    with open('labor-force.csv', 'r') as f:
     reader = csv.DictReader(f);
     for row in reader:
     print row
     statefip = int(row['state_fips'])
     countyfip = int(row['county_fips'])
     labor_force = 0
     if (row['labor_force']):
     labor_force = int(row['labor_force'])
     employed = int(row['employed'])
     unemployment_level = int(row['unemployment_level'])
     unemployment_rate = float(row['unemployment_rate'])
     if statefip not in data:
     data[statefip] = {}
     data[statefip][countyfip] = {
     'labor_force': labor_force,
     'employed': employed,
     'unemployment_level': unemployment_level,
     'unemployment_rate': unemployment_rate
     }
    geojson = None
    with open('counties.geojson', 'r') as f:
     geojson = json.load(f)
     for feature in geojson['features']:
     featureProperties = feature['properties']
     statefp = int(featureProperties['STATEFP'])
     countyfp = int(featureProperties['COUNTYFP'])
     featureData = data.get(statefp).get(countyfp, {})
     for key in featureData.keys():
     featureProperties[key] = featureData[key]
    with open('counties-unemployment.geojson', 'w') as f:
     json.dump(geojson, f)