ST_DumpAsPolygons — 입력 래스터 밴드로부터 geomval(geom, val) 행들의 집합을 반환합니다. 밴드 번호를 설정하지 않을 경우 기본적으로 밴드 1로 가정합니다.
setof geomval ST_DumpAsPolygons(raster rast, integer band_num=1, boolean exclude_nodata_value=TRUE);
이 함수는 집합 반환 함수(SRF; Set-Returning Function)입니다. 도형(geom)과 픽셀 밴드 값(val)으로 이루어진 geomval 행들의 집합을 반환합니다. 각 폴리곤은 해당 밴드에서 val이 표시하는 값과 동일한 픽셀 값을 가진 모든 픽셀들을 통합한 것입니다.
ST_DumpAsPolygon은 래스터를 폴리곤화하는 데 유용합니다. 새 행들을 생성한다는 점에서 GROUP BY의 역함수라고 할 수 있습니다. 예를 들어 단일 래스터를 복수의 폴리곤/멀티폴리곤으로 확장하는 데 이 함수를 쓸 수 있습니다.
Changed 3.3.0, validation and fixing is disabled to improve performance. May result invalid geometries.
Changed 3.7.0, the polygonization honours PostgreSQL interrupts so cancellations and statement timeouts halt processing promptly.
GDAL 1.7 이상 버전이 필요합니다.
|
|
|
If there is a no data value set for a band, pixels with that value will not be returned except in the case of exclude_nodata_value=false. |
|
|
|
래스터 안에 있는 해당 값을 가진 픽셀들의 개수에만 관심이 있다면, ST_ValueCount 함수가 더 빠릅니다. |
|
|
|
이 함수는 픽셀 값과 상관없이 각 픽셀에 대해 도형 하나를 반환하는 ST_PixelAsPolygons 함수와 다릅니다. |
-- this syntax uses a LATERAL join
SELECT val, ST_AsText(geom) As geomwkt
FROM (
SELECT dp.*
FROM dummy_rast, LATERAL ST_DumpAsPolygons(rast) AS dp
WHERE rid = 2
) As foo
WHERE val BETWEEN 249 and 251
ORDER BY val;
val | geomwkt
-----+--------------------------------------------------------------------------
249 | POLYGON((3427927.95 5793243.95,3427927.95 5793243.85,3427928 5793243.85,
3427928 5793243.95,3427927.95 5793243.95))
250 | POLYGON((3427927.75 5793243.9,3427927.75 5793243.85,3427927.8 5793243.85,
3427927.8 5793243.9,3427927.75 5793243.9))
250 | POLYGON((3427927.8 5793243.8,3427927.8 5793243.75,3427927.85 5793243.75,
3427927.85 5793243.8, 3427927.8 5793243.8))
251 | POLYGON((3427927.75 5793243.85,3427927.75 5793243.8,3427927.8 5793243.8,
3427927.8 5793243.85,3427927.75 5793243.85))