Estou tentando poligonizar uma varredura usando GDALPolygonize () em um script Python. O script começou a poligonizar ontem às 17h e ainda é poligonizado agora às 9h30. Não tenho idéia de quanto tempo ele está, mas sei que ainda está acontecendo porque, quando atualizo o Windows Explorer, vejo o tamanho do arquivo alterado para o shapefile de saída.
Minha varredura é bastante grande, mas ainda não espero que demore tanto. Minha varredura é de 35.486 colunas e 23.682 linhas com tamanho de célula de 1 metro. É uma varredura binária em que o valor 1 representa dados e 0 é NoData.
Quando poligonizei no ArcGIS usando Raster to Polygon na caixa de ferramentas de conversão, demorou 56 segundos. O shapefile resultante é de 200mb, enquanto o shapefile ainda está sendo criado pelo GDALPolygonize ainda tem apenas 100mb. Isso me faz pensar que o GDAL está quase na metade do caminho depois de correr a noite toda.
Especificações: Windows 7 64bit, 8gb RAM, GDAL 1.10 64bit, ArcGIS Desktop 10.2, 64bit Geoprocessamento em segundo plano para ArcGIS Desktop, Python 2.7.3 64bit
ATUALIZAÇÃO Dia 2 - GDALPolygonize ainda está em execução. Passou a noite 2 noites seguidas e durante um dia inteiro sem concluir. O ArcGIS levou 56 segundos.
fonte
Respostas:
Eu tenho a mesma experiência. O algoritmo é realmente lento para rasters enormes, embora bastante rápido para os menores. Existe uma solução possível:
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"
Eu sei, é loucura como o inferno, mas o tempo final foi muito mais rápido.
Stanley
fonte
gdalwarp
, você não pode simplesmente agrupar sua varredura criando um arquivo vrt ao salvá-lo? Pelo menos, foi assim que aprendi a cortar minhas rasters e não preciso fazer isso para cada peça separadamente.