Estoy intentando poligonalizar un ráster usando GDALPolygonize () en un script de Python. El guión comenzó a poligonizar ayer a las 5 p.m. y todavía se poligonaliza a las 9:30 a.m. No tengo idea de qué tan avanzado está, pero sé que todavía está yendo porque cuando actualizo mi explorador de Windows puedo ver el cambio de tamaño de archivo para el archivo de forma de salida.
Mi trama es bastante grande, pero todavía no espero que tarde tanto. Mi ráster tiene 35,486 columnas y 23,682 filas con un tamaño de celda de 1 metro. Es un ráster binario donde un valor de 1 representa datos y 0 es NoData.
Cuando poligonalicé en ArcGIS usando Raster to Polygon en el cuadro de herramientas de conversión, tardé 56 segundos. El archivo de forma resultante es de 200 mb mientras que el archivo de forma que GDALPolygonize todavía está creando solo es de 100 mb. Eso me hace pensar que GDAL está a medio camino después de correr toda la noche.
Especificaciones: Windows 7 de 64 bits, 8 gb de RAM, GDAL 1.10 de 64 bits, ArcGIS Desktop 10.2, 64 bits de geoprocesamiento en segundo plano para ArcGIS Desktop, Python 2.7.3 de 64 bits
ACTUALIZACIÓN Día 2: GDALPolygonize todavía se está ejecutando. Ha pasado la noche 2 noches seguidas y durante todo un día sin completar. ArcGIS tardó 56 segundos.
fuente
Respuestas:
Tengo la misma experiencia. El algoritmo es realmente lento para grandes rásteres, aunque bastante rápido para los más pequeños. Hay una posible solución alternativa:
gdalwarp -te 12.08 48.5 12.5 51.1 original_file.tif part1.tif
gdal_polygonize.py part1.tif -f "ESRI Shapefile" part1.shp
ogr2ogr -f "ESRI Shapefile" -update -append merge.shp part1.shp -nln merge
ogr2ogr "output.shp" "input.shp" -dialect sqlite -sql "SELECT ST_Union(geometry), field FROM input GROUP BY field"
Lo sé, es una locura, pero el tiempo final fue mucho más rápido.
Stanley
fuente
gdalwarp
, ¿no podría simplemente enlosar su ráster creando un archivo vrt al guardarlo? Al menos, así es como aprendí a cortar mis rásteres y no tengo que hacerlo para cada mosaico por separado.