Contornos ao redor das regiões marcadas com scipy em uma grade 2D

Eu estou tentando encontrar os polígonos delimitadores de todos os todos em uma grade 2D com um grande valor sem dados (1e6). Eu tenho a lista de buracos trabalhando com o rótulo do scipy. Sem mergulhar na poligonalização do gdal, existe uma maneira fácil de gerar os polígonos delimitadores? Eu vejo que há matplotlib.pylab.contour, mas isso tenta desenhar uma trama, o que eu realmente não quero. Qualquer recomendação sobre como obter polígonos delimitadores para cada etiqueta (de preferência com uma maneira de simplificar um pouco os polígonos, se possível)? Tenho certeza que posso escrever algo que percorra os limites de cada buraco marcado, mas existe algo que já existe?

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 exemplo. em vez de contar, estou procurando os limites de todas essas regiões brancas, como visto em qgis, que foi feito com gdal_polygonalize.py.

questionAnswers(1)

yourAnswerToTheQuestion