Topik ini menjelaskan fungsi ST_MosaicFrom, yang melakukan operasi mozaik untuk menggabungkan objek raster yang ditentukan menjadi objek raster baru.
Sintaksis
raster ST_MosaicFrom(
raster source[],
cstring chunkTableName,
cstring storageOption default '{}',
cstring mosaicOption default '{}'
);Parameter
Parameter | Deskripsi |
source | Objek raster yang ingin Anda gabungkan. |
chunkTableName | Nama tabel chunk untuk menyimpan objek raster baru. Nama tersebut harus mematuhi konvensi penamaan tabel database. |
storageOption | Opsi penyimpanan yang diwakili oleh string JSON dalam hasil yang dikembalikan. |
mosaicOption | Opsi operasi mozaik yang diwakili oleh string JSON dalam hasil yang dikembalikan. |
Nilai dari parameter storageOption adalah string berformat JSON yang menggambarkan penyimpanan chunk dari objek raster. Tabel berikut menjelaskan bidang yang didukung.
Bidang | Deskripsi | Tipe | Nilai default | Catatan |
chunking | Menentukan apakah data objek raster baru disimpan sebagai chunk. | boolean | Sama dengan objek raster yang ingin Anda gabungkan | / |
chunkdim | Ukuran setiap chunk. | string | Sama dengan objek raster yang ingin Anda gabungkan | Bidang ini hanya valid ketika bidang chunking disetel ke true. Nilainya harus dalam format |
interleaving | Tipe interleaving dari objek raster. | string | Sama dengan objek raster yang ingin Anda gabungkan | Nilai valid:
|
compression | Format kompresi data objek raster baru. | string | Sama dengan objek raster yang ingin Anda gabungkan | Nilai valid:
|
quality | Kualitas gambar objek raster baru setelah kompresi. | integer | Sama dengan objek raster yang ingin Anda gabungkan | Bidang ini berlaku hanya ketika Anda menyetel bidang compression ke jpeg atau jp2k. |
Nilai dari parameter mosaicOption adalah string berformat JSON yang menggambarkan algoritma mozaik. Tabel berikut menjelaskan bidang yang didukung.
Bidang | Deskripsi | Tipe | Nilai default | Catatan |
srid | Pengenal referensi spasial (SRID) dari objek raster baru. | integer | SRID dari objek raster di pojok kiri atas. | Anda harus menentukan kedua bidang srid dan cell_size. |
cell_size | Ukuran piksel objek raster baru. | float8[] | Ukuran piksel objek raster di pojok kiri atas. |
|
resample | Metode yang digunakan untuk resampling piksel. | text | 'Near' | Nilai valid:
|
nodata | Menentukan apakah nilai nodata dari objek raster asli valid. | bool | false |
|
nodataValue | Nilai nodata baru yang ditentukan berdasarkan band objek raster baru. | float8 float8[] | NULL | Anda dapat menyetel bidang nodataValue ke nilai numerik atau array. Jika Anda menyetel bidang nodataValue ke nilai numerik, semua band objek raster baru menggunakan nilai nodata yang sama. Jika Anda menyetel bidang nodataValue ke array, jumlah elemen dalam array harus sama dengan jumlah band raster. |
color_balance | Menentukan apakah akan melakukan penyeimbangan warna. | bool | false | Bidang ini menentukan apakah akan melakukan penyeimbangan warna. |
step | Menentukan ukuran langkah yang digunakan selama proses penyeimbangan warna. | integer | 0.1 | Bidang ini valid ketika bidang color_balance disetel ke true. Ukuran langkah yang lebih besar dapat mempercepat proses penyeimbangan warna, tetapi hasilnya mungkin tidak optimal. |
iteration | Menentukan jumlah iterasi penyeimbangan warna. | integer | 50000 | Bidang ini valid ketika bidang color_balance disetel ke true. Semakin banyak iterasi, semakin lama waktu yang dibutuhkan untuk proses penyeimbangan warna. |
parallel | Tingkat paralelisme (DOP). | integer | 1 | Tingkat paralelisme yang diizinkan. Nilai valid: 1 hingga 64. |
Deskripsi
Fungsi ini menggabungkan beberapa objek raster menjadi satu objek raster baru.
Semua objek raster yang ingin digabungkan harus memenuhi persyaratan berikut:
Objek raster memiliki jumlah band yang sama.
Objek raster direferensikan secara geografis, atau tidak ada satupun yang direferensikan secara geografis. Jika semua objek raster direferensikan secara geografis, koordinat dunia digunakan untuk operasi mozaik dan SRID atau parameter affine dapat berbeda.
Objek raster dapat memiliki tipe piksel yang berbeda.
Fungsi ST_MosaicFrom menyediakan kemampuan untuk menyeimbangkan warna menggunakan teknologi koreksi gamma. Berikut adalah proses penyeimbangan warna:
Bidang warna global dibuat. Semua objek raster yang akan digabungkan dalam operasi mozaik di-resampling. Setelah resampling, fitting polinomial digunakan untuk menghasilkan matriks piksel global. Matriks piksel global digunakan sebagai referensi untuk menyeimbangkan warna setiap objek raster.
Bidang warna lokal yang sesuai dengan setiap objek raster dihitung menggunakan interpolasi bilinear. Bidang warna lokal digunakan untuk menyelaraskan warna objek raster individu dengan matriks piksel global.
Dua nilai piksel berbeda yang sesuai dengan setiap posisi piksel dalam objek raster dihitung. Satu nilai piksel dihitung berdasarkan bidang warna lokal, dan yang lainnya dihitung berdasarkan bidang warna global. Kemudian, warna piksel disesuaikan dengan menghitung parameter koreksi gamma untuk mencapai penyeimbangan warna.
Contoh:
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', ''))
Update raster_table Set raster_obj = ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic','{"srid":4326,"cell_size":[0.00002,0.00002]}') where id = 11;
--nodata
Insert Into rat_mosaicfrom Values(110, ST_MosaicFrom(Array(select rast from rat_mosaicfrom where id < 5), 'rbt_mosaic','{"chunking":true, "chunkdim":"(256,256,3)","compression":"jpeg","quality":75, "interleaving":"bsq","celltype":"8bui"}','{"resample":"Average","srid":4326,"cell_size":[0.00002,0.00002],"nodata":true, "nodataValue":[255,255,255]}'));
-- Parallel
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', '{"srid":4326,"cell_size":[0.00002,0.00002],"parallel":4}'))
-- Penyeimbangan warna
Insert Into raster_obj Values(1, ST_MosaicFrom(Array(select raster_obj from raster_table where id < 10), 'chunk_table_mosaic', '', '{"srid":4326,"cell_size":[0.00002,0.00002], "color_balance":true, "parallel":4}'))