栅格波段统计和分析函数

ST_Count

ST_Count — 返回栅格或栅格覆盖的给定波段中的像素数。如果未指定波段,则默认为波段1。如果EXCLUDE_NODATA_VALUE设置为TRUE,将只计算不等于NODATA值的像素。

语法

st_count ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

exclude_nodata_value_t

boolean 类型,默认值 TRUE

exclude_nodata_value

boolean 类型

返回值

返回栅格数据。

示例

SELECT rid, ST_Count(ST_SetBandNoDataValue(rast,249)) As exclude_nodata,
ST_Count(ST_SetBandNoDataValue(rast,249),false) As include_nodata
FROM dummy_rast WHERE rid=2;
RID(int)      |EXCLUDE_NODATA(bigint)      |INCLUDE_NODATA(bigint)      |
----------------------------------------------------------------------
2             |23                          |25                          |
总数目:1

ST_CountAgg

ST_CountAgg — 聚合。返回一组栅格的给定波段中的像素数。如果未指定波段,则默认为波段1。如果EXCLUDE_NODATA_VALUE设置为TRUE,将只计算不等于NODATA值的像素。

语法

st_countagg ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型

sample_percent

float8 类型

返回值

返回栅格数据。

示例

WITH foo AS ( SELECT
rast.rast FROM ( SELECT ST_SetValue( ST_SetValue( ST_SetValue( ST_AddBand(ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
, 1, '64BF', 0, 0)
, 1, 1, 1, -10)
, 1, 5, 4, 0)
, 1, 5, 5, 3.14159) AS rast
) AS rast
FULL JOIN (SELECT generate_series(1, 10) AS id) AS id ON 1 = 1 )
SELECT ST_CountAgg(rast, 1, TRUE) FROM foo;
ST_COUNTAGG(bigint)      |
-------------------------
20                       |
总数目:1

drop table test;
CREATE TABLE test AS
    SELECT
        rast.rast
    FROM (
        SELECT ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ) AS rast
    ) AS rast
    FULL JOIN (
        SELECT generate_series(1, 10) AS id
    ) AS id
        ON 1 = 1;


SELECT ST_Count('test', 'rast', 1, TRUE);
ST_COUNT(bigint)      |
----------------------
20                    |
总数目:1

SELECT ST_Count('test', 'rast', 1, FALSE);
ST_COUNT(bigint)      |
----------------------
1000                  |
总数目:1

SELECT ST_Count('test', 'rast', 1);
ST_COUNT(bigint)      |
----------------------
20                    |
总数目:1

SELECT ST_Count('test', 'rast', FALSE);
ST_COUNT(bigint)      |
----------------------
1000                  |
总数目:1

SELECT ST_Count('test', 'rast');
ST_COUNT(bigint)      |
----------------------
20                    |
总数目:1


SELECT ST_CountAgg(rast, 1, TRUE, 1) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
20                       |
总数目:1

SELECT ST_CountAgg(rast, 1, TRUE, 0) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
20                       |
总数目:1

SELECT ST_CountAgg(rast, 1, FALSE, 1) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
1000                     |
总数目:1

SELECT ST_CountAgg(rast, 1, FALSE, 0) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
1000                     |
总数目:1

SELECT ST_CountAgg(rast, 1, TRUE) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
20                       |
总数目:1

SELECT ST_CountAgg(rast, 1, FALSE) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
1000                     |
总数目:1

SELECT ST_CountAgg(rast, TRUE) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
20                       |
总数目:1

SELECT ST_CountAgg(rast, FALSE) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
1000                     |
总数目:1

SELECT ST_CountAgg(rast, 2, TRUE) FROM test;
ST_COUNTAGG(bigint)      |
-------------------------
null                     |
总数目:1
SELECT ST_CountAgg(rast, 1, TRUE, 2) FROM test;
ERROR, Sample percent must be between zero and one


drop table test;

ST_Histogram

ST_Histogram — 返回一组记录,其中汇总了栅格或栅格覆盖率数据分布的单独面元范围。如果未指定,则自动计算垃圾箱的数量。

语法

st_histogram ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型,默认值 TRUE

bins

int 类型,默认值 0

width

float8[] 类型,默认值 NULL

right

boolean 类型,默认值 FALSE

返回值

返回多行 histogram 数据。

示例

SELECT band, (stats) FROM (SELECT rid, band, ST_Histogram(rast, band) As stats FROM dummy_rast CROSS JOIN generate_series(1,3) As band WHERE rid=2) As foo;
BAND(int)      |STATS(HISTOGRAM)      |
-------------------------------------
1              |(249,250,2,0.08)      |
-------------------------------------
1              |(250,251,2,0.08)      |
-------------------------------------
1              |(251,252,1,0.04)      |
-------------------------------------
1              |(252,253,2,0.08)      |
-------------------------------------
1              |(253,254,18,0.72)     |
-------------------------------------
2              |(78,113.2,11,0.44)    |
-------------------------------------
2              |(113.2,148.4,4,0.16)  |
-------------------------------------
2              |(148.4,183.6,4,0.16)  |
-------------------------------------
2              |(183.6,218.8,1,0.04)  |
-------------------------------------
2              |(218.8,254,5,0.2)     |
-------------------------------------
3              |(62,100.4,11,0.44)    |
-------------------------------------
3              |(100.4,138.8,5,0.2)   |
-------------------------------------
3              |(138.8,177.2,4,0.16)  |
-------------------------------------
3              |(177.2,215.6,1,0.04)  |
-------------------------------------
3              |(215.6,254,4,0.16)    |
总数目:15

ST_Histogram

ST_Histogram — 返回一组记录,其中汇总了栅格或栅格覆盖率数据分布的单独面元范围。如果未指定,则自动计算垃圾箱的数量。

语法

st_histogram ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型

bins

int 类型

right

boolean 类型

width

float8[] 类型,默认值 NULL

right_t

boolean 类型,默认值 FALSE

返回值

返回多行 histogram 数据。

示例

SELECT
    round(min, 3),
    round(max, 3),
    count,
    round(percent, 3)
FROM ST_Histogram(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    ),
    1, FALSE, 1, FALSE
);
ROUND(numeric)      |ROUND(numeric)      |COUNT(int)      |ROUND(numeric)      |
----------------------------------------------------------------------------
-10                 |3.142               |100             |-1                  |
总数目:1


SELECT
    round(min, 3),
    round(max, 3),
    count,
    round(percent, 3)
FROM ST_Histogram(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    ),
    1, 0, ARRAY[5]::double precision[], FALSE
);
ROUND(numeric)      |ROUND(numeric)      |COUNT(int)      |ROUND(numeric)      |
----------------------------------------------------------------------------
-10                 |-5                  |1               |0.5                 |
----------------------------------------------------------------------------
-5                  |0                   |0               |0                   |
----------------------------------------------------------------------------
0                   |5                   |1               |0.5                 |
总数目:3

ST_Histogram

ST_Histogram — 返回一组记录,其中汇总了栅格或栅格覆盖率数据分布的单独面元范围。如果未指定,则自动计算垃圾箱的数量。

语法

st_histogram ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型,默认值 1

exclude_nodata_value

boolean 类型,默认值 TRUE

bins

int 类型,默认值 0

width

float8[] 类型,默认值 NULL

right

boolean 类型,默认值 FALSE

返回值

返回多行 histogram 数据。

示例

drop table test_histogram;

CREATE TABLE test_histogram AS
    SELECT
        rast.rast
    FROM (
        SELECT ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ) AS rast
    ) AS rast
    FULL JOIN (
        SELECT generate_series(1, 10) AS id
    ) AS id
        ON 1 = 1;


SELECT
    round(min, 3),
    round(max, 3),
    count,
    round(percent, 3)
FROM ST_Histogram('TEST_HISTOGRAM', 'RAST', 1, TRUE, 0, NULL, FALSE);
ROUND(numeric)      |ROUND(numeric)      |COUNT(int)      |ROUND(numeric)      |
----------------------------------------------------------------------------
-10                 |-3.429              |10              |0.5                 |
----------------------------------------------------------------------------
-3.429              |3.142               |10              |0.5                 |
总数目:2

ST_Histogram

ST_Histogram — 返回一组记录,其中汇总了栅格或栅格覆盖率数据分布的单独面元范围。如果未指定,则自动计算垃圾箱的数量。

语法

st_histogram ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

exclude_nodata_value

boolean 类型

bins

int 类型

right

boolean 类型

返回值

返回多行 histogram 数据。

示例

SELECT
    round(min, 3),
    round(max, 3),
    count,
    round(percent, 3)
FROM ST_Histogram('TEST_HISTOGRAM', 'RAST', 1, FALSE, 5, FALSE);
ROUND(numeric)      |ROUND(numeric)      |COUNT(int)      |ROUND(numeric)      |
----------------------------------------------------------------------------
-10                 |-7.372              |10              |0.01                |
----------------------------------------------------------------------------
-7.372              |-4.743              |0               |0                   |
----------------------------------------------------------------------------
-4.743              |-2.115              |0               |0                   |
----------------------------------------------------------------------------
-2.115              |0.513               |980             |0.98                |
----------------------------------------------------------------------------
0.513               |3.142               |10              |0.01                |
总数目:5

ST_Histogram

ST_Histogram — 返回一组记录,其中汇总了栅格或栅格覆盖率数据分布的单独面元范围。如果未指定,则自动计算垃圾箱的数量。

语法

st_histogram ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

bins

int 类型

width

float8[] 类型,默认值 NULL

right

boolean 类型,默认值 FALSE

返回值

返回多行 histogram 数据。

示例

SELECT
    round(min, 3),
    round(max, 3),
    count,
    round(percent, 3)
FROM ST_Histogram('TEST_HISTOGRAM', 'RAST', 1, 10);
ROUND(numeric)      |ROUND(numeric)      |COUNT(int)      |ROUND(numeric)      |
----------------------------------------------------------------------------
-10                 |-8.686              |10              |0.5                 |
----------------------------------------------------------------------------
-8.686              |-7.372              |0               |0                   |
----------------------------------------------------------------------------
-7.372              |-6.058              |0               |0                   |
----------------------------------------------------------------------------
-6.058              |-4.743              |0               |0                   |
----------------------------------------------------------------------------
-4.743              |-3.429              |0               |0                   |
----------------------------------------------------------------------------
-3.429              |-2.115              |0               |0                   |
----------------------------------------------------------------------------
-2.115              |-0.801              |0               |0                   |
----------------------------------------------------------------------------
-0.801              |0.513               |0               |0                   |
----------------------------------------------------------------------------
0.513               |1.827               |0               |0                   |
----------------------------------------------------------------------------
1.827               |3.142               |10              |0.5                 |
总数目:10

ST_Histogram

ST_Histogram — 返回一组记录,其中汇总了栅格或栅格覆盖率数据分布的单独面元范围。如果未指定,则自动计算垃圾箱的数量。

语法

st_histogram ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

bins

int 类型

right

boolean 类型

返回值

返回多行 histogram 数据。

示例

SELECT
    round(min, 3),
    round(max, 3),
    count,
    round(percent, 3)
FROM ST_Histogram('TEST_HISTOGRAM', 'RAST', 1, 3, FALSE);
ROUND(numeric)      |ROUND(numeric)      |COUNT(int)      |ROUND(numeric)      |
----------------------------------------------------------------------------
-10                 |-5.619              |10              |0.5                 |
----------------------------------------------------------------------------
-5.619              |-1.239              |0               |0                   |
----------------------------------------------------------------------------
-1.239              |3.142               |10              |0.5                 |
总数目:3

ST_Quantile

ST_Quantile — 在样本或总体的上下文中计算栅格或栅格表覆盖率的分位数。因此,可以将值检查为位于栅格的25%、50%、75%的百分位数。

语法

st_quantile ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型,默认值 TRUE

quantiles_t

float8[] 类型,默认值 NULL

quantiles

float8[] 类型

nband_t

int 类型,默认值 1

返回值

返回多行 quantile 数据。

示例

SELECT (pvq) FROM (SELECT ST_Quantile(rast, ARRAY[0.25,0.75]) As pvq FROM dummy_rast WHERE rid=2) As foo ORDER BY (pvq).quantile;
PVQ(QUANTILE)      |
-------------------
(0.25,252)         |
-------------------
(0.75,254)         |
总数目:2


SELECT ST_Quantile(rast, 0.75) As value FROM dummy_rast WHERE rid=2;
VALUE(double precision)      |
-----------------------------
254                          |
总数目:1

ST_Quantile

ST_Quantile — 在样本或总体的上下文中计算栅格或栅格表覆盖率的分位数。因此,可以将值检查为位于栅格的25%、50%、75%的百分位数。

语法

st_quantile ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型,默认值 1

exclude_nodata_value

boolean 类型,默认值 TRUE

quantiles

float8[] 类型,默认值 NULL

返回值

返回多行 quantile 数据。

示例

drop table test_quantile;

CREATE TABLE test_quantile AS
    SELECT
        rast.rast
    FROM (
        SELECT ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ) AS rast
    ) AS rast
    FULL JOIN (
        SELECT generate_series(1, 2) AS id
    ) AS id
        ON 1 = 1;


SELECT
    round(quantile, 3),
    round(value, 3)
FROM ST_Quantile('TEST_QUANTILE', 'RAST', 1, TRUE, ARRAY[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]::double precision[]);
ROUND(numeric)      |ROUND(numeric)      |
----------------------------------------
0                   |-10                 |
----------------------------------------
0.1                 |-10                 |
----------------------------------------
0.2                 |-10                 |
----------------------------------------
0.3                 |-10                 |
----------------------------------------
0.4                 |3.142               |
----------------------------------------
0.5                 |3.142               |
----------------------------------------
0.6                 |3.142               |
----------------------------------------
0.7                 |3.142               |
----------------------------------------
0.8                 |3.142               |
----------------------------------------
0.9                 |3.142               |
----------------------------------------
1                   |3.142               |
总数目:11

ST_Quantile

ST_Quantile — 在样本或总体的上下文中计算栅格或栅格表覆盖率的分位数。因此,可以将值检查为位于栅格的25%、50%、75%的百分位数。

语法

st_quantile ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

quantiles

float8[] 类型

返回值

返回多行 quantile 数据。

示例

SELECT
    round(quantile, 3),
    round(value, 3)
FROM ST_Quantile('TEST_QUANTILE', 'RAST', 1, ARRAY[0.05, 0.95]::double precision[]);
ROUND(numeric)      |ROUND(numeric)      |
----------------------------------------
0.05                |-10                 |
----------------------------------------
0.95                |3.142               |
总数目:2


SELECT
    round(quantile, 3),
    round(value, 3)
FROM ST_Quantile('TEST_QUANTILE', 'RAST', ARRAY[0.05, 0.95]::double precision[]);
ROUND(numeric)      |ROUND(numeric)      |
----------------------------------------
0.05                |-10                 |
----------------------------------------
0.95                |3.142               |
总数目:2

ST_Quantile

ST_Quantile — 在样本或总体的上下文中计算栅格或栅格表覆盖率的分位数。因此,可以将值检查为位于栅格的25%、50%、75%的百分位数。

语法

st_quantile ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型

quantile

float8 类型

quantile_t

float8 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT round(
    ST_Quantile(
        ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ),
        1, FALSE, 0.05
    ), 3
);
ROUND(numeric)      |
--------------------
0                   |
总数目:1


SELECT round(
    ST_Quantile(
        ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ),
        1, 0.95
    ), 3
);
ROUND(numeric)      |
--------------------
2.485               |
总数目:1


SELECT round(
    ST_Quantile(
        ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ),
        FALSE, 0.7
    ), 3
);
ROUND(numeric)      |
--------------------
0                   |
总数目:1


SELECT round(
    ST_Quantile(
        ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ),
        0.45::float8
    ), 3
);
ROUND(numeric)      |
--------------------
-4.086              |
总数目:1

ST_Quantile

ST_Quantile — 在样本或总体的上下文中计算栅格或栅格表覆盖率的分位数。因此,可以将值检查为位于栅格的25%、50%、75%的百分位数。

语法

st_quantile ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

exclude_nodata_value

boolean 类型

quantile

float8 类型

返回值

返回浮点数数据。

示例

SELECT round(ST_Quantile('TEST_QUANTILE', 'RAST', 1, FALSE, 0.95), 3);
ROUND(numeric)      |
--------------------
0                   |
总数目:1

ST_Quantile

ST_Quantile — 在样本或总体的上下文中计算栅格或栅格表覆盖率的分位数。因此,可以将值检查为位于栅格的25%、50%、75%的百分位数。

语法

st_quantile ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

quantile

float8 类型

exclude_nodata_value

boolean 类型

quantile_t

float8 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT round(ST_Quantile('TEST_QUANTILE', 'RAST', 1, 0.95), 3);
ROUND(numeric)      |
--------------------
3.142               |
总数目:1

SELECT round(ST_Quantile('TEST_QUANTILE', 'RAST', TRUE, 0.95), 3);
ROUND(numeric)      |
--------------------
3.142               |
总数目:1

SELECT round(ST_Quantile('TEST_QUANTILE', 'RAST', 0.5), 3);
ROUND(numeric)      |
--------------------
3.142               |
总数目:1

ST_SummaryStats

ST_SummaryStats — 返回由栅格或栅格Coverage的给定栅格波段的COUNT、SUM、Mean、STDDEV、MIN、MAX组成的摘要统计信息。假定带区1未指定带区。

语法

st_summarystats ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

exclude_nodata_value_t

boolean 类型,默认值 TRUE

exclude_nodata_value

boolean 类型

rastertable

text 类型

rastercolumn

text 类型

返回值

返回多行 summarystats 数据。

示例

SELECT
    count,
    round(sum, 3),
    round(mean, 3),
    round(stddev, 3),
    round(min, 3),
    round(max, 3)
FROM ST_SummaryStats(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
    , TRUE
);
COUNT(int)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |
--------------------------------------------------------------------------------------------------------------------
2               |-6.858              |-3.429              |6.571               |-10                 |3.142               |
总数目:1


SELECT round(mean, 3), round(stddev, 3) FROM ST_SummaryStats(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
    , 2
);
ROUND(numeric)      |ROUND(numeric)      |
----------------------------------------
null                |null                |
总数目:1


drop table test_summarystats;

CREATE TABLE test_summarystats as
    SELECT
        rast.rast
    FROM (
        SELECT ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ) AS rast
    ) AS rast
    FULL JOIN (
        SELECT generate_series(1, 10) AS id
    ) AS id
        ON 1 = 1;


SELECT
    count,
    round(sum, 3),
    round(mean, 3),
    round(stddev, 3),
    round(min, 3),
    round(max, 3)
FROM ST_SummaryStats('test_summarystats', 'rast', 1, TRUE);
COUNT(int)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |
--------------------------------------------------------------------------------------------------------------------
20              |-68.584             |-3.429              |6.571               |-10                 |3.142               |
总数目:1

ST_SummaryStatsAgg

ST_SummaryStatsAgg — 聚合。返回由一组栅格的给定栅格波段的COUNT、SUM、Mean、STDDEV、MIN、MAX组成的摘要统计信息。假定带区1未指定带区。

语法

st_summarystatsagg ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型

sample_percent

float8 类型

返回值

返回 summarystats 数据。

示例

WITH foo AS (
SELECT
rast.rast
FROM (
SELECT ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
, 1, '64BF', 0, 0
)
, 1, 1, 1, -10
)
, 1, 5, 4, 0
)
, 1, 5, 5, 3.14159
) AS rast
) AS rast
FULL JOIN (
SELECT generate_series(1, 10) AS id
) AS id
ON 1 = 1
)
SELECT
(stats).count,
round((stats).sum, 3),
round((stats).mean, 3),
round((stats).stddev, 3),
round((stats).min, 3),
round((stats).max, 3)
FROM (
SELECT
ST_SummaryStatsAgg(rast, 1, TRUE, 1) AS stats
FROM foo
) bar;


SELECT
    (stats).count,
    round((stats).sum, 3),
    round((stats).mean, 3),
    round((stats).stddev, 3),
    round((stats).min, 3),
    round((stats).max, 3)
FROM (
    SELECT
        ST_SummaryStatsAgg(rast, TRUE, 1) AS stats
    FROM test_summarystats
) foo;
COUNT(int)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |
--------------------------------------------------------------------------------------------------------------------
20              |-68.584             |-3.429              |6.571               |-10                 |3.142               |
总数目:1


SELECT
    (stats).count,
    round((stats).sum, 3),
    round((stats).mean, 3),
    round((stats).stddev, 3),
    round((stats).min, 3),
    round((stats).max, 3)
FROM (
    SELECT
        ST_SummaryStatsAgg(rast, 1, TRUE) AS stats
    FROM test_summarystats
) foo;
COUNT(int)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |ROUND(numeric)      |
--------------------------------------------------------------------------------------------------------------------
20              |-68.584             |-3.429              |6.571               |-10                 |3.142               |
总数目:1

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rast

raster 类型

nband_t

int 类型,默认值 1

exclude_nodata_value

boolean 类型,默认值 TRUE

searchvalues_t

float8[] 类型,默认值 NULL

roundto

float8 类型,默认值 0

返回值

返回多行 valuecount 数据。

示例

SELECT (pvc) FROM (SELECT ST_ValueCount(rast) As pvc FROM dummy_rast WHERE rid=2) As foo ORDER BY (pvc);
PVC(VALUECOUNT)      |
---------------------
(249,2)              |
---------------------
(250,2)              |
---------------------
(251,1)              |
---------------------
(252,2)              |
---------------------
(253,6)              |
---------------------
(254,12)             |
总数目:6

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rast

raster 类型

nband

int 类型,默认值 0

searchvalues

float8[] 类型

roundto

float8 类型,默认值 0

返回值

返回多行 valuecount 数据。

示例

SELECT round(value, 3), count FROM ST_ValueCount(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
, 1, TRUE, ARRAY[]::double precision[], 0);
ROUND(numeric)      |COUNT(int)      |
------------------------------------
-10                 |1               |
------------------------------------
3.142               |1               |
总数目:2


SELECT round(value, 3), count FROM ST_ValueCount(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
, ARRAY[-10], 0);
ROUND(numeric)      |COUNT(int)      |
------------------------------------
-10                 |1               |
总数目:1

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型,默认值 1

exclude_nodata_value

boolean 类型,默认值 TRUE

searchvalues

float8[] 类型,默认值 NULL

roundto

float8 类型,默认值 0

返回值

返回多行 valuecount 数据。

示例

drop table test;
CREATE TABLE test AS
    SELECT
        rast.rast
    FROM (
        SELECT ST_SetValue(
            ST_SetValue(
                ST_SetValue(
                    ST_AddBand(
                        ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                        , 1, '64BF', 0, 0
                    )
                    , 1, 1, 1, -10
                )
                , 1, 5, 4, 0
            )
            , 1, 5, 5, 3.14159
        ) AS rast
    ) AS rast
    FULL JOIN (
        SELECT generate_series(1, 10) AS id
    ) AS id
        ON 1 = 1;


SELECT round(value, 3), count FROM ST_ValueCount('TEST', 'RAST', 1, FALSE, NULL::double precision[], 0);
ROUND(numeric)      |COUNT(int)      |
------------------------------------
-10                 |10              |
------------------------------------
0                   |980             |
------------------------------------
3.142               |10              |
总数目:3

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型,默认值 0

searchvalues

float8[] 类型,默认值 NULL

roundto

float8 类型,默认值 0

返回值

返回多行 valuecount 数据。

示例

SELECT round(value, 3), count FROM ST_ValueCount('test', 'rast', 1, ARRAY[-10]::double precision[], 0);
ROUND(numeric)      |COUNT(int)      |
------------------------------------
-10                 |10              |
总数目:1

SELECT round(value, 3), count FROM ST_ValueCount('test', 'rast', NULL::double precision[], 0.1);
ROUND(numeric)      |COUNT(int)      |
------------------------------------
-10                 |10              |
------------------------------------
3.1                 |10              |
总数目:2

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rast

raster 类型

nband

int 类型

exclude_nodata_value

boolean 类型

searchvalue

float8 类型

roundto

float8 类型,默认值 0

返回值

返回 int 数据。

示例

SELECT ST_ValueCount(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
, 1, TRUE, 3.14, 0.19);
ST_VALUECOUNT(int)      |
------------------------
1                       |
总数目:1

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rast

raster 类型

nband

int 类型

searchvalue

float8 类型

roundto

float8 类型,默认值 0

返回值

返回 int 数据。

示例

SELECT ST_ValueCount(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
, 1, -10, 0.1);
ST_VALUECOUNT(int)      |
------------------------
1                       |
总数目:1


SELECT ST_ValueCount(
    ST_SetValue(
        ST_SetValue(
            ST_SetValue(
                ST_AddBand(
                    ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
                    , 1, '64BF', 0, 0
                )
                , 1, 1, 1, -10
            )
            , 1, 5, 4, 0
        )
        , 1, 5, 5, 3.14159
    )
, -10::float8, 10::float8);
ST_VALUECOUNT(int)      |
------------------------
1                       |
总数目:1

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

exclude_nodata_value

boolean 类型

searchvalue

float8 类型

roundto

float8 类型,默认值 0

返回值

返回 int 数据。

示例

SELECT ST_ValueCount('test', 'rast', 1, TRUE, NULL::double precision, 0);
ST_VALUECOUNT(int)      |
------------------------
null                    |
总数目:1

ST_ValueCount

ST_ValueCount — 返回一组记录,其中包含像素带值和具有给定值的栅格(或栅格覆盖)的给定波段中的像素数的计数。如果未指定带,则默认为带1。默认情况下,不计算nodata值像素。并且输出像素中的所有其他值,并且将像素带值四舍五入为最接近的整数。

语法

st_valuecount ::=

参数

rastertable

text 类型

rastercolumn

text 类型

nband

int 类型

searchvalue

float8 类型

roundto

float8 类型,默认值 0

返回值

返回 int 数据。

示例

SELECT ST_ValueCount('test', 'rast', 1, 3.14, 1);
ST_VALUECOUNT(int)      |
------------------------
10                      |
总数目:1

SELECT ST_ValueCount('test', 'rast', 3.1::float8, 0.1::float8);
ST_VALUECOUNT(int)      |
------------------------
10                      |
总数目:1