ST_Transform mereproyeksikan objek raster dari satu sistem referensi spasial (SRS) ke sistem lain dengan mentransformasikan koordinat dasarnya dan melakukan resampling nilai piksel.
Sintaksis
raster ST_Transform(raster rast,
integer outSrid,
cstring processExpr default '',
cstring storageOption default '')Parameter
| Parameter | Deskripsi |
|---|---|
rast | Objek raster sumber yang akan direproyeksikan. |
outSrid | SRID dari sistem referensi spasial target. Harus merupakan SRID yang valid dari tabel spatial_ref_sys. |
processExpr | String JSON yang mengontrol resampling piksel dan penanganan nilai nodata. |
storageOption | String JSON yang mengontrol cara penyimpanan raster hasil. |
Bidang processExpr
| Bidang | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
resample | Text | Near | Algoritma resampling. Nilai yang valid: Near, Average, Cubic, Bilinear. |
nodata | Boolean | false | Menentukan apakah nilai nodata pada raster sumber diperlakukan sebagai valid. Jika true, piksel dengan nilai nodata tidak di-resample. Jika false, piksel dengan nilai nodata di-resample. |
nodataValue | float8 atau float8[] | NULL | Nilai nodata yang akan ditetapkan untuk band raster hasil. Tentukan satu nilai untuk menerapkannya ke semua band, atau array berisi satu nilai per band. |
Tetapkan nodata dan nodataValue dengan hati-hati. Jika raster sumber tidak memiliki piksel dengan nilai nodata, atur nodata menjadi false dan abaikan nodataValue. Jika tidak, artefak gambar dapat terjadi.
Bidang storageOption
| Bidang | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
chunking | Boolean | Sama seperti sumber | Menentukan apakah raster hasil disimpan dalam bentuk chunk. |
chunkdim | String | Sama seperti sumber | Dimensi chunk. Hanya berlaku jika chunking bernilai true. |
chunktable | String | '' (string kosong) | Nama tabel chunk untuk penyimpanan permanen. Jika kosong atau NULL, tabel chunk temporary dengan nama acak dibuat dan dihapus saat sesi berakhir. Untuk menyimpan raster hasil secara permanen, tentukan nama tabel. |
compression | String | Sama seperti sumber | Format kompresi. Nilai yang valid: None, JPEG, Zlib, PNG, LZO, LZ4. |
quality | Integer | Sama seperti sumber | Kualitas gambar. Hanya berlaku untuk format JPEG. |
interleaving | String | Sama seperti sumber | Tipe interleaving. Nilai yang valid: bip (band interleaved by pixel, BIP), bil (band interleaved by line, BIL), bsq (band sequential, BSQ). |
endian | String | Sama seperti sumber | Urutan byte. NDR untuk little endian; XDR untuk big endian. |
Contoh
Contoh berikut menggunakan file GeoTIFF yang dimuat ke dalam tabel sumber.
CREATE TABLE IF NOT EXISTS datasource_table (id integer, rast raster);
INSERT INTO datasource_table VALUES (
1,
ST_ImportFrom('rbt', '$(RAST_DATA_DIR)/512_512_1_bsq_8u_geo.tif', '{}')
);Simpan hasil ke tabel chunk permanen
Tentukan nama chunktable untuk menyimpan raster yang telah direproyeksikan agar tetap tersedia di antara sesi.
Tanpa nodata:
CREATE TABLE rat_transform_result (id integer, rast raster);
INSERT INTO rat_transform_result (id, rast)
SELECT
10,
ST_Transform(
rast,
32652,
'{"resample":"Near","nodata":false}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
)
FROM datasource_table
WHERE id = 1;Dengan satu nilai nodata (piksel dengan nilai nodata di-resample):
INSERT INTO rat_transform_result (id, rast)
SELECT
11,
ST_Transform(
rast,
32652,
'{"resample":"Near","nodata":true,"nodatavalue":255}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
)
FROM datasource_table
WHERE id = 1;Dengan nilai nodata per band:
INSERT INTO rat_transform_result (id, rast)
SELECT
12,
ST_Transform(
rast,
32652,
'{"resample":"Near","nodata":false,"nodatavalue":[255,255,255]}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
)
FROM datasource_table
WHERE id = 1;Simpan hasil ke tabel chunk temporary
Abaikan chunktable untuk menulis hasil ke tabel temporary yang hanya berlaku dalam sesi tersebut. Tabel ini akan dihapus saat sesi berakhir, sehingga pola ini hanya digunakan untuk komputasi antara.
CREATE TEMP TABLE rat_transform_result_temp (id integer, rast raster);
INSERT INTO rat_transform_result_temp (id, rast)
SELECT
1,
ST_Transform(
rast,
32652,
'{"resample":"Near","nodata":false,"nodataValue":[255,255,255]}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq"}'
)
FROM datasource_table
WHERE id = 1;