ST_Resize — Ändert die Zellgröße - width/height - eines Rasters
raster ST_Resize(raster rast, integer width, integer height, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_Resize(raster rast, double precision percentwidth, double precision percentheight, text algorithm=NearestNeighbor, double precision maxerr=0.125);
raster ST_Resize(raster rast, text width, text height, text algorithm=NearestNeighbor, double precision maxerr=0.125);
Passt die Größe des Rasters an eine neue Breite/Höhe an. Die neue Breite/Höhe kann durch die genaue Anzahl der Pixel, oder durch einen Prozentsatz der Breite/Höhe des Rasters, angegeben werden. Die Ausdehnung des Zielrasters ist mit der Ausdehnung des Ausgangsrasters ident.
Neue Pixelwerte werden über NearestNeighbor, bilinear, kubisch, CubicSpline oder mit dem Lanczos-Filter errechnet. Die Standardeinstellung "NearestNeighbor" ist am schnellsten, erzeugt aber auch die schlechteste Interpolation.
Variante 1 erwartet die tatsächliche width/height des Ausgaberasters.
Variante 2 erwartet Dezimalwerte zwischen null (0) und eins (1), welche das Verhältnis zur Pixelbreite und zur Pixelhöhe des Eingaberasters angeben.
Variante 3 nimmt entweder die tatsächliche Breite/Höhe des Zielrasters oder einen Prozentsatz der Breite/Höhe des Ausgangsrasters als Zeichenfolge ("20%") entgegen.
Verfügbarkeit: 2.1.0 benötigt GDAL 1.6.1+
WITH foo AS(
SELECT
1 AS rid,
ST_Resize(
ST_AddBand(
ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 255, 0
)
, '50%', '500') AS rast
UNION ALL
SELECT
2 AS rid,
ST_Resize(
ST_AddBand(
ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 255, 0
)
, 500, 100) AS rast
UNION ALL
SELECT
3 AS rid,
ST_Resize(
ST_AddBand(
ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 255, 0
)
, 0.25, 0.9) AS rast
), bar AS (
SELECT rid, ST_Metadata(rast) AS meta, rast FROM foo
)
SELECT rid, (meta).* FROM bar
rid | upperleftx | upperlefty | width | height | scalex | scaley | skewx | skewy | srid | numbands
-----+------------+------------+-------+--------+--------+--------+-------+-------+------+----------
1 | 0 | 0 | 500 | 500 | 1 | -1 | 0 | 0 | 0 | 1
2 | 0 | 0 | 500 | 100 | 1 | -1 | 0 | 0 | 0 | 1
3 | 0 | 0 | 250 | 900 | 1 | -1 | 0 | 0 | 0 | 1
(3 rows)