ST_Reskew — Skaliert einen Raster, indem lediglich der Versatz (oder Rotationsparameter) angepasst wird. Neue Pixelwerte werden über NearestNeighbor, bilinear, kubisch, CubicSpline oder mit dem Lanczos-Filter errechnet. Die Standardeinstellung ist NearestNeighbor.
raster ST_Reskew(
raster rast, double precision skewxy, text algorithm=NearestNeighbor, double precision maxerr=0.125)
;
raster ST_Reskew(
raster rast, double precision skewx, double precision skewy, text algorithm=NearestNeighbor, double precision maxerr=0.125)
;
Skaliert einen Raster, indem lediglich der Versatz (oder Rotationsparameter) angepasst wird. Neue Pixelwerte werden über NearestNeighbor, bilinear, kubisch, CubicSpline oder mit dem Lanczos-Filter errechnet. Die Standardeinstellung "NearestNeighbor" ist am schnellsten, ergibt aber die schlechteste Interpolation.
skewx
und skewy
legen den neuen Versatz fest.
Die Ausdehnung des Zielrasters erfasst die Ausdehnung des Ausgangsrasters.
Wenn maxerr
nicht angegeben ist, wird der maximale Fehler mit 0.125 Prozent angesetzt.
Siehe GDAL Warp resampling methods für mehr Details. |
ST_Reskew unterscheidet sich von ST_SetSkew darin, dass ST_SetSkew den Raster nicht skaliert um mit der Ausdehnung des Ausgangsrasters übereinzustimmen. ST_SetSkew ändert lediglich die Metadaten (oder die Georeferenz) des Rasters, um einen ursprünglich falsch angegebenen Versatz zu korrigieren. ST_Reskew ergibt einen Raster mit geänderter Breite und Höhe, da die Berechnung so durchgeführt wird, dass die geographischen Ausdehnung des Zielrasters mit der des Ausgangsrasters übereinstimmt. ST_SetSkew verändert weder die Breite noch die Höhe des Rasters. |
Verfügbarkeit: 2.0.0 benötigt GDAL 1.6.1+
Änderung: 2.1.0 Funktioniert jetzt auch mit Raster ohne SRID
Ein einfaches Beispiel, das den Versatz eines Rasters von 0.0 auf 0.0015 ändert.
-- the original raster non-rotated SELECT ST_Rotation(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, 4269), '8BUI'::text, 1, 0)); -- result 0 -- the reskewed raster raster rotation SELECT ST_Rotation(ST_Reskew(ST_AddBand(ST_MakeEmptyRaster(100, 100, 0, 0, 0.001, -0.001, 0, 0, 4269), '8BUI'::text, 1, 0), 0.0015)); -- result -0.982793723247329