Utiliza rasterio de Sean Gillies. Puede combinarse fácilmente con Fiona (lectura y escritura de shapefiles) y con shapely del mismo autor.
En el script rasterio_polygonize.py el comienzo es
import rasterio
from rasterio.features import shapes
mask = None
with rasterio.Env():
with rasterio.open('a_raster') as src:
image = src.read(1) # primera banda
results = (
{'properties': {'raster_val': v}, 'geometry': s}
for i, (s, v)
in enumerate(
shapes(image, mask=mask, transform=src.transform)))
El resultado es un generador de entidades GeoJSON
geoms = list(results)
# primera entidad
print geoms[0]
{'geometry': {'type': 'Polygon', 'coordinates': [[(202086.577, 90534.3504440678), (202086.577, 90498.96207), (202121.96537406777, 90498.96207), (202121.96537406777, 90534.3504440678), (202086.577, 90534.3504440678)]]}, 'properties': {'raster_val': 170.52000427246094}}
Que puedes transformar en geometrías shapely
from shapely.geometry import shape
print shape(geoms[0]['geometry'])
POLYGON ((202086.577 90534.35044406779, 202086.577 90498.96206999999, 202121.9653740678 90498.96206999999, 202121.9653740678 90534.35044406779, 202086.577 90534.35044406779))
Crea un Dataframe geopandas y habilita funcionalidades fáciles de usar como unión espacial, gráficos, guardar como geojson, ESRI shapefile, etc.
geoms = list(results)
import geopandas as gp
gpd_polygonized_raster = gp.GeoDataFrame.from_features(geoms)
0 votos
No estoy seguro si se pueden mezclar esos dos paquetes. ¿Está al tanto de las incompatibilidades mutuas entre rasterio y gdal? > Incompatibilidades Mutuas Los enlaces de Rasterio y GDAL pueden entrar en conflicto por los objetos GDAL globales. A menos que tenga un profundo conocimiento sobre ambos paquetes, elija exactamente uno de
import osgeo.gdal
o importrasterio
ver aquí