Name

ST_Rescale — Neuabtastung eines Rasters, indem nur die Skala (oder Pixelgröße) angepasst wird. Die neuen Pixelwerte werden mit den Algorithmen NearestNeighbor (englische oder amerikanische Schreibweise), Bilinear, Cubic, CubicSpline, Lanczos, Max oder Min resampling berechnet. Die Voreinstellung ist NearestNeighbor.

Synopsis

raster ST_Rescale(raster rast, double precision scalexy, text algorithm=NearestNeighbor, double precision maxerr=0.125);

raster ST_Rescale(raster rast, double precision scalex, double precision scaley, text algorithm=NearestNeighbor, double precision maxerr=0.125);

Beschreibung

Sie können ein Raster neu abtasten, indem Sie nur den Maßstab (oder die Pixelgröße) anpassen. Die neuen Pixelwerte werden mit einem der folgenden Resampling-Algorithmen berechnet:

  • NearestNeighbor (englische oder amerikanische Schreibweise)

  • Biliniear

  • Kubisch

  • CubicSpline

  • Lanczos

  • Max

  • Min

Die Standardeinstellung ist NearestNeighbor, die am schnellsten ist, aber die schlechteste Interpolation ergibt.

scalex und scaley bestimmen die neue Pixelgröße. Der Wert von "scaley" muss oftmals negativ sein, um einen ordnungsgemäß ausgerichteten Raster zu erhalten.

Wenn "scalex" oder "scaley" teilerfremd zur Breite oder Höhe des Rasters sind, dann wird der Zielraster auf die Ausdehnung des Ausgangsrasters erweitert. Um die exakte Ausdehnung des Ausgangsrasters sicher zu erhalten, siehe ST_Resize

maxerr ist der Schwellenwert bei der Näherungstransformation des Skalierungsalgorithmus (in Pixeleinheiten). Ein Standardwert von 0.125 wird verwendet, wenn kein maxerr angegeben wird. Dies ist dergleiche Wert, welcher von gdalwarp verwendet wird. Wenn der Wert auf Null gesetzt ist, wird keine Annährung ausgeführt.

[Note]

Siehe GDAL Warp resampling methods für mehr Details.

[Note]

ST_Rescale unterscheidet sich von ST_SetScale darin, dass ST_SetScale den Raster nicht skaliert um mit der Ausdehnung des Ausgangsrasters übereinzustimmen. ST_SetScale ändert lediglich die Metadaten (oder die Georeferenz) des Rasters, um eine ursprünglich falsch angegebene Skalierung zu korrigieren. ST_Rescale berechnet die Breite und Höhe eines Rasters so, dass er mit der geographischen Ausdehnung des Ausgangsraster übereinstimmt. ST_SetScale verändert weder die Breite noch die Höhe des Rasters.

Verfügbarkeit: 2.0.0 benötigt GDAL 1.6.1+

Verbessert: 3.4.0 Max und Min Resampling Optionen hinzugefügt

Änderung: 2.1.0 Funktioniert jetzt auch mit Raster ohne SRID

Beispiele

Ein einfaches Beispiel, das die Pixelgröße eines Raster von 0.001 Grad auf 0.0015 Grad ändert.

-- the original raster pixel size
SELECT ST_PixelWidth(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, 4269), '8BUI'::text, 1, 0)) width

   width
----------
0.001

-- the rescaled raster raster pixel size
SELECT ST_PixelWidth(ST_Rescale(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, 4269), '8BUI'::text, 1, 0), 0.0015)) width

   width
----------
0.0015