このトピックでは、ST_Statistics関数について説明します。 この関数は、バンドのラスタオブジェクトの統計を返します。
構文
構文1
TEXT ST_Statistics(raster raster_obj, integer band);構文2
SETOF RECORD ST_Statistics(raster raster_object, geometry geom, integer band default 0, cstring statics_range default '', boolean rast_coord default true, out cstring name, out integer band, out float8 min, out float8 max, out float8 mean, out float8 sum, out float8 count, out float8 std, out float8 median, out float8 mode);
パラメーター
パラメーター | 説明 |
raster_obj | ラスターオブジェクト |
band | 0 から始まるバンドのシーケンス番号 |
geom | ジオメトリオブジェクト。The geometry object. m値が存在する場合は、ラスタの重みを指定します。 |
stats_range | 統計の範囲。 統計範囲は、元のピクセル値の範囲を指定し、コンマ (,) で区切られた1つ以上の数値で構成されます。 範囲の開始と終了にオープンまたはクローズの範囲を指定できます。 たとえば、
デフォルト値: |
rast_coord | ピクセル座標を使用するかどうかを指定します。 |
name | 範囲の名前。
|
min | 最小値。 |
max | 最大値。 |
mean | 平均値。 |
sum | 合計。 |
count | 総数。 |
std | 標準偏差。 |
median | 中央値。 |
mode | モード。 |
説明
構文1: この関数は、バンドのラスタオブジェクトの統計を返します。 値はJSON形式です。 統計が存在しない場合、関数はnullを返します。
構文2: この関数は、ジオメトリオブジェクトに基づいてラスターの統計を返します。 ジオメトリオブジェクトにm値が存在する場合、値はラスターの重みを指定します。
例
SELECT ST_Statistics(raster_obj, 0) FROM raster_table WHERE id=1;
__________________________________
'{ "min" : 0.00, "max" : 255.00,"mean" : 125.00,"std" : 23.123,"approx" : false}'
-- No range
SELECT (ST_Statistics(raster_obj, 'MultiPoint((0 0 10), (100 100 50), (199 199 100))'::geometry, 0)).*
FROM raster_table WHERE id=1;
name | band | min | max | mean | sum | count | std | median | mode
--------------------------------------------------------------------------------------
full | 2 | 47 | 196 | 140.3125 | 22450 | 160 | 71.8955133770529 | 47 | 196
-- with range
SELECT (ST_Statistics(raster_obj, 'MultiPoint((0 0 10), (100 100 50), (199 199 100))'::geometry, 0, '(0, 10, 20,100,1000]')).*
FROM raster_table
WHERE id=1;
name | band | min | max | mean | sum | count | std | median | mode
--------------------------------------------------------------------------------------
full | 0 | 1 | 202 | 82 | 246 | 3 | 86.5678924313166 | 202 | 1
(0-10] | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1
(10-20] | 0 | | | | | | | |
(20-100] | 0 | 43 | 43 | 43 | 43 | 1 | 0 | 43 | 43
(100-1000] | 0 | 202 | 202 | 202 | 202 | 1 | 0 | 202 | 202
-- Polygon
SELECT id, (ST_Statistics(rast, ST_geomfromtext('POLYGON((50 50,55 50,55 55,50 55,50 50))'),1,'(0, 10, 20,100,1000]')).*
FROM raster_table WHERE id = 1;
id | name | band | min | max | mean | sum | count | std | median | mode
----+------------+------+-----+-----+------------------+------+-------+------------------+--------+------
3 | full | 0 | 48 | 103 | 78.1020408163265 | 3827 | 49 | 21.5815916437107 | 97 | 97
3 | (0-10] | 0 | | | | | | | |
3 | (10-20] | 0 | | | | | | | |
3 | (20-100] | 0 | 48 | 97 | 76.4782608695652 | 3518 | 46 | 21.2855729161028 | 97 | 97
3 | (100-1000] | 0 | 103 | 103 | 103 | 309 | 3 | 0 | 103 | 103
(5 rows)