Mengembalikan setiap piksel dalam suatu band raster sebagai geometri poligon, lengkap dengan nomor baris, kolom, band, dan nilai piksel tersebut.
Sintaksis
setof record ST_PixelAsPolygons(raster raster_obj,
integer band default 0,
integer pyramid default 0,
boolean exclude_nodata_value default true,
out integer rowsn,
out integer columnsn,
out integer bandsn,
out double value,
out geometry geom);Setiap record yang dikembalikan memiliki format: rowsn integer, columnsn integer, bandsn integer, value double, geom geometry.
Jikaexclude_nodata_valuebernilaitrue(nilai default), piksel dengan nilai NoData tidak disertakan dalam hasil. Atur menjadifalseuntuk menyertakan semua piksel tanpa memperhatikan nilainya.
Parameter
| Parameter | Deskripsi |
|---|---|
raster_obj | Raster yang akan di-query. |
band | ID band yang akan di-query. ID band yang valid dimulai dari 0. Default: 0. |
pyramid | ID level piramida yang akan di-query. Default: 0. |
exclude_nodata_value | Menentukan apakah piksel NoData harus dikecualikan dari hasil. Default: true. |
rowsn | Output. Nomor baris piksel. |
columnsn | Output. Nomor kolom piksel. |
bandsn | Output. ID band piksel. |
value | Output. Nilai piksel. |
geom | Output. Luasan spasial piksel dalam bentuk geometri poligon. |
Contoh
Contoh berikut mengambil piksel dari band 1 raster dengan id = 10, lalu memfilter piksel yang nilainya lebih besar dari 38.0. Sintaksis (ST_PixelAsPolygons(...)).* memperluas record yang dikembalikan menjadi kolom-kolom terpisah.
WITH tmp AS (
SELECT (ST_PixelAsPolygons(rast, 1)).*
FROM rast_table
WHERE id = 10
)
SELECT rowsn, columnsn, bandsn, value, ST_AsEWKT(geom)
FROM tmp
WHERE value > 38.0;Output:
100 | 100 | 0 | 43 | SRID=4326;POLYGON((-180 90,-180 89.1,-179.1 89.1,-179.1 90,-180 90))