Mehr

PostGIS ST_AsTIFF-Funktion löst Speicherausnahme aus?

PostGIS ST_AsTIFF-Funktion löst Speicherausnahme aus?


Wir haben ein Satellitenbild in PostGIS geladen. Aus diesem Bild haben wir ein Reflexionsraster berechnet und die Ergebnisse als 32BF-Pixel gespeichert. Das Reflexions-Raster enthält 54 1000x1000-Kacheln.

Ich möchte ein GeoTIFF dieses Reflexionsrasters erstellen. Einzelne Fliesen funktionieren gut. Die Verwendung einer ST_Union für die Reflexions-Raster-Spalte führt jedoch zu einer Ausnahme, wenn die folgende Abfrage von Python ausgeführt wird:

SELECT ST_AsTIFF(ST_Union(refl_rast), 'GTiff') gtiff FROM sat_rast_calc InternalError: Ungültige Speicherzuweisungsanforderungsgröße 1344128795

Ich weiß, dass ich die Kacheln einzeln exportieren und anschließend mit gdal_merge.py zusammenführen kann. Ich würde dieses GTiff jedoch lieber in einem Schritt exportieren.

Wäre eine davon wahrscheinlich hilfreich?

  1. Verwenden eines anderen Pixeltyps
  2. Übergeben einer anderen ST_AsGTIFF-Option
  3. Erhöhen eines PostGRES-Speicherparameters
  4. Erhöhen eines Linux-Kernel-Parameters
  5. Etwas anderes machen

Das In-Memory-Limit für eine Zeile in PostgreSQL beträgt 1 GB. Versuchen Sie es mit einem weniger speicherhungrigen Pixeltyp. Sie können auch versuchen, einen Komprimierungsparameter an ST_AsTiff() zu übergeben, aber ich denke, die interne Arbeit wird ohne Komprimierung erledigt. Versuchen Sie auch, Kacheln VOR ST_Union() zu komprimieren, nur für den Fall… Raster in PostGIS sind so konzipiert, dass sie gut als kleine Raster-Chunks funktionieren. Große Raster nicht als Ganzes zu manipulieren.