ST_Statistics

获取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

用于描述统计区段,表示原始像素值范围,可以由一个或多个数值构成,中间用英文逗号(,)进行分隔 。

起始和结束支持指定开闭域关系,例如[300,400,500) (300,400,500],边界符号含义如下:

  • (表示大于。

  • )表示小于。

  • [表示大于等于。

  • ]表示小于等于。

默认值:(],表示空区间。

rast_coord

是否为像素坐标。

name

范围名称。

  • 表示全部像素:full。

  • 区间范围:(300, 400]

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)