Mengatur nilai piksel objek raster pada lokasi tertentu, yang diidentifikasi berdasarkan baris dan kolom atau berdasarkan geometri.
Sintaks
Overload 1: atur berdasarkan baris dan kolom
raster ST_SetValue(raster raster_obj,
integer row,
integer column,
double value,
integer band);Overload 2: atur berdasarkan geometri
raster ST_SetValue(raster raster_obj,
geometry geom,
double value,
integer band default 0,
boolean rebuild_pyd default true,
cstring setvalueOptions default '');Parameter
| Parameter | Type | Description |
|---|---|---|
raster_obj | raster | Objek raster yang akan diperbarui. |
row | integer | Nomor baris piksel yang akan diperbarui. |
column | integer | Nomor kolom piksel yang akan diperbarui. |
value | double | Nilai piksel baru. |
band | integer | Nomor band piksel yang akan diperbarui. |
geom | geometry | Geometri yang menentukan wilayah tempat nilai piksel diperbarui. |
rebuild_pyd | boolean | Menentukan apakah piramida perlu dibangun ulang setelah nilai piksel diperbarui. |
setvalueOptions | cstring | Opsi tambahan untuk operasi pembaruan, diteruskan sebagai string JSON. Lihat tabel berikut untuk bidang yang didukung. |
Bidang setvalueOptions
| Field | Type | Default | Description |
|---|---|---|---|
window_clip | bool | false | Menentukan apakah Kotak pembatas objek geometri digunakan sebagai wilayah pembaruan. true menggunakan minimum bounding rectangle (MBR) objek geometri. false menggunakan objek geometri itu sendiri. |
rast_coord | bool | false | Menentukan apakah geometri input menggunakan koordinat piksel. true berarti koordinat piksel digunakan, di mana koordinat x dipetakan ke nomor kolom dan koordinat y dipetakan ke nomor baris, keduanya dimulai dari 0. false berarti koordinat piksel tidak digunakan. |
Contoh
Baca nilai piksel pada baris 0, kolom 2, band 1:
SELECT ST_Value(rast, 0, 2, 1) FROM raster_table ORDER BY id;Atur nilai piksel menjadi 250.0 pada lokasi yang ditentukan oleh geometri MULTIPOINT pada band 0, dengan pembangunan ulang piramida diaktifkan:
UPDATE raster_table
SET rast = ST_SetValue(rast, ST_GeomFromText('MULTIPOINT(0 0, 2 2, 10 10)', 4326), 250.0, 0, true);Atur nilai piksel menjadi 10.0 sepanjang LINESTRING menggunakan koordinat piksel (rast_coord: true), tanpa membangun ulang piramida:
UPDATE raster_table
SET rast = ST_SetValue(rast, ST_GeomFromText('LINESTRING(211 77, 233 100)', 4326), 10.0, 0, false, '{"rast_coord":true}');