ST_Resize — ラスタを新しい幅、高さにサイズ再設定を行います。
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);
ラスタを新しい幅、高さにサイズ再設定を行います。新しい幅、高さはピクセル数で確実に指定するか、ラスタの幅、高さの比率で指定します。新しいラスタの範囲は元のラスタの範囲と同じです。
新しいピクセル値のリサンプリングアルゴリズムとして最近傍補間 ('NearestNeighbor' (米式綴り方))、双線形補間 ('Bilinear')、3次補間 ('Cubic')、3次スプライン補間 ('CubicSpline')、ランチョス補間 ('Lanczos')を用います。デフォルトは最も早いですが最も悪い内挿を行う最近傍補間です。
一つ目の形式では、出力ラスタの実際の幅、高さを予定しています。
二つ目の形式では、0から1の間の値で、入力ラスタの幅、高さに対する比率を指定しています。
三つ目の形式では、出力ラスタの実際の幅、高さを取るか、文字列による入力ラスタの幅、高さに対する百分率 ("20%")を取ります。
Availability: 2.1.0 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
)
SELECT
rid,
ST_Width(rast) AS width,
ST_Height(rast) AS height,
ST_ScaleX(rast) AS scale_x,
round(ST_ScaleY(rast)::numeric, 4) AS scale_y
FROM foo
ORDER BY rid
rid | width | height | scale_x | scale_y -----+-------+--------+---------+--------- 1 | 500 | 500 | 2 | -2.0000 2 | 500 | 100 | 2 | -10.0000 3 | 250 | 900 | 4 | -1.1111 (3 rows)