All Products
Search
Document Center

ApsaraDB RDS:ST_MapAlgebra

Last Updated:Jul 02, 2025

Topik ini menjelaskan fungsi ST_MapAlgebra, yang menggunakan ekspresi aljabar sesuai dengan Bahasa Komputasi Aljabar untuk mentransformasikan beberapa objek raster asli menjadi satu objek raster.

Sintaksis

raster ST_MapAlgebra(raster[] rasters ,
      cstring algebraExpr  default NULL,
     cstring storageoption default '')

Parameter

ParameterDeskripsi
rastersObjek raster asli yang ingin Anda transformasikan.
algebraExprString JSON yang menentukan ekspresi aljabar yang ingin Anda gunakan.
storageOptionString JSON yang menentukan cara menyimpan objek raster baru.
Catatan Sistem hanya memerlukan agar panjang dan lebar objek raster asli berada dalam satuan pengukuran yang sama. Sistem tidak memeriksa sistem referensi spasial atau resolusi mereka. Jika panjang dan lebar objek raster asli berada dalam satuan pengukuran yang berbeda, Anda dapat menggunakan fungsi ST_Transform, ST_Resize, dan ST_Clip untuk mengonversinya ke dalam satuan yang sama.

Setiap objek JSON anak dalam string JSON yang ditentukan oleh parameter algebraExpr mewakili bidang yang dikaitkan dengan ekspresi aljabar. Tabel berikut menjelaskan bidang-bidang tersebut.

BidangDeskripsiTipeNilai defaultCatatan pengaturan
algebraExprEkspresi aljabar yang ingin Anda gunakan.StringTidak tersediaTidak tersedia.
nodataMenentukan apakah nilai nodata valid.Booleanfalse
  • Jika Anda mengatur bidang ini ke true, nilai nodata valid dan piksel dengan nilai nodata tidak ditransformasikan.
  • Jika Anda mengatur bidang ini ke false, nilai nodata tidak valid dan piksel dengan nilai nodata ditransformasikan.
nodataValueNilai nodata yang akan dikembalikan untuk objek raster baru.float80Tidak tersedia.

Ekspresi aljabar yang ditentukan oleh bidang algebraExpr berisi kata kunci berikut:

  • [r, b]
    • r: menunjukkan ID objek raster baru dalam larik yang ditentukan oleh parameter rasters. Format: 0-n-1.
    • b: menunjukkan nomor band objek raster baru. Format: 0-n-1.
  • x

    Nomor urut kolom tempat piksel yang ditentukan berada.

  • y

    Nomor urut baris tempat piksel yang ditentukan berada.

Tabel berikut mencantumkan operasi yang dapat Anda masukkan dalam ekspresi aljabar.

TipeOperator atau fungsiCatatan
Operator
  • +
  • -
  • *
  • /
  • % (sisa)
  • ** (pangkat)
Tidak tersedia.
Operasi bitwise
  • <<
  • >>
  • &
  • |
  • ^
Tidak tersedia.
Operasi logika
  • <
  • >
  • ==
  • !=
  • <=
  • >=
  • &&
  • ||
  • !
Tidak tersedia.
Operasi pada fungsi
  • abs
  • sqrt
  • exp
  • log
  • ln
  • sin
  • cos
  • tan
  • sinh
  • cosh
  • tanh
  • arcsin
  • arccos
  • arctan
  • ceil
  • floor
  • round
Anda hanya dapat menentukan satu operasi pada fungsi.
Fungsi statistik
  • min
  • max
  • sum
  • mean
  • majority
  • minority
  • std
  • median
  • range
  • variety
Anda harus menentukan dua atau lebih fungsi statistik.
  • Contoh 1

    Transformasikan objek raster asli menjadi objek raster baru yang hanya memiliki satu band. Hasil yang dikembalikan adalah sebagai berikut: raster[0]band[0] + raster[1]band[0] * raster[1]band[1].

    [
        {
            "expr":"([0,0] + [1,0] * [1,1]) ",
            "nodata": true,
            "nodataValue":999
        }
    ]
  • Contoh 2

    Hitung varians dari tiga band.

    [
        {
            "expr":"(std([0,0],[0,1],[0,2]))",
            "nodata": true,
            "nodataValue":999
        }
    ]
  • Contoh 3

    Transformasikan objek raster asli menjadi objek raster baru yang memiliki tiga band. Setiap band ditransformasikan menggunakan ekspresi unik.

    [
        {
            "expr":"(min([0,0],[0,1],[0,2]))",
            "nodata": true,
            "nodataValue":999
        },
        {
            "expr":"(max([0,0],[0,1],[0,2]))",
            "nodata": true,
            "nodataValue":999
        },
        {
            "expr":"(mean([0,0],[0,1],[0,2]))",
            "nodata": true,
            "nodataValue":999
        }
    ]

Tabel berikut menjelaskan bidang dalam parameter storageOption.

BidangDeskripsiTipeNilai defaultCatatan pengaturan
chunkingMenentukan apakah akan menyimpan objek raster baru sebagai chunk.BooleanSama dengan objek raster asliTidak tersedia.
chunkdimDimensi yang digunakan untuk menyimpan objek raster baru sebagai chunk.StringSama dengan objek raster asliBidang ini hanya berlaku ketika bidang chunking diatur ke true.
chunktableNama tabel chunk.StringString kosong ('')Secara default, tabel chunk sementara dengan nama acak dibuat untuk menyimpan data. Tabel chunk sementara ini hanya valid dalam sesi saat ini. Untuk menyimpan objek raster baru secara permanen, Anda harus menentukan bahwa Anda ingin membuat tabel chunk permanen di bidang chunktable.
compressionFormat yang digunakan untuk kompresi gambar.StringSama dengan objek raster asliEnam format kompresi didukung: None, JPEG, Zlib, PNG, LZO, dan LZ4.
qualityKualitas gambar objek raster baru.IntegerSama dengan objek raster asliBidang ini hanya berlaku dalam format JPEG.
interleavingTipe interleaving objek raster baru.StringSama dengan objek raster asliNilai valid:
  • bip: band interleaved by pixel (BIP)
  • bil: band interleaved by line (BIL)
  • bsq: band sequential (BSQ)
endianFormat endian objek raster baru.StringSama dengan objek raster asliNilai valid:
  • NDR: menentukan format little endian.
  • XDR: menentukan format big endian.

Contoh

-- Buat tabel chunk permanen.
CREATE TABLE rast_mapalgebra_result(id integer, rast raster);

-- Masukkan data ke dalam tabel chunk.
WITH foo AS (
  SELECT 1 AS rid, rast AS rast from t1 WHERE id = 1
UNION ALL
  SELECT 2 AS rid, rast AS rast from t2 WHERE id = 2
)
INSERT INTO rast_mapalgebra_result
SELECT 1, ST_MapAlgebra(
    ARRAY(SELECT rast FROM foo ORDER BY rid),
    '[{"expr":"([0,0] + 0.5 * [1,0] - ([1,1])","nodata": true, "nodataValue":999}]',
    '{"chunktable":"algebra_rbt"}'
);