Ich versuche, ein Raster mit GDALPolygonize () in einem Python-Skript zu polygonisieren. Das Skript begann gestern um 17 Uhr mit der Polygonisierung und wird jetzt um 9:30 Uhr noch polygonisiert. Ich habe keine Ahnung, wie weit es ist, aber ich weiß, dass es noch geht, denn wenn ich meinen Windows Explorer aktualisiere, kann ich sehen, wie sich die Dateigröße für das Ausgabe-Shapefile ändert.
Mein Raster ist ziemlich groß, aber ich erwarte immer noch nicht, dass es so lange dauert. Mein Raster besteht aus 35.486 Spalten und 23.682 Zeilen mit einer Zellengröße von 1 Meter. Es ist ein binäres Raster, bei dem der Wert 1 Daten und 0 NoData darstellt.
Bei der Polygonisierung in ArcGIS mithilfe von Raster zu Polygon in der Konvertierungs-Toolbox dauerte es 56 Sekunden. Das resultierende Shapefile ist 200 MB groß, während das von GDALPolygonize noch erstellte Shapefile nur noch 100 MB groß ist. Das lässt mich denken, dass GDAL nach der ganzen Nacht ungefähr zur Hälfte fertig ist.
Technische Daten: Windows 7 64-Bit, 8 GB RAM, GDAL 1.10 64-Bit, ArcGIS Desktop 10.2, 64-Bit-Hintergrund-Geoverarbeitung für ArcGIS Desktop, Python 2.7.3 64-Bit
UPDATE Tag 2 - GDALPolygonize läuft noch. Es hat über Nacht 2 Nächte hintereinander und einen ganzen Tag ohne Abschluss gegangen. ArcGIS dauerte 56 Sekunden.
quelle
Antworten:
Ich habe die gleiche Erfahrung. Der Algorithmus ist für große Raster sehr langsam, für kleinere jedoch recht schnell. Es gibt eine mögliche Problemumgehung:
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"
Ich weiß, es ist verdammt verrückt, aber das letzte Mal war viel schneller.
Stanley
quelle
gdalwarp
Sie Ihr Raster nicht einfach verwenden , indem Sie beim Speichern eine vrt-Datei erstellen, anstatt sie zu verwenden? Zumindest habe ich so gelernt, meine Raster zu zerschneiden, und ich muss es nicht für jede Kachel einzeln tun.