ラスター内の各ピクセルの重心をポイントジオメトリとして、ピクセルの行、列、バンド、および値とともに返します。
構文
setof record ST_PixelAsCentroids(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);パラメーター
| パラメーター | 説明 |
|---|---|
raster_obj | クエリ対象のラスター。 |
band | クエリ対象のバンド。有効なIDは0から始まります。 |
pyramid | クエリ対象のピラミッドレベル。 |
exclude_nodata_value | NoData ピクセルを除外するかどうかを指定します。デフォルト: true。 |
rowsn | (出力) ピクセルの行番号。 |
columnsn | (出力) ピクセルの列番号。 |
bandsn | (出力) ピクセルのバンドID。 |
value | (出力) ピクセル値。 |
geom | (出力) ピクセルの中心点。ポイントジオメトリとして返されます。 |
説明
返される各レコードには (rowsn, columnsn, bandsn, value, geom) が含まれます。ここで、geom はピクセルの中心にあるポイントジオメトリです。
exclude_nodata_valueがtrueの場合、NoData 値を持つピクセルは結果から除外されます。クエリが期待よりも少ない行を返す場合は、NoData ピクセルがフィルターで除外されていないか確認してください。
この関数は、ref_point が CENTER に設定されている場合、ST_PixelAsPoints と同じ結果を生成します。
例
次のクエリは、id = 10 を持つラスターのバンド1からピクセルを取得し、その後、38.0 を超える値を持つピクセルにフィルターをかけます。
WITH tmp AS (
SELECT (ST_PixelAsCentroids(rast, 1)).*
FROM rast_table
WHERE id = 10 )
SELECT rowsn, columnsn, bandsn, value, ST_AsEWKT(geom) FROM tmp WHERE value > 38.0;出力:
----------------------------------------------------
100 | 100 | 0 | 43 | SRID=4326;POINT(-89.5 0.5)関連項目
ST_PixelAsPoints: 設定可能な参照点を使用してピクセルジオメトリを返します (
ref_pointをCENTERに設定すると同等の結果が得られます)。