In [1]:
import fiona
import geopandas as gpd
import glob
from rasterstats import zonal_stats
import pandas as pd
import pickle

from library.geoprocess import get_tif_ids, zonal_to_shp

In [2]:
shp = 'data/geo/countries/ne.shp'
gdf = gpd.GeoDataFrame.from_file(shp); gdf.head(3)


Out[2]:
ABBREV ABBREV_LEN ADM0_A3 ADM0_A3_IS ADM0_A3_UN ADM0_A3_US ADM0_A3_WB ADM0_DIF ADMIN BRK_A3 ... UN_A3 WB_A2 WB_A3 WIKIPEDIA WOE_ID WOE_ID_EH WOE_NOTE featurecla geometry scalerank
0 Aruba 5.0 ABW ABW -99.0 ABW -99.0 1.0 Aruba ABW ... 533 AW ABW -99.0 23424736.0 23424736.0 Exact WOE match as country Admin-0 country POLYGON ((-69.99693762899992 12.57758209800004... 3
1 Afg. 4.0 AFG AFG -99.0 AFG -99.0 0.0 Afghanistan AFG ... 004 AF AFG -99.0 23424739.0 23424739.0 Exact WOE match as country Admin-0 country POLYGON ((71.04980228700009 38.40866445000009,... 0
2 Ang. 4.0 AGO AGO -99.0 AGO -99.0 0.0 Angola AGO ... 024 AO AGO -99.0 23424745.0 23424745.0 Exact WOE match as country Admin-0 country (POLYGON ((11.73751945100014 -16.6925779829998... 0

3 rows × 64 columns


In [10]:
# calculate zonal stats for each country
gdf = zonal_to_shp('data/geo/images', 'data/geo/countries/countries_nf2.shp'); gdf.head(3)


Out[10]:
ADMIN CONTINENT ISO_A3 REGION_UN REGION_WB SUBREGION WB_A3 geometry F101992 F101993 ... F162004 F162005 F162006 F162007 F162008 F162009 F182010 F182011 F182012 F182013
0 Aruba North America ABW Americas Latin America & Caribbean Caribbean ABW POLYGON ((-69.99693762899992 12.57758209800004... 6177.0 6232.0 ... 7335.0 7242.0 7184.0 7553.0 7282.0 6744.0 7138.0 7336.0 7562.0 7371.0
1 Afghanistan Asia AFG Asia South Asia Southern Asia AFG POLYGON ((71.04980228700009 38.40866445000009,... 25186.0 18505.0 ... 75134.0 86521.0 98660.0 112196.0 89119.0 97326.0 177007.0 159544.0 191545.0 175082.0
2 Angola Africa AGO Africa Sub-Saharan Africa Middle Africa AGO (POLYGON ((11.73751945100014 -16.6925779829998... 42041.0 42094.0 ... 73147.0 62238.0 85454.0 102922.0 128467.0 149756.0 246623.0 226180.0 268144.0 271021.0

3 rows × 42 columns


In [14]:
# extract 1992 column
gdf_1992 = gdf[['ISO_A3', 'WB_A3', 'F101992']]; gdf_1992.head(3)


Out[14]:
ISO_A3 WB_A3 F101992
0 ABW ABW 6177.0
1 AFG AFG 25186.0
2 AGO AGO 42041.0

In [15]:
# pickle country-level zonal stats
with open('data/geo/pickles/zonal_stats_c.pickle', 'wb') as f:
    pickle.dump(gdf, f)

In [16]:
# pickle 1992 column
with open('data/geo/pickles/zonal_stats_c92.pickle', 'wb') as f:
    pickle.dump(gdf_1992, f)