Tengo dos shapefiles, una provincia con 39 municipios y una cobertura del terreno de la provincia.
Objetivo: obtener los metros cuadrados de cada clasificación de la cubierta del suelo para cada municipio. Por ejemplo, cuántos bosques abiertos, bosques cerrados, zonas erosionadas, etc. hay en Muni 1.
He conseguido escribir un código que lo hace, pero sólo para uno de los 39 municipios.
gdf1 = gpd.read_file('munis.shp')
gdf2 = gpd.read_file('landcover.shp')
muni1 = gdf1.loc[gdf1['NAME_2'] == 'muni1'] # NAME_2 is field containing all munis
intersection = gpd.overlay(muni1, gdf2, how='intersection')
area = intersection['geometry'].map(lambda p: p.area)
print(area)
El resultado son los metros cuadrados de cada clasificación de la cubierta terrestre en muni1
. ¿Cómo insertar esto en un bucle for para poder hacer el proceso por cada 39 municipios? Lo he intentado pero no funciona:
for i in range(gdf1.shape[0]):
munis = gdf1.loc[gdf1['NAME_2'][i]]
intersection = gpd.overlay(munis, gdf2, how='intersection')
area = intersection['geometry'].map(lambda p: p.area)
print(area)
Result
KeyError: 'Abad' # first municipality if sorted alphabetically