All Products
Search
Document Center

ApsaraDB RDS:ST_LinearStretch

Last Updated:Mar 29, 2026

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

ParameterDeskripsiBawaan
raster_objRaster yang akan diregangkan.
pyramidLevelTingkat piramida yang akan diregangkan. Nilai valid dimulai dari 0.0
bandsID 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)
storageOptionOpsi penyimpanan untuk raster output, dalam bentuk string JSON. Lihat Opsi penyimpanan.''
parallelOptionOpsi eksekusi paralel, dalam bentuk string JSON. Lihat Opsi paralel.'{}'

Parameter Sintaks 1 (berbasis persentil)

ParameterDeskripsi
minRatioPersentil batas bawah. Nilai piksel di bawah persentil ini dipetakan ke 0. Nilai valid: 0–100.
maxRatioPersentil 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)

ParameterDeskripsi
minValuesArray nilai minimum, satu per band. Panjang array harus sama dengan jumlah band yang diregangkan.
maxValuesArray 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.

BidangTipeBawaanDeskripsi
chunkingbooleanSama dengan raster inputMenentukan apakah raster output disimpan dalam bentuk chunk.
chunkdimstringSama dengan raster inputDimensi chunk. Hanya berlaku jika chunking bernilai true.
chunktablestring''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.
compressionstringSama dengan raster inputFormat kompresi. Nilai valid: NONE, JPEG, ZLIB, PNG, LZO, LZ4.
qualityintegerSama dengan raster inputKualitas citra setelah kompresi. Nilai valid: 1–99. Hanya berlaku jika compression bernilai JPEG.
interleavingstringSama dengan raster inputMetode interleaving data. Nilai valid: bip (band interleaved by pixel, BIP), bil (band interleaved by line, BIL), bsq (band sequential, BSQ).
endianstringSama dengan raster inputUrutan byte. Nilai valid: NDR (little endian), XDR (big endian).
celltypestringSama dengan raster inputTipe 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.

BidangTipeBawaanDeskripsi
parallelintegerNilai dari ganos.parallel.degreeTingkat 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