Meregangkan nilai piksel suatu raster secara linear dan mengembalikan raster baru. Perentangan linear mendistribusikan ulang nilai piksel ke seluruh rentang output untuk meningkatkan kecerahan dan kontras citra, sehingga fitur-fitur menjadi lebih mudah dibedakan secara visual.
Tersedia dua metode perentangan:
Perentangan berbasis persentil — memotong nilai piksel ekstrem pada persentil bawah dan atas yang ditentukan, lalu mendistribusikan ulang nilai-nilai yang tersisa ke seluruh rentang output (0–255). Gunakan metode ini ketika distribusi nilai aktual raster lebih penting daripada ambang batas absolut.
Perentangan rentang tetap — memetakan nilai minimum dan maksimum yang ditentukan langsung ke rentang output. Gunakan metode ini ketika Anda mengetahui batas input pasti untuk setiap band.
Sintaks
Sintaks 1: Perentangan berbasis persentil
raster ST_LinearStretch(raster raster_obj,
integer pyramidLevel DEFAULT 0,
cstring bands DEFAULT '',
integer minRatio DEFAULT 0,
integer maxRatio DEFAULT 100,
cstring storageOption DEFAULT '',
cstring parallelOption DEFAULT '{}')Sintaks 2: Perentangan rentang tetap
raster ST_LinearStretch(raster raster_obj,
float8[] minValues,
float8[] maxValues,
integer pyramidLevel DEFAULT 0,
cstring bands DEFAULT '',
cstring storageOption DEFAULT '',
cstring parallelOption DEFAULT '{}')Parameter
Parameter umum
| Parameter | Deskripsi | Bawaan |
|---|---|---|
raster_obj | Raster yang akan diregangkan. | — |
pyramidLevel | Tingkat piramida yang akan diregangkan. Nilai valid dimulai dari 0. | 0 |
bands | ID band yang akan diregangkan. Gunakan '0-2' untuk rentang atau '1,2,3' untuk band individual. ID valid dimulai dari 0. String kosong memilih semua band. | '' (semua band) |
storageOption | Opsi penyimpanan untuk raster output, dalam bentuk string JSON. Lihat Opsi penyimpanan. | '' |
parallelOption | Opsi eksekusi paralel, dalam bentuk string JSON. Lihat Opsi paralel. | '{}' |
Parameter Sintaks 1 (berbasis persentil)
| Parameter | Deskripsi |
|---|---|
minRatio | Persentil batas bawah. Nilai piksel di bawah persentil ini dipetakan ke 0. Nilai valid: 0–100. |
maxRatio | Persentil batas atas. Nilai piksel di atas persentil ini dipetakan ke 255. Nilai valid: 0–100. Harus lebih besar dari minRatio. |
Untuk menggunakan sintaks ini, Anda dapat menggunakan ST_BuildPercentiles atau ST_ComputeStatistics untuk menghitung statistik persentil raster terlebih dahulu.
Parameter Sintaks 2 (rentang tetap)
| Parameter | Deskripsi |
|---|---|
minValues | Array nilai minimum, satu per band. Panjang array harus sama dengan jumlah band yang diregangkan. |
maxValues | Array nilai maksimum, satu per band. Panjang array harus sama dengan jumlah band yang diregangkan. |
Opsi penyimpanan
Teruskan bidang-bidang berikut sebagai string JSON pada parameter storageOption.
| Bidang | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
chunking | boolean | Sama dengan raster input | Menentukan apakah raster output disimpan dalam bentuk chunk. |
chunkdim | string | Sama dengan raster input | Dimensi chunk. Hanya berlaku jika chunking bernilai true. |
chunktable | string | '' | Nama tabel chunk untuk raster output. Jika kosong atau NULL, tabel chunk temporary dengan nama acak dibuat dan hanya berlaku untuk sesi saat ini. Tentukan nama untuk membuat tabel chunk permanen. |
compression | string | Sama dengan raster input | Format kompresi. Nilai valid: NONE, JPEG, ZLIB, PNG, LZO, LZ4. |
quality | integer | Sama dengan raster input | Kualitas citra setelah kompresi. Nilai valid: 1–99. Hanya berlaku jika compression bernilai JPEG. |
interleaving | string | Sama dengan raster input | Metode interleaving data. Nilai valid: bip (band interleaved by pixel, BIP), bil (band interleaved by line, BIL), bsq (band sequential, BSQ). |
endian | string | Sama dengan raster input | Urutan byte. Nilai valid: NDR (little endian), XDR (big endian). |
celltype | string | Sama dengan raster input | Tipe piksel. Nilai valid: 1bb, 2bui, 4bui, 8bsi, 8bui, 16bsi, 16bui, 32bsi, 32bui, 64bsi, 64bui, 32bf, 64bf. |
Opsi paralel
Teruskan bidang-bidang berikut sebagai string JSON pada parameter parallelOption.
| Bidang | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
parallel | integer | Nilai dari ganos.parallel.degree | Tingkat paralelisme. Nilai valid: 1–64. |
Cara kerja
Perentangan berbasis persentil
Nilai piksel pada persentil bawah minRatio dikunci ke 0, dan nilai piksel pada persentil atas (100 - maxRatio) dikunci ke 255. Semua nilai yang tersisa didistribusikan ulang secara linear ke seluruh rentang 0–255.
Contoh: Histogram raster mencakup nilai 33–206. Dengan minRatio=2 dan maxRatio=98:
2% nilai terbawah (33–45) dipetakan ke 0.
2% nilai teratas (198–206) dipetakan ke 255.
Semua nilai antara 45 dan 198 didistribusikan ulang secara linear ke rentang 0–255.
Perentangan rentang tetap
Nilai piksel setiap band dipetakan secara linear dari rentang [minValues[i], maxValues] ke 0–255. Hal ini mendistribusikan ulang nilai ke seluruh rentang histogram, sehingga meningkatkan kecerahan dan kontras.
Contoh: Pada set data 8-bit, menetapkan minValues=[35] dan maxValues=[206] memetakan nilai 35 ke 0 dan nilai 206 ke 255, dengan semua nilai antara didistribusikan secara proporsional.
Contoh
Contoh 1: Perentangan berbasis persentil
Regangkan band 0–2 pada tingkat piramida 1, dengan memotong 2% nilai piksel terbawah dan 2% teratas.
INSERT INTO raster_table
SELECT 100, ST_LinearStretch(rast,
1, -- pyramid level
'0-2', -- bands
2, -- minRatio: clip bottom 2%
98, -- maxRatio: clip top 2%
'{"chunktable":"chunk_table", "chunking":true}',
'{"parallel":4}')
FROM raster_table
WHERE id = 1;Contoh 2: Perentangan rentang tetap
Regangkan band 0–2 pada tingkat piramida 0, dengan memetakan rentang tetap [100, 200] ke [0, 255] untuk ketiga band tersebut.
INSERT INTO raster_table
SELECT 200, ST_LinearStretch(rast,
ARRAY[100, 100, 100]::float8[], -- minValues per band
ARRAY[200, 200, 200]::float8[], -- maxValues per band
0, -- pyramid level
'0-2', -- bands
'{"chunktable":"chunk_table", "chunking":true}',
'{"parallel":4}')
FROM raster_table
WHERE id = 1;Langkah selanjutnya
ST_BuildPercentiles — hitung persentil untuk digunakan sebagai input perentangan berbasis persentil
ST_ComputeStatistics — kumpulkan statistik raster lengkap termasuk histogram dan persentil