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) です。geomval 行の集合を返します。geomval はジオメトリー (geom) とピクセルバンド値 (val) からなります。それぞれのポリゴンは、指定したバンドの、val で示される値と同じピクセル値を持っている全てのピクセルの結合です。
ST_DumpAsPolygon はラスターのポリゴン化に使えます。新しい行を生成するので GROUP BY の逆です。たとえば、単一ラスターを複数の POLYGON/MULTIPOLYGON に展開できます。
Changed 3.3.0, 能率向上のため評価と修正が無効になりました。不正なジオメトリーを返すことがあります。
Changed 3.7.0, PostgreSQL の処理中断を尊重して、キャンセルや手続時間切れによる処理の停止を即座に行うようになりました。
Availability: GDAL 1.7以上が必要です。
|
|
|
バンドに NODATA 値が設定されている場合には、exclude_nodata_value=false が設定されている場合を除いて、NODATA 値を持つピクセルは返りません。 |
|
|
|
ラスター内の与えられた値を持つピクセルの数にのみ注意する場合にはST_ValueCountを使う方が速いです。 |
|
|
|
これは、ピクセル値にかかわらずピクセルごとに一つのジオメトリーを返すST_PixelAsPolygons と違います。 |
この記述では LATERAL 結合を使っています。
SELECT val,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))
geomval, ST_AsRasterAgg, ST_Value, ST_Polygon, ST_ValueCount