擷取raster對象的某一個波段的統計資訊。
文法
文法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 | Raster對象。 |
band | 波段序號,從0開始。 |
geom | 幾何對象,如果geom有M值,其表示對應的權重資訊。 |
stats_range | 用於描述統計區段,表示原始像素值範圍,可以由一個或多個數值構成,中間用英文逗號(,)進行分隔 。 起始和結束支援指定開閉域關係,例如
預設值: |
rast_coord | 是否為像素座標。 |
name | 範圍名稱。
|
min | 最小值。 |
max | 最大值。 |
mean | 平均值。 |
sum | 和。 |
count | 數量。 |
std | 標準差。 |
median | 中位元。 |
mode | 眾數。 |
描述
文法1:擷取raster對象的某一個波段的統計資訊的JSON格式。如果不存在統計值,則返回空值。
文法2:根據一個geom擷取對應的統計資訊,如果geom有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)