library instalar documentacion como numpy scipy gis

numpy - instalar - Contornos alrededor de las regiones etiquetadas scipy en una grilla 2D



scipy doc (1)

Estoy tratando de encontrar los polígonos delimitadores de todos los totalizadores en una grilla 2D con un gran valor sin datos (1e6). Tengo el listado de agujeros trabajando usando la etiqueta de scipy. Sin sumergirse en la poligonalización de Gdal, ¿hay alguna manera fácil de generar los polígonos delimitadores? Veo que hay matplotlib.pylab.contour, pero esto intenta dibujar una trama, que realmente no quiero. ¿Alguna recomendación sobre cómo obtener polígonos de límite para cada etiqueta (preferiblemente con una forma de simplificar un poco los polígonos si es posible)? Estoy seguro de que puedo escribir algo que recorra los límites de cada hoyo etiquetado, pero ¿hay algo que ya exista?

from osgeo import gdal from scipy import ndimage dem_file = gdal.Open(''dem.tif'') dem = dem.file.GetRasterBand(1).ReadAsArray() # Get a binary image of the no-data regions. The no-data value is large bin = dem > 9e5 # Find all the wholes. Anything with a label > 0. labels, num_labels = ndimage.measurements.label(bin) num_labels 1063 # The hole''s label and size. Skip 0 as that label has all the valid data. holes = [(label, sum(labels==label)) for label in range(1, num_labels)] holes[:3] [(1, 7520492), (2, 1), (3, 1),]

por ejemplo, en lugar de contar, estoy buscando los límites de todas estas regiones blancas como se ve en qgis, que se hizo con gdal_polygonalize.py.


Gracias a Joe Kington por señalarme Scikit Image.

from skimage import measure contours = measure.find_contours(labels, 1) contours[-1] array([[ 2686.99905927, 1054. ], [ 2686. , 1053.00094073], [ 2685.00094073, 1054. ], [ 2686. , 1054.99905927], [ 2686.99905927, 1054. ]]) imshow(labels) for n, contour in enumerate(contours): plt.plot(contour[:,1], contour[:, 0], linewidth=2)

Después de acercar la esquina inferior izquierda: