Tengo un shapefile de polígonos que traje a Python en Jupyter Notebook a través de GeoPandas como un geodataframe. Hay cientos de polígonos en este shapefile, y quiero crear un raster individual para cada polígono, donde cada raster tenga ese polígono rasterizado aislado, como si fuera el único polígono, donde cada raster de salida tenga un número único adjunto (por ejemplo, "Output_raster_35" etc.). Quiero quemar específicamente valores correspondientes a cada polígono dentro de la columna "Values" en este geodataframe.
Estoy tratando de usar el paquete geocube
para esta tarea ejecutando lo siguiente para rasterizar todo el shapefile:
vector_fn = 'polygons.shp'
out_grid = make_geocube(
vector_data=vector_fn,
measurements=["Values"],
resolution=(-25, 25),
fill=-9999,
)
out_grid["Values"].rio.to_raster("my_rasterized_column.tif")
Este código fue sugerido en esta publicación de stackoverflow: Rasterizing polygons in shapefile using GDAL
Sin embargo, necesito iterar este proceso sobre cada polígono (fila), en lugar de rasterizar todos los polígonos a la vez.
Hasta ahora mi idea es:
polygons = gpd.read_file('polygons.shp')
polygon_IDs = polygons.Polygon_ID.tolist()
for i in polygon_IDs:
x = polygons.loc[polygons.Polygon_ID == i]
vector_fn = x
out_grid = make_geocube(
vector_data=vector_fn,
measurements=["Values"],
resolution=(-25, 25),
fill=-9999,
)
out_grid["Values"].rio.to_raster("Output_Raster")
Aunque tengo problemas para saber si tengo mi lógica y sintaxis correctas aquí.
¿Cómo puedo corregir mi código para que cree rasters quemados individuales para cada polígono en el shapefile donde los archivos de salida de raster estén numerados?