栅格处理函数

ST_Clip

ST_Clip — 返回由输入几何图形剪裁的栅格。如果未指定波段编号,则处理所有波段。如果 crop 未指定或为TRUE,则将裁剪输出栅格。

语法

st_clip ::=

参数

rast

raster 类型

nbandarr

int[] 类型

geom

geometry 类型

nodataval_t

float8[] 类型,默认值 NULL

crop_t

boolean 类型,默认值 TRUE

nband

int 类型

nodataval

float8 类型

crop

boolean 类型

返回值

返回栅格数据。

示例

DROP TABLE raster_clip;

CREATE TABLE raster_clip (
    rid integer,
    rast raster
);

DROP TABLE geom_clip;

CREATE TABLE geom_clip (
    gid integer,
    geom geometry
);

DROP TABLE raster_clip_out;

CREATE TABLE raster_clip_out (
    tid integer,
    rid integer,
    gid integer,
    rast raster
);

CREATE OR REPLACE PROCEDURE insert_into_raster_clip(rid integer, rast raster) is PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
        INSERT INTO raster_clip VALUES (rid, rast);
        commit;
    END;
    LANGUAGE 'ploscar';

CREATE OR REPLACE FUNCTION make_test_raster(
    rid integer,
    width integer DEFAULT 2,
    height integer DEFAULT 2,
    ul_x double precision DEFAULT 0,
    ul_y double precision DEFAULT 0,
    skew_x double precision DEFAULT 0,
    skew_y double precision DEFAULT 0,
    initvalue double precision DEFAULT 1,
    nodataval double precision DEFAULT 0
)
    RETURNS void
    AS
    DECLARE
        x int;
        y int;
        rast raster;
    BEGIN
        rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, -1, skew_x, skew_y, 0);
        rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval);

        insert_into_raster_clip(rid, rast);

        RETURN;
    END;
    LANGUAGE 'ploscar';


-- Define three rasters
-- The first one 1 band with a novalue defined and one pixel set to nodata value
SELECT make_test_raster(1, 4, 4, 0, 0, 0, 0, 1, 0);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1
UPDATE raster_clip SET rast = ST_SetValue(rast, 3, 2, NULL) WHERE rid = 1;


-- The second one 3 bands with a novalue defined for the first two band but not set for the third band and one pixel set to nodata value in every band
SELECT make_test_raster(2, 4, 4, 0, 0, 0, 0, 10, 0);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1
UPDATE raster_clip SET rast = ST_SetValue(rast, 3, 2, NULL) WHERE rid = 2;
UPDATE raster_clip SET rast = ST_AddBand(rast, '8BUI'::text, 2, 0) WHERE rid = 2;
UPDATE raster_clip SET rast = ST_SetValue(rast, 2, 3, 2, NULL) WHERE rid = 2;
UPDATE raster_clip SET rast = ST_AddBand(rast, '8BUI'::text, 3, NULL) WHERE rid = 2;

-- The third one 1 band skewed 40 degree, (Can't test this yet as ST_AsRaster() still produces badly aligned raster. See ticket #1574)
--SELECT make_test_raster(3, 4, 4, 0, 0, 0, 0, 1, 0);
--UPDATE raster_clip SET rast = ST_SetSkew(rast, -0.15, -0.15) WHERE rid = 3;
--UPDATE raster_clip SET rast = ST_SetValue(rast, 3, 2, NULL) WHERE rid = 3;

-- Add a first polygon small and outside the extent of the raster
INSERT INTO geom_clip VALUES (1, ST_Buffer(ST_SetSRID(ST_MakePoint(-1, 1), 0), 0.2));
-- Add a second polygon small, inside the extent of the raster but in the nodata value pixel
INSERT INTO geom_clip VALUES (2, ST_Buffer(ST_SetSRID(ST_MakePoint(2.5, -1.5), 0), 0.2));
-- Add a second polygon small but inside the extent of the raster
INSERT INTO geom_clip VALUES (3, ST_Buffer(ST_SetSRID(ST_MakePoint(1.5, -1.5), 0), 0.2));
-- Add a third polygon big cutting the raster
INSERT INTO geom_clip VALUES (4, ST_Buffer(ST_SetSRID(ST_MakePoint(4, -2.5), 0), 2.8));
-- Add a fourth polygon englobing the two first rasters
INSERT INTO geom_clip VALUES (5, ST_Buffer(ST_SetSRID(ST_MakePoint(2, -2), 0), 3));

DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision);
drop PROCEDURE insert_into_raster_clip;



SELECT 1, rid, gid, ST_Clip(rast, geom, false)
FROM raster_clip, geom_clip;
?COLUMN?(int)      |RID(int)      |GID(int)      |ST_CLIP(RASTER)      |
--------------------------------------------------------------------
1                  |1             |1             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |06400000000000000000|
                   |              |              |00000000000000000    |
--------------------------------------------------------------------
1                  |1             |2             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |06400000000000000000|
                   |              |              |00000000000000000    |
--------------------------------------------------------------------
1                  |1             |3             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |04400000000000001000|
                   |              |              |00000000000000000    |
--------------------------------------------------------------------
1                  |1             |4             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |04400000001010001000|
                   |              |              |10001010100010101    |
--------------------------------------------------------------------
1                  |1             |5             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |04400010101010101000|
                   |              |              |10101010101010101    |
--------------------------------------------------------------------
1                  |2             |1             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |06400000000000000000|
                   |              |              |00000000000000000640|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400000|
                   |              |              |00000000000000000000|
                   |              |              |000000000            |
--------------------------------------------------------------------
1                  |2             |2             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |06400000000000000000|
                   |              |              |00000000000000000640|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400000|
                   |              |              |00000000003000000000|
                   |              |              |000000000            |
--------------------------------------------------------------------
1                  |2             |3             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |0440000000000000A000|
                   |              |              |00000000000000000440|
                   |              |              |00000000000020000000|
                   |              |              |00000000000000400000|
                   |              |              |00000000300000000000|
                   |              |              |000000000            |
--------------------------------------------------------------------
1                  |2             |4             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |0440000000A0A000A000|
                   |              |              |A000A0A0A000A0A0A440|
                   |              |              |00000020200020002000|
                   |              |              |20202000202020400000|
                   |              |              |00303000303030003030|
                   |              |              |300030303            |
--------------------------------------------------------------------
1                  |2             |5             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044000A0A0A0A0A0A000|
                   |              |              |A0A0A0A0A0A0A0A0A440|
                   |              |              |00202020202020002020|
                   |              |              |20202020202020400030|
                   |              |              |30303030303030303030|
                   |              |              |303030303            |
总数目:10


SELECT 2, rid, gid, ST_Clip(rast, geom, true)
FROM raster_clip, geom_clip;
?COLUMN?(int)      |RID(int)      |GID(int)      |ST_CLIP(RASTER)      |
--------------------------------------------------------------------
2                  |1             |1             |010000000000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |0                    |
--------------------------------------------------------------------
2                  |1             |2             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000040000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |0640000000000        |
--------------------------------------------------------------------
2                  |1             |3             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |0440001000000        |
--------------------------------------------------------------------
2                  |1             |4             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000300040|
                   |              |              |04400000101010001010|
                   |              |              |101010101            |
--------------------------------------------------------------------
2                  |1             |5             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |04400010101010101000|
                   |              |              |10101010101010101    |
--------------------------------------------------------------------
2                  |2             |1             |010000000000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |0                    |
--------------------------------------------------------------------
2                  |2             |2             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000040000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |06400000000006400000|
                   |              |              |00000040003000000    |
--------------------------------------------------------------------
2                  |2             |3             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |044000A0000004400020|
                   |              |              |00000040003000000    |
--------------------------------------------------------------------
2                  |2             |4             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000300040|
                   |              |              |04400000A0A0A000A0A0|
                   |              |              |A0A0A0A0A44000002020|
                   |              |              |20002020202020202040|
                   |              |              |00003030303030303030|
                   |              |              |30303                |
--------------------------------------------------------------------
2                  |2             |5             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044000A0A0A0A0A0A000|
                   |              |              |A0A0A0A0A0A0A0A0A440|
                   |              |              |00202020202020002020|
                   |              |              |20202020202020400030|
                   |              |              |30303030303030303030|
                   |              |              |303030303            |
总数目:10


SELECT 3, rid, gid, ST_Clip(rast, geom, ARRAY[255, 254, 253], false)
FROM raster_clip, geom_clip;
?COLUMN?(int)      |RID(int)      |GID(int)      |ST_CLIP(RASTER)      |
--------------------------------------------------------------------
3                  |1             |1             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |064FFFFFFFFFFFFFFFFF|
                   |              |              |FFFFFFFFFFFFFFFFF    |
--------------------------------------------------------------------
3                  |1             |2             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |064FFFFFFFFFFFFFFFFF|
                   |              |              |FFFFFFFFFFFFFFFFF    |
--------------------------------------------------------------------
3                  |1             |3             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FFFFFFFFFFFF01FFF|
                   |              |              |FFFFFFFFFFFFFFFFF    |
--------------------------------------------------------------------
3                  |1             |4             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FFFFFF0101FF01FF0|
                   |              |              |1FF010101FF010101    |
--------------------------------------------------------------------
3                  |1             |5             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FF010101010101FF0|
                   |              |              |10101010101010101    |
--------------------------------------------------------------------
3                  |2             |1             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |064FFFFFFFFFFFFFFFFF|
                   |              |              |FFFFFFFFFFFFFFFFF64F|
                   |              |              |EFEFEFEFEFEFEFEFEFEF|
                   |              |              |EFEFEFEFEFEFE64FDFDF|
                   |              |              |DFDFDFDFDFDFDFDFDFDF|
                   |              |              |DFDFDFDFD            |
--------------------------------------------------------------------
3                  |2             |2             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |064FFFFFFFFFFFFFFFFF|
                   |              |              |FFFFFFFFFFFFFFFFF64F|
                   |              |              |EFEFEFEFEFEFEFEFEFEF|
                   |              |              |EFEFEFEFEFEFE44FDFDF|
                   |              |              |DFDFDFDFD03FDFDFDFDF|
                   |              |              |DFDFDFDFD            |
--------------------------------------------------------------------
3                  |2             |3             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FFFFFFFFFFFF0AFFF|
                   |              |              |FFFFFFFFFFFFFFFFF44F|
                   |              |              |EFEFEFEFEFE02FEFEFEF|
                   |              |              |EFEFEFEFEFEFE44FDFDF|
                   |              |              |DFDFDFD03FDFDFDFDFDF|
                   |              |              |DFDFDFDFD            |
--------------------------------------------------------------------
3                  |2             |4             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FFFFFF0A0AFF0AFF0|
                   |              |              |AFF0A0A0AFF0A0A0A44F|
                   |              |              |EFEFE0202FE02FE02FE0|
                   |              |              |20202FE02020244FDFDF|
                   |              |              |D0303FD030303FD03030|
                   |              |              |3FD030303            |
--------------------------------------------------------------------
3                  |2             |5             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FF0A0A0A0A0A0AFF0|
                   |              |              |A0A0A0A0A0A0A0A0A44F|
                   |              |              |E020202020202FE02020|
                   |              |              |202020202020244FD030|
                   |              |              |30303030303030303030|
                   |              |              |303030303            |
总数目:10


SELECT 4, rid, gid, ST_Clip(rast, geom, ARRAY[255, 254, 253], true)
FROM raster_clip, geom_clip;
?COLUMN?(int)      |RID(int)      |GID(int)      |ST_CLIP(RASTER)      |
--------------------------------------------------------------------
4                  |1             |1             |010000000000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |0                    |
--------------------------------------------------------------------
4                  |1             |2             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000040000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |064FFFFFFFFFF        |
--------------------------------------------------------------------
4                  |1             |3             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |044FF01FFFFFF        |
--------------------------------------------------------------------
4                  |1             |4             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000300040|
                   |              |              |044FFFF010101FF01010|
                   |              |              |101010101            |
--------------------------------------------------------------------
4                  |1             |5             |010000010000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FF010101010101FF0|
                   |              |              |10101010101010101    |
--------------------------------------------------------------------
4                  |2             |1             |010000000000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |0                    |
--------------------------------------------------------------------
4                  |2             |2             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000040000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |064FFFFFFFFFF64FEFEF|
                   |              |              |EFEFE44FD03FDFDFD    |
--------------------------------------------------------------------
4                  |2             |3             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |000000000F0BF0000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000200020|
                   |              |              |044FF0AFFFFFF44FE02F|
                   |              |              |EFEFE44FD03FDFDFD    |
--------------------------------------------------------------------
4                  |2             |4             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F000000000000F03F000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000300040|
                   |              |              |044FFFF0A0A0AFF0A0A0|
                   |              |              |A0A0A0A0A44FEFE02020|
                   |              |              |2FE0202020202020244F|
                   |              |              |DFD03030303030303030|
                   |              |              |30303                |
--------------------------------------------------------------------
4                  |2             |5             |010000030000000000000|
                   |              |              |0F03F000000000000F0B|
                   |              |              |F0000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000000000|
                   |              |              |00000000000000400040|
                   |              |              |044FF0A0A0A0A0A0AFF0|
                   |              |              |A0A0A0A0A0A0A0A0A44F|
                   |              |              |E020202020202FE02020|
                   |              |              |202020202020244FD030|
                   |              |              |30303030303030303030|
                   |              |              |303030303            |
总数目:10

DROP TABLE geom_clip;
DROP TABLE raster_clip;
DROP TABLE raster_clip_out;

ST_ColorMap

ST_ColorMap — 从源栅格和指定的标注栏中创建最多包含四个8BUI标注栏(灰度、RGB、RGBA)的新栅格。如果未指定,则假定为带1。

语法

st_colormap ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

colormap_t

text 类型,默认值 'grayscale'

method

text 类型,默认值 'INTERPOLATE'

colormap

text 类型

返回值

返回栅格数据。

示例

DROP TABLE IF EXISTS funky_shapes;
CREATE TABLE funky_shapes(rast raster);

INSERT INTO funky_shapes(rast)
WITH ref AS
(
SELECT ST_MakeEmptyRaster( 200, 200, 0, 200, 1, -1, 0, 0) AS rast
)
SELECT ST_Union(rast)
FROM
(
SELECT ST_AsRaster( ST_Rotate(ST_Buffer(ST_GeomFromText('LINESTRING(0 2,50 50,150 150,125 50)'),i*2),
pi() * i * 0.125, ST_Point(50,50)),ref.rast, '8BUI'::text, i * 5 ) AS rast
FROM ref CROSS JOIN generate_series(1, 10, 3) AS i
)
AS shapes;


SELECT
ST_NumBands(rast) As n_orig,
ST_NumBands(ST_ColorMap(rast,1, 'greyscale')) As ngrey,
ST_NumBands(ST_ColorMap(rast,1, 'pseudocolor')) As npseudo,
ST_NumBands(ST_ColorMap(rast,1, 'fire')) As nfire,
ST_NumBands(ST_ColorMap(rast,1, 'bluered')) As nbluered,
ST_NumBands(ST_ColorMap(rast,1, '
100% 255 0 0
80% 160 0 0
50% 130 0 0
30% 30 0 0
20% 60 0 0
0% 0 0 0
nv 255 255 255
')) As nred
FROM funky_shapes;
N_ORIG(int)      |NGREY(int)      |NPSEUDO(int)      |NFIRE(int)      |NBLUERED(int)      |NRED(int)      |
-----------------------------------------------------------------------------------------------------
1                |1               |4                 |4               |4                  |3              |
总数目:1

ST_Grayscale

ST_Grayscale — 根据源栅格和表示红色、绿色和蓝色的指定波段创建新的One-8BUI波段栅格

语法

st_grayscale ::=

参数

rast

raster 类型

redband

int 类型,默认值 1

greenband

int 类型,默认值 2

blueband

int 类型,默认值 3

rastbandargset

rastbandarg[] 类型

extenttype

text 类型,默认值 'INTERSECTION'

返回值

返回栅格数据。

示例

/*
WITH apple AS (
SELECT ST_AddBand(
ST_MakeEmptyRaster(350, 246, 0, 0, 1, -1, 0, 0, 0),
'/root/llq/stgis/tmp/oscar/oscargis/doc/html/images/apple.png'::text,
NULL::int[]
) AS rast
)
SELECT
ST_AsPNG(rast) AS original_png,
ST_AsPNG(ST_Grayscale(rast)) AS grayscale_png
FROM apple;


WITH apple AS (
SELECT ST_AddBand(
ST_MakeEmptyRaster(350, 246, 0, 0, 1, -1, 0, 0, 0),
'/root/llq/stgis/tmp/oscar/oscargis/doc/html/images/apple.png'::text,
NULL::int[]
) AS rast
)
SELECT
ST_AsPNG(rast) AS original_png,
ST_AsPNG(ST_Grayscale(
ARRAY[
ROW(rast, 1)::rastbandarg, -- red
ROW(rast, 2)::rastbandarg, -- green
ROW(rast, 3)::rastbandarg -- blue
]::rastbandarg[]
)) AS grayscale_png
FROM apple;
*/

ST_Intersection

ST_Intersection — 返回一个栅格或一组几何体-像素值对,表示两个栅格的共享部分或栅格和几何体的矢量化的几何体交集。

语法

st_intersection ::=

参数

rast

raster 类型

band

int 类型

geomin

geometry 类型

band_t

int 类型,默认值 1

返回值

返回栅格数据。

示例

SELECT
foo.rid,
foo.gid,
ST_AsText((foo.geomval).geom) As geomwkt, (foo.geomval).val
FROM (
SELECT
A.rid, g.gid,
ST_Intersection(A.rast, g.geom) As geomval
FROM dummy_rast AS A
CROSS JOIN (
SELECT 1 AS gid, ST_Point(3427928, 5793243.85) AS geom
UNION ALL
SELECT 2, ST_GeomFromText('LINESTRING(3427927.85 5793243.75,3427927.8 5793243.75,3427927.8 5793243.8)')
UNION ALL
SELECT 3, ST_GeomFromText('LINESTRING(1 2, 3 4)')
) As g(gid,geom)
WHERE A.rid = 2
) As foo;
RID(int)      |GID(int)      |GEOMWKT(text)      |VAL(double precision)      |
--------------------------------------------------------------------------
2             |1             |POINT(3427928 57932|249                        |
              |              |43.85)             |                           |
--------------------------------------------------------------------------
2             |1             |POINT(3427928 57932|253                        |
              |              |43.85)             |                           |
--------------------------------------------------------------------------
2             |2             |POINT(3427927.85 57|254                        |
              |              |93243.75)          |                           |
--------------------------------------------------------------------------
2             |2             |POINT(3427927.8 579|251                        |
              |              |3243.8)            |                           |
--------------------------------------------------------------------------
2             |2             |POINT(3427927.8 579|253                        |
              |              |3243.8)            |                           |
--------------------------------------------------------------------------
2             |2             |LINESTRING(3427927.|252                        |
              |              |8 5793243.75,34279|                           |
              |              |27.8 5793243.8)    |                           |
--------------------------------------------------------------------------
2             |2             |MULTILINESTRING((34|250                        |
              |              |27927.8 5793243.8,|                           |
              |              |3427927.8 5793243.|                           |
              |              |75),(3427927.8 579|                           |
              |              |3243.75,3427927.85|                           |
              |              | 5793243.75))      |                           |
--------------------------------------------------------------------------
2             |3             |GEOMETRYCOLLECTION |null                       |
              |              |EMPTY              |                           |
总数目:8


SELECT '#299', round(ST_Y(geometry(ST_Intersection(ST_GeographyFromText('POINT(1.2456 2)'), ST_GeographyFromText('POINT(1.2456 2)')))));
?COLUMN?(varchar)      |ROUND(double precision)      |
----------------------------------------------------
#299                   |2                            |
总数目:1

ST_MapAlgebra

ST_MapAlgebra — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。

语法

st_mapalgebra ::=

参数

rastbandargset

rastbandarg[] 类型

callbackfunc

regprocedure 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

customextent

raster 类型,默认值 NULL

distancex

int 类型,默认值 0

distancey

int 类型,默认值 0

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

drop FUNCTION sample_callbackfunc;

CREATE OR REPLACE FUNCTION sample_callbackfunc(value double precision[][][], position integer[][], userargs text[])
RETURNS double precision
AS
BEGIN
RETURN 0;
END;
LANGUAGE 'ploscar' IMMUTABLE;


-- 一个光栅,一个波段
WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI',1, 0) AS rast
)
SELECT
ST_MapAlgebra(
ARRAY[ROW(rast, 1)]::rastbandarg[],
'sample_callbackfunc(double precision[], int[], text[])'::regprocedure
) AS rast
FROM foo;
RAST(RASTER)      |
------------------
010000010000000000|
0000F03F000000000|
000F0BF0000000000|
00000000000000000|
00000000000000000|
00000000000000000|
00000000000020002|
00660000000000000|
0000000           |
总数目:1

ST_MapAlgebra

ST_MapAlgebra — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。

语法

st_mapalgebra ::=

参数

rast

raster 类型

nband

int[] 类型

callbackfunc

regprocedure 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 FIRST

customextent

raster 类型,默认值 NULL

distancex

int 类型,默认值 0

distancey

int 类型,默认值 0

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, 1, 0, 0, 0), '32BF'::text, 1, -1) AS rast
)
SELECT
ST_MapAlgebra(rast, 1, NULL, 'ceil([rast]*[rast.x]/[rast.y]+[rast.val])')
FROM foo;

ST_MapAlgebra

ST_MapAlgebra — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。

语法

st_mapalgebra ::=

参数

rast

raster 类型

nband

int 类型

callbackfunc

regprocedure 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 FIRST

customextent

raster 类型,默认值 NULL

distancex

int 类型,默认值 0

distancey

int 类型,默认值 0

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, 1, 0, 0, 0), '32BF'::text, 1, -1) AS rast
)
SELECT
ST_MapAlgebra(rast, 1, NULL, 'ceil([rast]*[rast.x]/[rast.y]+[rast.val])')
FROM foo;

ST_MapAlgebra

ST_MapAlgebra — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。

语法

st_mapalgebra ::=

参数

rast1

raster 类型

nband1

int 类型

rast2

raster 类型

nband2

int 类型

callbackfunc

regprocedure 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

customextent

raster 类型,默认值 NULL

distancex

int 类型,默认值 0

distancey

int 类型,默认值 0

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

 WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1,
0, 0, 0), 1, '16BUI', 1, 0), 2, '8BUI', 10, 0), 3, '32BUI'::text, 100, 0) AS rast
UNION ALL
SELECT 2 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 1, 1, -1,
0, 0, 0), 1, '16BUI', 2, 0), 2, '8BUI', 20, 0), 3, '32BUI'::text, 300, 0) AS rast
)
SELECT
ST_MapAlgebra(
t1.rast, 2,
t2.rast, 1,
'([rast2] + [rast1.val]) / 2'
) AS rast
FROM foo t1
CROSS JOIN foo t2
WHERE t1.rid = 1
AND t2.rid = 2;
RAST(RASTER)      |
------------------
010000010000000000|
0000F03F000000000|
000F0BF0000000000|
00000000000000000|
00000000000000000|
00000000000000000|
00000000000020001|
0044000606        |
总数目:1

ST_MapAlgebra

ST_MapAlgebra — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。

语法

st_mapalgebra ::=

参数

rast

raster 类型

nband

int 类型

callbackfunc

regprocedure 类型

mask

float8[] 类型

weighted

boolean 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

customextent

raster 类型,默认值 NULL

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

DROP TABLE raster_nmapalgebra_mask_in;

CREATE TABLE raster_nmapalgebra_mask_in (
    rid integer,
    rast raster
);

INSERT INTO raster_nmapalgebra_mask_in
    SELECT 0, NULL::raster AS rast UNION ALL
    SELECT 1, ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0) AS rast UNION ALL
    SELECT 2, ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', 1, 0) AS rast UNION ALL
    SELECT 3, ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 1, -1, 1, -1, 0, 0, 0), 1, '8BUI', 2, 0), 2, '32BF', 20, 0) AS rast UNION ALL
    SELECT 4, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 1, -1, 1, -1, 0, 0, 0), 1, '8BUI', 2, 0), 2, '32BF', 20, 0), 3, '16BUI', 200, 0) AS rast
;

CREATE OR REPLACE FUNCTION raster_nmapalgebra_test(
    value double precision[][][],
    pos int[][],
    userargs text[]
)
    RETURNS double precision
    AS
    BEGIN
        RAISE NOTICE 'value = %', value;
        RAISE NOTICE 'pos = %', pos;
        RAISE NOTICE 'userargs = %', userargs;

        IF userargs IS NULL OR array_length(userargs, 1) < 1 THEN
            RETURN 255;
        ELSE
            RETURN userargs[array_lower(userargs, 1)];
        END IF;
    END;
    LANGUAGE 'ploscar' IMMUTABLE;


SELECT *
FROM (SELECT rid, st_dumpvalues(st_mapalgebra(rast,1,'raster_nmapalgebra_test(double precision[], int[], text[])'::regprocedure,ARRAY[[1]]::double precision[],false)) AS dv from raster_nmapalgebra_mask_in ) As f
ORDER BY rid, (dv).nband;
RID(int)      |DV(DUMPVALUES)      |
----------------------------------
2             |(1,"{{255,255},{255,|
              |255}}")             |
----------------------------------
3             |(1,"{{255,255},{255,|
              |255}}")             |
----------------------------------
4             |(1,"{{255,255},{255,|
              |255}}")             |
总数目:3

ST_MapAlgebra

ST_MapAlgebra — 表达式版本-返回给定一个或两个输入栅格、波段索引以及一个或多个用户指定的SQL表达式的单波段栅格。

语法

st_mapalgebra ::=

参数

rast

raster 类型

nband

int 类型

pixeltype

text 类型,默认值 NULL

expression

text 类型

nodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

CREATE OR REPLACE FUNCTION ST_TestRaster(ulx float8, uly float8, val float8)
    RETURNS raster AS
    DECLARE
    BEGIN
        RETURN ST_AddBand(ST_MakeEmptyRaster(10, 10, ulx, uly, 1, 1, 0, 0, 0), '32BF', val, -1);
    END;
    LANGUAGE 'ploscar';

SELECT 'T7', ST_Value(rast, 1, 1), ST_Value(ST_MapAlgebra(rast, 1, '4BUI', '[rast] + 20', 2), 1, 1) FROM ST_TestRaster(0, 0, 100) rast;
?COLUMN?(varchar)      |ST_VALUE(double precision)      |ST_VALUE(double precision)      |
---------------------------------------------------------------------------------------
T7                     |100                             |15                              |
总数目:1


SELECT 'T7', ST_Value(rast, 1, 1), ST_Value(ST_MapAlgebra(rast, '4BUI', '[rast] + 20', 2), 1, 1) FROM ST_TestRaster(0, 0, 100) rast;
?COLUMN?(varchar)      |ST_VALUE(double precision)      |ST_VALUE(double precision)      |
---------------------------------------------------------------------------------------
T7                     |100                             |15                              |
总数目:1

ST_MapAlgebra

ST_MapAlgebra — 表达式版本-返回给定一个或两个输入栅格、波段索引以及一个或多个用户指定的SQL表达式的单波段栅格。

语法

st_mapalgebra ::=

参数

rast1

raster 类型

nband1

int 类型

rast2

raster 类型

nband2

int 类型

expression

text 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

nodata1expr

text 类型,默认值 NULL

nodata2expr

text 类型,默认值 NULL

nodatanodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1,
0, 0, 0), 1, '16BUI', 1, 0), 2, '8BUI', 10, 0), 3, '32BUI'::text, 100, 0) AS rast
UNION ALL
SELECT 2 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 1, 1, -1,
0, 0, 0), 1, '16BUI', 2, 0), 2, '8BUI', 20, 0), 3, '32BUI'::text, 300, 0) AS rast
)
SELECT
ST_MapAlgebra(
t1.rast, 2,
t2.rast, 1,
'([rast2] + [rast1.val]) / 2'
) AS rast
FROM foo t1
CROSS JOIN foo t2
WHERE t1.rid = 1
AND t2.rid = 2;
RAST(RASTER)      |
------------------
010000010000000000|
0000F03F000000000|
000F0BF0000000000|
00000000000000000|
00000000000000000|
00000000000000000|
00000000000020001|
0044000606        |
总数目:1

ST_MapAlgebra

ST_MapAlgebra — 表达式版本-返回给定一个或两个输入栅格、波段索引以及一个或多个用户指定的SQL表达式的单波段栅格。

语法

st_mapalgebra ::=

参数

rast1

raster 类型

rast2

raster 类型

expression

text 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

nodata1expr

text 类型,默认值 NULL

nodata2expr

text 类型,默认值 NULL

nodatanodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

DROP TABLE raster_mapalgebra;

CREATE TABLE raster_mapalgebra (
    rid integer,
    rast raster
);

DROP TABLE raster_mapalgebra_out;

CREATE TABLE raster_mapalgebra_out (
    rid1 integer,
    rid2 integer,
    extent varchar(2048),
    rast raster
);

CREATE OR REPLACE PROCEDURE insert_into_raster_mapalgebra(rid integer, rast raster) is PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
        INSERT INTO raster_mapalgebra VALUES (rid, rast);
        commit;
    END;
    LANGUAGE 'ploscar';

CREATE OR REPLACE FUNCTION make_test_raster(
    rid integer,
    width integer DEFAULT 2,
    height integer DEFAULT 2,
    ul_x double precision DEFAULT 0,
    ul_y double precision DEFAULT 0,
    skew_x double precision DEFAULT 0,
    skew_y double precision DEFAULT 0,
    initvalue double precision DEFAULT 1,
    nodataval double precision DEFAULT 0
)
    RETURNS void
    AS
    DECLARE
        x int;
        y int;
        rast raster;
    BEGIN
        rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, 1, 1, skew_x, skew_y, 0);
        rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval);

        insert_into_raster_mapalgebra(rid, rast);

        RETURN;
    END;
    LANGUAGE 'ploscar';


-- no skew
SELECT make_test_raster(0, 4, 4, -2, -2);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(1, 2, 2, 0, 0, 0, 0, 2);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(2, 2, 2, 1, -1, 0, 0, 3);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(3, 2, 2, 1, 1, 0, 0, 4);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(4, 2, 2, 2, 2, 0, 0, 5);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1


-- skew
SELECT make_test_raster(10, 4, 4, -2, -2, 1, -1);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(11, 2, 2, 0, 0, 1, -1, 2);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(12, 2, 2, 1, -1, 1, -1, 3);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(13, 2, 2, 1, 1, 1, -1, 4);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

SELECT make_test_raster(14, 2, 2, 2, 2, 1, -1, 5);
MAKE_TEST_RASTER(VOID)      |
----------------------------
总数目:1

DROP FUNCTION make_test_raster(integer, integer, integer, double precision, double precision, double precision, double precision, double precision, double precision);
drop PROCEDURE insert_into_raster_mapalgebra;


SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebra(
        r1.rast, r2.rast, '[rast1.val]', '32BF', 'INTERSECTION'
    )
    FROM raster_mapalgebra r1
    JOIN raster_mapalgebra r2
        ON r1.rid != r2.rid
    WHERE r1.rid = 0
        AND r2.rid BETWEEN 1 AND 9;
RID(int)      |RID(int)      |?COLUMN?(varchar)      |ST_MAPALGEBRA(RASTER)      |
------------------------------------------------------------------------------
0             |1             |INTERSECTION           |0100000100000000000000F03F0|
              |              |                       |00000000000F03F00000000000|
              |              |                       |00000000000000000000000000|
              |              |                       |00000000000000000000000000|
              |              |                       |000000000020002004A0000000|
              |              |                       |00000803F0000803F0000803F0|
              |              |                       |000803F                    |
------------------------------------------------------------------------------
0             |2             |INTERSECTION           |0100000100000000000000F03F0|
              |              |                       |00000000000F03F00000000000|
              |              |                       |0F03F000000000000F0BF00000|
              |              |                       |00000000000000000000000000|
              |              |                       |000000000010002004A0000000|
              |              |                       |00000803F0000803F          |
------------------------------------------------------------------------------
0             |3             |INTERSECTION           |0100000100000000000000F03F0|
              |              |                       |00000000000F03F00000000000|
              |              |                       |0F03F000000000000F03F00000|
              |              |                       |00000000000000000000000000|
              |              |                       |000000000010001004A0000000|
              |              |                       |00000803F                  |
------------------------------------------------------------------------------
0             |4             |INTERSECTION           |010000000000000000000000000|
              |              |                       |00000000000000000000000000|
              |              |                       |00000000000000000000000000|
              |              |                       |00000000000000000000000000|
              |              |                       |00000000000000000          |
总数目:4

ST_MapAlgebraExpr

ST_MapAlgebraExpr — 1个栅格波段版本:通过对输入栅格波段和提供的像素类型应用有效的PostgreSQL代数运算来创建新的单波段栅格。如果未指定波段,则假定为波段1。

语法

st_mapalgebraexpr ::=

参数

rast

raster 类型

band

int 类型

pixeltype

text 类型

expression

text 类型

nodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

CREATE OR REPLACE FUNCTION ST_TestRaster(ulx float8, uly float8, val float8)
    RETURNS raster AS
    DECLARE
    BEGIN
        RETURN ST_AddBand(ST_MakeEmptyRaster(10, 10, ulx, uly, 1, 1, 0, 0, 0), '32BF', val, -1);
    END;
    LANGUAGE 'ploscar';

SELECT ST_MapAlgebraExpr(NULL, 1, NULL, '[rast] + 20'::text, 2) IS NULL FROM ST_TestRaster(0, 0, -1) rast;
?COLUMN?(boolean)      |
-----------------------
true                   |
总数目:1

drop FUNCTION ST_TestRaster(ulx float8, uly float8, val float8);

ST_MapAlgebraExpr

ST_MapAlgebraExpr — 2个栅格波段版本:创建通过对提供的两个输入栅格波段应用有效的PostgreSQL代数运算形成的新单波段栅格。如果未指定波段编号,则假定每个栅格的波段1。生成的栅格将在第一个栅格定义的栅格上对齐(缩放、倾斜和像素角),其范围由“extenttype”参数定义。“extenttype”的值可以是:交集、并集、第一个、第二个。

语法

st_mapalgebraexpr ::=

参数

rast1

raster 类型

nband1

int 类型

rast2

raster 类型

nband2

int 类型

expression

text 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

nodata1expr

text 类型,默认值 NULL

nodata2expr

text 类型,默认值 NULL

nodatanodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

SELECT rid, NULL AS rid, 'SECOND', st_mapalgebraexpr(
    rast, 1, NULL::raster, 1, 'CASE WHEN [rast1.val] IS NOT NULL THEN NULL ELSE [rast2.val] END', '32BF', 'SECOND', '[rast2.val]', NULL, NULL
)
FROM raster_mapalgebra
RID(int)      |RID(UNKNOWN)      |?COLUMN?(varchar)      |ST_MAPALGEBRAEXPR(RASTER)      |
--------------------------------------------------------------------------------------
0             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
1             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
2             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
3             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
4             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
10            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
11            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
12            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
13            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
14            |null              |SECOND                 |null                           |
总数目:10

;

SELECT rid, NULL AS rid, 'SECOND', st_mapalgebraexpr(
    rast, NULL::raster, 'CASE WHEN [rast1.val] IS NOT NULL THEN NULL ELSE [rast2.val] END', '32BF', 'SECOND', '[rast2.val]', NULL, NULL
)
FROM raster_mapalgebra
RID(int)      |RID(UNKNOWN)      |?COLUMN?(varchar)      |ST_MAPALGEBRAEXPR(RASTER)      |
--------------------------------------------------------------------------------------
0             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
1             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
2             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
3             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
4             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
10            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
11            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
12            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
13            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
14            |null              |SECOND                 |null                           |
总数目:10
;

ST_MapAlgebraExpr

ST_MapAlgebraExpr — 2个栅格波段版本:创建通过对提供的两个输入栅格波段应用有效的PostgreSQL代数运算形成的新单波段栅格。如果未指定波段编号,则假定每个栅格的波段1。生成的栅格将在第一个栅格定义的栅格上对齐(缩放、倾斜和像素角),其范围由“extenttype”参数定义。“extenttype”的值可以是:交集、并集、第一个、第二个。

语法

st_mapalgebraexpr ::=

参数

rast1

raster 类型

rast2

raster 类型

expression

text 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

nodata1expr

text 类型,默认值 NULL

nodata2expr

text 类型,默认值 NULL

nodatanodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

SELECT rid, NULL AS rid, 'SECOND', st_mapalgebraexpr(
    rast, 1, NULL::raster, 1, 'CASE WHEN [rast1.val] IS NOT NULL THEN NULL ELSE [rast2.val] END', '32BF', 'SECOND', '[rast2.val]', NULL, NULL
)
FROM raster_mapalgebra
RID(int)      |RID(UNKNOWN)      |?COLUMN?(varchar)      |ST_MAPALGEBRAEXPR(RASTER)      |
--------------------------------------------------------------------------------------
0             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
1             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
2             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
3             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
4             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
10            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
11            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
12            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
13            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
14            |null              |SECOND                 |null                           |
总数目:10

;

SELECT rid, NULL AS rid, 'SECOND', st_mapalgebraexpr(
    rast, NULL::raster, 'CASE WHEN [rast1.val] IS NOT NULL THEN NULL ELSE [rast2.val] END', '32BF', 'SECOND', '[rast2.val]', NULL, NULL
)
FROM raster_mapalgebra
RID(int)      |RID(UNKNOWN)      |?COLUMN?(varchar)      |ST_MAPALGEBRAEXPR(RASTER)      |
--------------------------------------------------------------------------------------
0             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
1             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
2             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
3             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
4             |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
10            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
11            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
12            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
13            |null              |SECOND                 |null                           |
--------------------------------------------------------------------------------------
14            |null              |SECOND                 |null                           |
总数目:10
;

ST_MapAlgebraFct

ST_MapAlgebraFct — 单波段版本-通过在输入栅格波段上应用有效的PostgreSQL函数和所生成的像素类型创建新的单波段栅格。如果未指定波段,则假定为波段1。

语法

st_mapalgebrafct ::=

参数

rast

raster 类型

band

int 类型

expression

text 类型

pixeltype

text 类型

onerastuserfunc

regprocedure 类型

args

text[] 类型

返回值

返回栅格数据。

示例

CREATE OR REPLACE FUNCTION raster_plus_twenty(pixel FLOAT, args TEXT[])
    RETURNS FLOAT AS
    BEGIN
        RETURN pixel + 20;
    END;
    LANGUAGE 'ploscar' IMMUTABLE;


SELECT ST_MapAlgebraFct(ST_MakeEmptyRaster(0, 10, 0, 0, 1, 1, 1, 1, 0), 1, NULL, 'raster_plus_twenty(float, text[])'::regprocedure);
ST_MAPALGEBRAFCT(RASTER)      |
------------------------------
0100000000000000000000F03F0000|
00000000F03F00000000000000000|
000000000000000000000000000F0|
3F000000000000F03F00000000000|
00A00                         |
总数目:1


SELECT ST_MapAlgebraFct(ST_MakeEmptyRaster(0, 10, 0, 0, 1, 1, 1, 1, 0), 1, 'raster_plus_twenty(float, text[])'::regprocedure);
ST_MAPALGEBRAFCT(RASTER)      |
------------------------------
0100000000000000000000F03F0000|
00000000F03F00000000000000000|
000000000000000000000000000F0|
3F000000000000F03F00000000000|
00A00                         |
总数目:1


SELECT ST_MapAlgebraFct(ST_MakeEmptyRaster(0, 10, 0, 0, 1, 1, 1, 1, 0), NULL, 'raster_plus_twenty(float, text[])'::regprocedure);
ST_MAPALGEBRAFCT(RASTER)      |
------------------------------
0100000000000000000000F03F0000|
00000000F03F00000000000000000|
000000000000000000000000000F0|
3F000000000000F03F00000000000|
00A00                         |
总数目:1


SELECT ST_MapAlgebraFct(ST_MakeEmptyRaster(0, 10, 0, 0, 1, 1, 1, 1, 0), 'raster_plus_twenty(float, text[])'::regprocedure);
ST_MAPALGEBRAFCT(RASTER)      |
------------------------------
0100000000000000000000F03F0000|
00000000F03F00000000000000000|
000000000000000000000000000F0|
3F000000000000F03F00000000000|
00A00                         |
总数目:1

drop FUNCTION raster_plus_twenty(pixel FLOAT, args TEXT[]);

ST_MapAlgebraFct

ST_MapAlgebraFct — 2波段版本-创建新的单波段栅格,该栅格是通过在2个输入栅格波段上应用有效的PostgreSQL函数和像素类型生成的。如果未指定波段,则假定波段1。如果未指定范围类型,则默认为相交。

语法

st_mapalgebrafct ::=

参数

rast1

raster 类型

band1

int 类型

rast2

raster 类型

band2

int 类型

tworastuserfunc

regprocedure 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

CREATE OR REPLACE FUNCTION raster_mapalgebra_intersection(
    rast1 double precision,
    rast2 double precision,
    xy int[],
    userargs text[]
)
    RETURNS double precision
    AS
    DECLARE
    BEGIN
        IF rast1 IS NOT NULL AND rast2 IS NOT NULL THEN
            RETURN rast1;
        ELSE
            RETURN NULL;
        END IF;

        RETURN NULL;
    END;
    LANGUAGE 'ploscar' IMMUTABLE;


SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebrafct(
    r1.rast, r2.rast, 'raster_mapalgebra_intersection(double precision, double precision, int[], text[])'::regprocedure, '32BF', 'INTERSECTION'
)
FROM raster_mapalgebra r1
JOIN raster_mapalgebra r2
    ON r1.rid != r2.rid
WHERE r1.rid = 0
    AND r2.rid BETWEEN 1 AND 9;
RID(int)      |RID(int)      |?COLUMN?(varchar)      |ST_MAPALGEBRAFCT(RASTER)      |
---------------------------------------------------------------------------------
0             |1             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F00000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000020|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F0000803F0000803F            |
---------------------------------------------------------------------------------
0             |2             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F0BF00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F                            |
---------------------------------------------------------------------------------
0             |3             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F03F00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |001004A000000000000803F       |
---------------------------------------------------------------------------------
0             |4             |INTERSECTION           |010000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000                         |
总数目:4


SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebrafct(
    r1.rast, 1, r2.rast, 1, 'raster_mapalgebra_intersection(double precision, double precision, int[], text[])'::regprocedure, '32BF', 'INTERSECTION'
)
FROM raster_mapalgebra r1
JOIN raster_mapalgebra r2
    ON r1.rid != r2.rid
WHERE r1.rid = 0
    AND r2.rid BETWEEN 1 AND 9;
RID(int)      |RID(int)      |?COLUMN?(varchar)      |ST_MAPALGEBRAFCT(RASTER)      |
---------------------------------------------------------------------------------
0             |1             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F00000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000020|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F0000803F0000803F            |
---------------------------------------------------------------------------------
0             |2             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F0BF00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F                            |
---------------------------------------------------------------------------------
0             |3             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F03F00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |001004A000000000000803F       |
---------------------------------------------------------------------------------
0             |4             |INTERSECTION           |010000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000                         |
总数目:4

DROP FUNCTION IF EXISTS raster_mapalgebra_intersection(double precision, double precision, int[], VARIADIC text[]);

ST_MapAlgebraFct

ST_MapAlgebraFct — 2波段版本-创建新的单波段栅格,该栅格是通过在2个输入栅格波段上应用有效的PostgreSQL函数和像素类型生成的。如果未指定波段,则假定波段1。如果未指定范围类型,则默认为相交。

语法

st_mapalgebrafct ::=

参数

rast1

raster 类型

rast2

raster 类型

tworastuserfunc

regprocedure 类型

pixeltype

text 类型,默认值 NULL

extenttype

text 类型,默认值 INTERSECTION

userargs

text[] 类型,默认值 NULL

返回值

返回栅格数据。

示例

CREATE OR REPLACE FUNCTION raster_mapalgebra_intersection(
    rast1 double precision,
    rast2 double precision,
    xy int[],
    userargs text[]
)
    RETURNS double precision
    AS
    DECLARE
    BEGIN
        IF rast1 IS NOT NULL AND rast2 IS NOT NULL THEN
            RETURN rast1;
        ELSE
            RETURN NULL;
        END IF;

        RETURN NULL;
    END;
    LANGUAGE 'ploscar' IMMUTABLE;


SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebrafct(
    r1.rast, r2.rast, 'raster_mapalgebra_intersection(double precision, double precision, int[], text[])'::regprocedure, '32BF', 'INTERSECTION'
)
FROM raster_mapalgebra r1
JOIN raster_mapalgebra r2
    ON r1.rid != r2.rid
WHERE r1.rid = 0
    AND r2.rid BETWEEN 1 AND 9;
RID(int)      |RID(int)      |?COLUMN?(varchar)      |ST_MAPALGEBRAFCT(RASTER)      |
---------------------------------------------------------------------------------
0             |1             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F00000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000020|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F0000803F0000803F            |
---------------------------------------------------------------------------------
0             |2             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F0BF00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F                            |
---------------------------------------------------------------------------------
0             |3             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F03F00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |001004A000000000000803F       |
---------------------------------------------------------------------------------
0             |4             |INTERSECTION           |010000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000                         |
总数目:4


SELECT r1.rid, r2.rid, 'INTERSECTION', st_mapalgebrafct(
    r1.rast, 1, r2.rast, 1, 'raster_mapalgebra_intersection(double precision, double precision, int[], text[])'::regprocedure, '32BF', 'INTERSECTION'
)
FROM raster_mapalgebra r1
JOIN raster_mapalgebra r2
    ON r1.rid != r2.rid
WHERE r1.rid = 0
    AND r2.rid BETWEEN 1 AND 9;
RID(int)      |RID(int)      |?COLUMN?(varchar)      |ST_MAPALGEBRAFCT(RASTER)      |
---------------------------------------------------------------------------------
0             |1             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F00000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000020|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F0000803F0000803F            |
---------------------------------------------------------------------------------
0             |2             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F0BF00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |002004A000000000000803F000080|
              |              |                       |3F                            |
---------------------------------------------------------------------------------
0             |3             |INTERSECTION           |0100000100000000000000F03F0000|
              |              |                       |00000000F03F000000000000F03F0|
              |              |                       |00000000000F03F00000000000000|
              |              |                       |00000000000000000000000000010|
              |              |                       |001004A000000000000803F       |
---------------------------------------------------------------------------------
0             |4             |INTERSECTION           |010000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000000000000000000000000000|
              |              |                       |00000                         |
总数目:4

DROP FUNCTION IF EXISTS raster_mapalgebra_intersection(double precision, double precision, int[], VARIADIC text[]);

ST_MapAlgebraFctNgb

ST_MapAlgebraFctNgb — 1波段版本:使用自定义PostgreSQL函数的地图代数最近邻。返回值为PLPGSQL用户函数的结果的栅格,该用户函数涉及输入栅格波段中的值的邻域。

语法

st_mapalgebrafctngb ::=

参数

rast

raster 类型

band

int 类型

pixeltype

text 类型

ngbwidth

int 类型

ngbheight

int 类型

onerastngbuserfunc

regprocedure 类型

nodatamode

text 类型

args

text[] 类型

返回值

返回栅格数据。

示例

SELECT rid,st_value(st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_max4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)FROM dummy_rast WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |254                             |
总数目:1

ST_Reclass

ST_Reclass — 创建由从原始标注栏重新分类的标注栏类型组成的新栅格。nband是要更改的频带。如果未指定nband,则假定为1。所有其他波段将原封不动地返回。

语法

st_reclass ::=

参数

rast

raster 类型

reclassargset

reclassarg[] 类型

band

int 类型

reclassexpr

text 类型

pixeltype

text 类型

nodataval

float8 类型,默认值 NULL

返回值

返回栅格数据。

示例

SELECT ST_Reclass(
    ST_SetValue(
        ST_SetValue(
            ST_AddBand(
                ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0, 0),
                1, '32BUI', 0, 0
            ),
            1, 1, 499
        ),
        10, 10, 12
    ),
    array[ROW(1, '0-100:1-10, 101-500:11-150,501 - 10000: 151-254', '8BUI', 255)]::reclassarg[]
);
ST_RECLASS(RASTER)      |
------------------------
010000010000000000000000|
40000000000000004000000|
00000002440000000000000|
24400000000000000000000|
0000000000000000000000A|
000A0044FF96FFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
FFFFFFFFFFFFFFFFFFFFFFF|
F02                     |
总数目:1


SELECT ST_Reclass(
    ST_SetValues(
         ST_AddBand(
             ST_MakeEmptyRaster(5, 5, 10, 10, 2, 2, 0, 0, 0),
            1, '32BF', 1, -9999
        ),
        1, 1, 1,
        ARRAY[
            [1, 1, 1, 1, 1],
            [1, 9000, 1, 1, 1],
            [1, 1, -9000, 1, 1],
            [1, 1, 1, 9000, 1],
            [1, 1, 1, 1, 1]
        ]::double precision[]
    ),
    1, '[-9000-9000]:[-900-900]', '32BF'
) AS rast OFFSET 0;
RAST(RASTER)      |
------------------
010000010000000000|
00000040000000000|
00000400000000000|
00244000000000000|
02440000000000000|
00000000000000000|
00000000000050005|
000A00000000CDCCC|
C3DCDCCCC3DCDCCCC|
3DCDCCCC3DCDCCCC3|
DCDCCCC3D00006144|
CDCCCC3DCDCCCC3DC|
DCCCC3DCDCCCC3DCD|
CCCC3D000061C4CDC|
CCC3DCDCCCC3DCDCC|
CC3DCDCCCC3DCDCCC|
C3D00006144CDCCCC|
3DCDCCCC3DCDCCCC3|
DCDCCCC3DCDCCCC3D|
CDCCCC3D          |
总数目:1

ST_Union

ST_Union — 将一组栅格平铺的并集返回由1个或多个标注栏组成的单个栅格。

语法

st_union ::=

参数

rast

raster 类型

arg2text

text 类型

arg2int

int 类型

arg2uinionargarr

unionarg[] 类型

arg3text

text 类型

返回值

返回栅格数据。

示例

DROP TABLE raster_union_in;

CREATE TABLE raster_union_in (
    rid integer,
    rast raster
);

INSERT INTO raster_union_in
    SELECT 0, NULL::raster AS rast UNION ALL
    SELECT 1, ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', 1, 0) AS rast UNION ALL
    SELECT 2, ST_AddBand(ST_MakeEmptyRaster(2, 2, 1, -1, 1, -1, 0, 0, 0), 1, '8BUI', 2, 0) AS rast

;

SELECT
    'LAST',
    ST_Union(rast) AS rast
FROM raster_union_in;
?COLUMN?(varchar)      |RAST(RASTER)      |
-----------------------------------------
LAST                   |010000010000000000|
                       |0000F03F000000000|
                       |000F0BF0000000000|
                       |00000000000000000|
                       |00000000000000000|
                       |00000000000000000|
                       |00000000000030003|
                       |00440001010001020|
                       |2000202           |
总数目:1


SELECT
    'LAST',
    ST_Union(rast, 1) AS rast
FROM raster_union_in;
?COLUMN?(varchar)      |RAST(RASTER)      |
-----------------------------------------
LAST                   |010000010000000000|
                       |0000F03F000000000|
                       |000F0BF0000000000|
                       |00000000000000000|
                       |00000000000000000|
                       |00000000000000000|
                       |00000000000030003|
                       |00440001010001020|
                       |2000202           |
总数目:1


SELECT
    'FIRST',
    ST_Union(rast, 1, 'FIRST') AS rast
FROM raster_union_in;
?COLUMN?(varchar)      |RAST(RASTER)      |
-----------------------------------------
FIRST                  |010000010000000000|
                       |0000F03F000000000|
                       |000F0BF0000000000|
                       |00000000000000000|
                       |00000000000000000|
                       |00000000000000000|
                       |00000000000030003|
                       |00440001010001010|
                       |2000202           |
总数目:1

ST_Distinct4ma

ST_Distinct4ma — 栅格处理函数,用于计算邻域中唯一像素值的数量。

语法

st_distinct4ma ::=

参数

matrix

float[][] 类型

nodatamode

text 类型

args

TEXT[] 类型

value

float8[][][] 类型

pos

integer[][] 类型

userargs

text[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_distinct4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)
FROM dummy_rast
WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |3                               |
总数目:1

ST_InvDistWeight4ma

ST_InvDistWeight4ma — 从像素点的邻域内插像素值的栅格处理功能。

语法

st_invdistweight4ma ::=

参数

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

DROP TABLE raster_value_arrays;

CREATE TABLE raster_value_arrays (
    id integer,
    val double precision[][]
);

CREATE OR REPLACE FUNCTION make_value_array(
    rows integer DEFAULT 3,
    columns integer DEFAULT 3,
    start_val double precision DEFAULT 1,
    step double precision DEFAULT 1,
    skip_expr text DEFAULT NULL
)
    RETURNS double precision[][][]
    AS
    DECLARE
        x int;
        y int;
        value double precision;
        value1 double precision[][][];
        result boolean;
        expr text;
    BEGIN
        value := start_val;

        select array_fill(NULL::double precision, ARRAY[1, columns, rows]) into value1 ;

        FOR y IN 1..columns LOOP
            FOR x IN 1..rows LOOP
                IF skip_expr IS NULL OR length(skip_expr) < 1 THEN
                    result := TRUE;
                ELSE
                    expr := replace(skip_expr, '[v]'::text, value::text);
                    EXECUTE 'SELECT (' || expr || ')::boolean' INTO result;
                END IF;

                IF result IS TRUE THEN
                    value1[1][y][x] := value;
                END IF;

                value := value + step;
            END LOOP;
        END LOOP;

        RETURN value1;
    END;
    LANGUAGE 'ploscar';

INSERT INTO raster_value_arrays VALUES
    (1, make_value_array()),
    (2, make_value_array(5, 5)),
    (3, make_value_array(5, 5, 100)),
    (4, make_value_array(3, 3, 15, -1)),
    (5, make_value_array(5, 5, 15, -1)),
    (6, make_value_array(3, 3, 1, 2)),
    (7, make_value_array(5, 5, 1, 3)),

    (10, make_value_array(3, 3, 1, 1, '0')),
    (11, make_value_array(5, 5, 1, 1, '0')),
    (12, make_value_array(3, 3, 1, 1, '[v] % 2')),
    (13, make_value_array(5, 5, 1, 1, '[v] % 2')),
    (14, make_value_array(3, 3, 1, 1, '([v] % 2) = 0')),
    (15, make_value_array(5, 5, 1, 1, '([v] % 2) = 0')),
    (16, make_value_array(3, 3, 1, 2.1, '([v] NOT IN (7.3, 9.4, 15.7, 17.8))')),
    (17, make_value_array(3, 3, 0, 3.14, '([v] IN (3.14, 12.56, 25.12))')),
    (18, make_value_array(3, 3, 1, 1, '[v] > 8'))

;

SELECT
    id,
    val,
    round(st_invdistweight4ma(val, NULL, NULL), 6) AS idw1,
    round(st_invdistweight4ma(val, NULL, array['0']::text[]), 6) AS idw2,
    round(st_invdistweight4ma(val, NULL, array['0.5']::text[]), 6) AS idw3,
    round(st_invdistweight4ma(val, NULL, array['0.9']::text[]), 6) AS idw4,
    round(st_invdistweight4ma(val, NULL, array['1']::text[]), 6) AS idw5,
    round(st_invdistweight4ma(val, NULL, array['0.9', '1']::text[]), 6) AS idw6,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.9']::text[]), 6) AS idw7,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.75']::text[]), 6) AS idw8,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.5']::text[]), 6) AS idw9,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.25']::text[]), 6) AS idw10,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.1']::text[]), 6) AS idw11,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.01']::text[]), 6) AS idw12,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0.001']::text[]), 6) AS idw13,
    round(st_invdistweight4ma(val, NULL, array['0.9', '0']::text[]), 6) AS idw14,
    round(st_mindist4ma(val, NULL), 6) AS mindist4ma
FROM raster_value_arrays
ORDER BY id;
ID(int)      |VAL(_FLOAT8)      |IDW1(numeric)      |IDW2(numeric)      |IDW3(numeric)      |IDW4(numeric)      |IDW5(numeric)      |IDW6(numeric)      |IDW7(numeric)      |IDW8(numeric)      |IDW9(numeric)      |IDW10(numeric)      |IDW11(numeric)      |IDW12(numeric)      |IDW13(numeric)      |IDW14(numeric)      |MINDIST4MA(numeric)      |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1            |{{{1,2,3},{4,5,6},|5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                   |5                   |5                   |5                   |5                   |0                        |
             |{7,8,9}}}         |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2            |{{{1,2,3,4,5},{6,7|13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                  |13                  |13                  |13                  |13                  |0                        |
             |,8,9,10},{11,12,1|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |3,14,15},{16,17,1|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |8,19,20},{21,22,2|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |3,24,25}}}        |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3            |{{{100,101,102,103|112                |112                |112                |112                |112                |112                |112                |112                |112                |112                 |112                 |112                 |112                 |112                 |0                        |
             |,104},{105,106,10|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |7,108,109},{110,1|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |11,112,113,114},{|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |115,116,117,118,1|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |19},{120,121,122,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |123,124}}}        |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4            |{{{15,14,13},{12,1|11                 |11                 |11                 |11                 |11                 |11                 |11                 |11                 |11                 |11                  |11                  |11                  |11                  |11                  |0                        |
             |1,10},{9,8,7}}}   |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5            |{{{15,14,13,12,11}|3                  |3                  |3                  |3                  |3                  |3                  |3                  |3                  |3                  |3                   |3                   |3                   |3                   |3                   |0                        |
             |,{10,9,8,7,6},{5,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |4,3,2,1},{0,-1,-2|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,-3,-4},{-5,-6,-7|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,-8,-9}}}         |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6            |{{{1,3,5},{7,9,11}|9                  |9                  |9                  |9                  |9                  |9                  |9                  |9                  |9                  |9                   |9                   |9                   |9                   |9                   |0                        |
             |,{13,15,17}}}     |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7            |{{{1,4,7,10,13},{1|37                 |37                 |37                 |37                 |37                 |37                 |37                 |37                 |37                 |37                  |37                  |37                  |37                  |37                  |0                        |
             |6,19,22,25,28},{3|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |1,34,37,40,43},{4|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |6,49,52,55,58},{6|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |1,64,67,70,73}}}  |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10           |{{{NULL,NULL,NULL}|null               |null               |null               |null               |null               |null               |null               |null               |null               |null                |null                |null                |null                |null                |null                     |
             |,{NULL,NULL,NULL}|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,{NULL,NULL,NULL}|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |}}                |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11           |{{{NULL,NULL,NULL,|null               |null               |null               |null               |null               |null               |null               |null               |null               |null                |null                |null                |null                |null                |null                     |
             |NULL,NULL},{NULL,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |NULL,NULL,NULL,NU|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |LL},{NULL,NULL,NU|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |LL,NULL,NULL},{NU|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |LL,NULL,NULL,NULL|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,NULL},{NULL,NULL|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,NULL,NULL,NULL}}|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |}                 |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
12           |{{{1,NULL,3},{NULL|5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                   |5                   |5                   |5                   |5                   |0                        |
             |,5,NULL},{7,NULL,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |9}}}              |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
13           |{{{1,NULL,3,NULL,5|13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                  |13                  |13                  |13                  |13                  |0                        |
             |},{NULL,7,NULL,9,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |NULL},{11,NULL,13|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,NULL,15},{NULL,1|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |7,NULL,19,NULL},{|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |21,NULL,23,NULL,2|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |5}}}              |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
14           |{{{NULL,2,NULL},{4|5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                  |5                   |5                   |5                   |5                   |5                   |1                        |
             |,NULL,6},{NULL,8,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |NULL}}}           |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
15           |{{{NULL,2,NULL,4,N|13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                 |13                  |13                  |13                  |13                  |13                  |1                        |
             |ULL},{6,NULL,8,NU|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |LL,10},{NULL,12,N|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |ULL,14,NULL},{16,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |NULL,18,NULL,20},|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |{NULL,22,NULL,24,|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |NULL}}}           |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
16           |{{{1,3.1,5.2},{NUL|6.939697           |6.88               |6.90955            |6.933641           |6.939697           |6.933641           |6.933641           |6.933641           |6.933641           |6.933641            |6.933641            |6.933641            |6.933641            |6.933641            |1                        |
             |L,NULL,11.5},{13.|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |6,NULL,NULL}}}    |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
17           |{{{NULL,3.14,NULL}|12.56              |12.56              |12.56              |12.56              |12.56              |12.56              |12.546978          |12.527446          |12.494891          |12.462337           |12.442804           |12.431085           |12.429913           |12.429783           |0                        |
             |,{NULL,12.56,NULL|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |},{NULL,NULL,25.1|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |2}}}              |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
18           |{{{NULL,NULL,NULL}|9                  |9                  |9                  |9                  |9                  |9                  |9                  |9                  |9                  |9                   |9                   |9                   |9                   |9                   |1.414214                 |
             |,{NULL,NULL,NULL}|                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
             |,{NULL,NULL,9}}}  |                   |                   |                   |                   |                   |                   |                   |                   |                   |                    |                    |                    |                    |                    |                         |
总数目:16

DROP FUNCTION IF EXISTS make_value_array(integer, integer, double precision, double precision, text);

ST_Max4ma

ST_Max4ma — 计算邻域中最大像素值的栅格处理函数

语法

st_max4ma ::=

参数

matrix

float8[][] 类型

nodatamode

text 类型

args

text[] 类型

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT rid,st_value(st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_max4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)FROM dummy_rast WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |254                             |
总数目:1

ST_Mean4ma

ST_Mean4ma — 栅格处理函数,用于计算邻域中的平均像素值。

语法

st_mean4ma ::=

参数

matrix

float8[][] 类型

nodatamode

text 类型

args

text[] 类型

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, '32BF', 1, 1, 'st_mean4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)
FROM dummy_rast
WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |253.222229003906                |
总数目:1

ST_Min4ma

ST_Min4ma — 计算邻域中最小像素值的栅格处理函数

语法

st_min4ma ::=

参数

matrix

float8[][] 类型

nodatamode

text 类型

args

text[] 类型

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_min4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)
FROM dummy_rast
WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |250                             |
总数目:1

ST_MinDist4ma

ST_MinDist4ma — 栅格处理函数,返回感兴趣的像素与相邻像素之间的最小距离(以像素数表示)。

语法

st_mindist4ma ::=

参数

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
    id,
    val,
    round(st_mindist4ma(val, NULL), 6) AS mindist4ma
FROM raster_value_arrays
ORDER BY id;
ID(int)      |VAL(_FLOAT8)      |MINDIST4MA(numeric)      |
--------------------------------------------------------
1            |{{{1,2,3},{4,5,6},|0                        |
             |{7,8,9}}}         |                         |
--------------------------------------------------------
2            |{{{1,2,3,4,5},{6,7|0                        |
             |,8,9,10},{11,12,1|                         |
             |3,14,15},{16,17,1|                         |
             |8,19,20},{21,22,2|                         |
             |3,24,25}}}        |                         |
--------------------------------------------------------
3            |{{{100,101,102,103|0                        |
             |,104},{105,106,10|                         |
             |7,108,109},{110,1|                         |
             |11,112,113,114},{|                         |
             |115,116,117,118,1|                         |
             |19},{120,121,122,|                         |
             |123,124}}}        |                         |
--------------------------------------------------------
4            |{{{15,14,13},{12,1|0                        |
             |1,10},{9,8,7}}}   |                         |
--------------------------------------------------------
5            |{{{15,14,13,12,11}|0                        |
             |,{10,9,8,7,6},{5,|                         |
             |4,3,2,1},{0,-1,-2|                         |
             |,-3,-4},{-5,-6,-7|                         |
             |,-8,-9}}}         |                         |
--------------------------------------------------------
6            |{{{1,3,5},{7,9,11}|0                        |
             |,{13,15,17}}}     |                         |
--------------------------------------------------------
7            |{{{1,4,7,10,13},{1|0                        |
             |6,19,22,25,28},{3|                         |
             |1,34,37,40,43},{4|                         |
             |6,49,52,55,58},{6|                         |
             |1,64,67,70,73}}}  |                         |
--------------------------------------------------------
10           |{{{NULL,NULL,NULL}|null                     |
             |,{NULL,NULL,NULL}|                         |
             |,{NULL,NULL,NULL}|                         |
             |}}                |                         |
--------------------------------------------------------
11           |{{{NULL,NULL,NULL,|null                     |
             |NULL,NULL},{NULL,|                         |
             |NULL,NULL,NULL,NU|                         |
             |LL},{NULL,NULL,NU|                         |
             |LL,NULL,NULL},{NU|                         |
             |LL,NULL,NULL,NULL|                         |
             |,NULL},{NULL,NULL|                         |
             |,NULL,NULL,NULL}}|                         |
             |}                 |                         |
--------------------------------------------------------
12           |{{{1,NULL,3},{NULL|0                        |
             |,5,NULL},{7,NULL,|                         |
             |9}}}              |                         |
--------------------------------------------------------
13           |{{{1,NULL,3,NULL,5|0                        |
             |},{NULL,7,NULL,9,|                         |
             |NULL},{11,NULL,13|                         |
             |,NULL,15},{NULL,1|                         |
             |7,NULL,19,NULL},{|                         |
             |21,NULL,23,NULL,2|                         |
             |5}}}              |                         |
--------------------------------------------------------
14           |{{{NULL,2,NULL},{4|1                        |
             |,NULL,6},{NULL,8,|                         |
             |NULL}}}           |                         |
--------------------------------------------------------
15           |{{{NULL,2,NULL,4,N|1                        |
             |ULL},{6,NULL,8,NU|                         |
             |LL,10},{NULL,12,N|                         |
             |ULL,14,NULL},{16,|                         |
             |NULL,18,NULL,20},|                         |
             |{NULL,22,NULL,24,|                         |
             |NULL}}}           |                         |
--------------------------------------------------------
16           |{{{1,3.1,5.2},{NUL|1                        |
             |L,NULL,11.5},{13.|                         |
             |6,NULL,NULL}}}    |                         |
--------------------------------------------------------
17           |{{{NULL,3.14,NULL}|0                        |
             |,{NULL,12.56,NULL|                         |
             |},{NULL,NULL,25.1|                         |
             |2}}}              |                         |
--------------------------------------------------------
18           |{{{NULL,NULL,NULL}|1.414214                 |
             |,{NULL,NULL,NULL}|                         |
             |,{NULL,NULL,9}}}  |                         |
总数目:16

ST_Range4ma

ST_Range4ma — 计算邻域内像素值范围的栅格处理函数。

语法

st_range4ma ::=

参数

matrix

float8[][] 类型

nodatamode

text 类型

args

text[] 类型

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, NULL, 1, 1, 'st_range4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)
FROM dummy_rast
WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |4                               |
总数目:1

ST_StdDev4ma

ST_StdDev4ma — 栅格处理功能,用于计算邻域内像素值的标准偏差。

语法

st_stddev4ma ::=

参数

matrix

float8[][] 类型

nodatamode

text 类型

args

text[] 类型

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, '32BF', 1, 1, 'st_stddev4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)
FROM dummy_rast
WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |1.30170822143555                |
总数目:1

ST_Sum4ma

ST_Sum4ma — 计算邻域中所有像素值之和的栅格处理函数。

语法

st_sum4ma ::=

参数

matrix

float8[][] 类型

nodatamode

text 类型

args

text[] 类型

value

float8[][][] 类型

pos

int[][] 类型

userargs

TEXT[] 类型,默认值 NULL

返回值

返回浮点数数据。

示例

SELECT
rid,
st_value(
st_mapalgebrafctngb(rast, 1, '32BF', 1, 1, 'st_sum4ma(float[][],text,text[])'::regprocedure, 'ignore', NULL), 2, 2)
FROM dummy_rast
WHERE rid = 2;
RID(int)      |ST_VALUE(double precision)      |
----------------------------------------------
2             |2279                            |
总数目:1

ST_Aspect

ST_Aspect — 返回高程栅格标注栏的纵横比(默认情况下以度为单位)。对于分析地形非常有用。

语法

st_aspect ::=

参数

rast

raster 类型

nband

int 类型

customextent

raster 类型

pixeltype

text 类型,默认值 32BF

units

text 类型,默认值 DEGREES

interpolate_nodata

boolean 类型,默认值 FALSE

nband_t

int 类型,默认值 1

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_SetValues(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1],
[1, 2, 2, 2, 1],
[1, 2, 3, 2, 1],
[1, 2, 2, 2, 1],
[1, 1, 1, 1, 1]
]::double precision[][]
) AS rast
)
SELECT
ST_DumpValues(ST_Aspect(rast, 1, '32BF'))
FROM foo;
ST_DUMPVALUES(DUMPVALUES)      |
-------------------------------
(1,"{{315,341.565063476562,0,18|
.4349479675293,45},{288.434936|
523438,315,0,45,71.56504821777|
34},{270,270,-1,90,90},{251.56|
5048217773,225,180,135,108.434|
951782227},{225,198.4349517822|
27,180,161.565048217773,135}}"|
)                              |
总数目:1

ST_Aspect

ST_Aspect — 返回高程栅格标注栏的纵横比(默认情况下以度为单位)。对于分析地形非常有用。

语法

st_aspect ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

customextent

raster 类型

pixeltype

text 类型,默认值 32BF

units

text 类型,默认值 DEGREES

interpolate_nodata

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_Tile(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0),
1, '32BF', 0, -9999
),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 2, 1],
[1, 2, 2, 3, 3, 1],
[1, 1, 3, 2, 1, 1],
[1, 2, 2, 1, 2, 1],
[1, 1, 1, 1, 1, 1]
]::double precision[]
),
2, 2
) AS rast
)
SELECT
t1.rast,
ST_Aspect(ST_Union(t2.rast), 1, t1.rast)
FROM foo t1
CROSS JOIN foo t2
WHERE ST_Intersects(t1.rast, t2.rast)
GROUP BY t1.rast;
RAST(RASTER)      |ST_ASPECT(RASTER)      |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000000000000000000|
00000000000000000|0000000000000000000000|
00000000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC60|
00000000000020002|00080BF000080BF00809D4|
004A003C1CC600008|354C8AA43              |
03F0000803F000080|                       |
3F0000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000000040000000000|
00004000000000000|0000000000000000000000|
00000000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC60|
00000000000020002|00080BF00809D435458AE4|
004A003C1CC600008|39566A843              |
03F0000803F000080|                       |
3F0000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000000000000000000|
00000000000000000|00000C0000000000000000|
000C0000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC60|
00000000000020002|0008743544894430000874|
004A003C1CC600008|300008743              |
03F00000040000080|                       |
3F0000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000000040000000000|
00004000000000000|00000C0000000000000000|
000C0000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC6A|
00000000000020002|484A44354C8AA430000614|
004A003C1CC600000|347091543              |
04000004040000040|                       |
4000000040        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000001040000000000|
00104000000000000|0000000000000000000000|
00000000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC60|
00000000000020002|000000000003442C67A934|
004A003C1CC600008|163BD7D42              |
03F0000803F000000|                       |
400000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000001040000000000|
00104000000000000|00000C0000000000000000|
000C0000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC6A|
00000000000020002|F9ECA42AF9ECA420000074|
004A003C1CC600004|3B2DED842              |
0400000803F000080|                       |
3F0000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000000000000000000|
00000000000000000|00010C0000000000000000|
010C0000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC60|
00000000000020002|0008743596F73430000614|
004A003C1CC600008|3596F4643              |
03F00000040000080|                       |
3F0000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000000040000000000|
00004000000000000|00010C0000000000000000|
010C0000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC6A|
00000000000020002|8B02843596F1943A790214|
004A003C1CC600000|300003443              |
0400000803F000080|                       |
3F0000803F        |                       |
-----------------------------------------
010000010000000000|0100000100000000000000F|
0000F03F000000000|03F000000000000F0BF000|
000F0BF0000000000|0000000001040000000000|
00104000000000000|00010C0000000000000000|
010C0000000000000|0000000000000000000000|
00000000000000000|000020002004A003C1CC60|
00000000000020002|00007430000B4420000344|
004A003C1CC600000|300000743              |
0400000803F000080|                       |
3F0000803F        |                       |
总数目:9

ST_HillShade

ST_HillShade — 使用提供的方位角、海拔高度、亮度和比例输入返回高程栅格波段的假设照明。

语法

st_hillshade ::=

参数

rast

raster 类型

nband

int 类型

customextent

raster 类型

pixeltype

text 类型,默认值 32BF

azimuth

float8 类型,默认值 315

altitude

float8 类型,默认值 45

max_bright

float8 类型,默认值 255

scale

float8 类型,默认值 1

interpolate_nodata

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_SetValues(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1],
[1, 2, 2, 2, 1],
[1, 2, 3, 2, 1],
[1, 2, 2, 2, 1],
[1, 1, 1, 1, 1]
]::double precision[][]
) AS rast
)
SELECT
ST_DumpValues(ST_Hillshade(rast, 1, '32BF'))
FROM foo;
ST_DUMPVALUES(DUMPVALUES)      |
-------------------------------
(1,"{{NULL,NULL,NULL,NULL,NULL}|
,{NULL,251.32763671875,220.749|
786376953,147.224319458008,NUL|
L},{NULL,220.749786376953,180.|
312225341797,67.7497863769531,|
NULL},{NULL,147.224319458008,6|
7.7497863769531,43.12100601196|
29,NULL},{NULL,NULL,NULL,NULL,|
NULL}}")                       |
总数目:1

ST_HillShade

ST_HillShade — 使用提供的方位角、海拔高度、亮度和比例输入返回高程栅格波段的假设照明。

语法

st_hillshade ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

pixeltype

text 类型,默认值 32BF

azimuth

float8 类型,默认值 315

altitude

float8 类型,默认值 45

max_bright

float8 类型,默认值 255

scale

float8 类型,默认值 1

interpolate_nodata

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_Tile(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0),
1, '32BF', 0, -9999
),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 2, 1],
[1, 2, 2, 3, 3, 1],
[1, 1, 3, 2, 1, 1],
[1, 2, 2, 1, 2, 1],
[1, 1, 1, 1, 1, 1]
]::double precision[]
),
2, 2
) AS rast
)
SELECT
t1.rast,
ST_Hillshade(ST_Union(t2.rast), 1, t1.rast)
FROM foo t1
CROSS JOIN foo t2
WHERE ST_Intersects(t1.rast, t2.rast)
GROUP BY t1.rast;
RAST(RASTER)      |ST_HILLSHADE(RASTER)      |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|0000000000000000000000000|
00000000000000000|0000000000000000000000000|
00000000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6003C1CC6003C1CC6003|
00000000000020002|C1CC628F96243             |
004A003C1CC600008|                          |
03F0000803F000080|                          |
3F0000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|0000040000000000000000000|
00004000000000000|0000000000000000000000000|
00000000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6003C1CC6003C1CC6D2B|
00000000000020002|06843DC077643             |
004A003C1CC600008|                          |
03F0000803F000080|                          |
3F0000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|000000000000000000000C000|
00000000000000000|0000000000000000000000000|
000C0000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6003C1CC696DB7043003|
00000000000020002|C1CC6F2BF5C43             |
004A003C1CC600008|                          |
03F00000040000080|                          |
3F0000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|000004000000000000000C000|
00004000000000000|0000000000000000000000000|
000C0000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6F6BF784328F96243000|
00000000000020002|02A4304B72A42             |
004A003C1CC600000|                          |
04000004040000040|                          |
4000000040        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|0001040000000000000000000|
00104000000000000|0000000000000000000000000|
00000000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6003C1CC6003C1CC64A7|
00000000000020002|53F43003C1CC6             |
004A003C1CC600008|                          |
03F0000803F000000|                          |
400000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|000104000000000000000C000|
00104000000000000|0000000000000000000000000|
000C0000000000000|0000000000000020002004A00|
00000000000000000|3C1CC63FD48E42003C1CC6E97|
00000000000020002|B2C42003C1CC6             |
004A003C1CC600004|                          |
0400000803F000080|                          |
3F0000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|000000000000000000010C000|
00000000000000000|0000000000000000000000000|
010C0000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6003C1CC653363943003|
00000000000020002|C1CC6003C1CC6             |
004A003C1CC600008|                          |
03F00000040000080|                          |
3F0000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|000004000000000000010C000|
00004000000000000|0000000000000000000000000|
010C0000000000000|0000000000000020002004A00|
00000000000000000|3C1CC63FD48E4297D79342003|
00000000000020002|C1CC6003C1CC6             |
004A003C1CC600000|                          |
0400000803F000080|                          |
3F0000803F        |                          |
--------------------------------------------
010000010000000000|0100000100000000000000F03F|
0000F03F000000000|000000000000F0BF000000000|
000F0BF0000000000|000104000000000000010C000|
00104000000000000|0000000000000000000000000|
010C0000000000000|0000000000000020002004A00|
00000000000000000|3C1CC6BF2B1243003C1CC6003|
00000000000020002|C1CC6003C1CC6             |
004A003C1CC600000|                          |
0400000803F000080|                          |
3F0000803F        |                          |
总数目:9

ST_Slope

ST_Slope — 返回高程栅格标注栏的坡度(默认情况下以度为单位)。对于分析地形非常有用。

语法

st_slope ::=

参数

rast

raster 类型

nband

int 类型

customextent

raster 类型

pixeltype

text 类型,默认值 32BF

units

text 类型,默认值 DEGREES

scale

float8 类型,默认值 1

interpolate_nodata

boolean 类型,默认值 FALSE

nband_t

int 类型,默认值 1

返回值

返回栅格数据。

示例

WITH foo AS (
SELECT ST_SetValues(
ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999),
1, 1, 1, ARRAY[
[1, 1, 1, 1, 1],
[1, 2, 2, 2, 1],
[1, 2, 3, 2, 1],
[1, 2, 2, 2, 1],
[1, 1, 1, 1, 1]
]::double precision[][]
) AS rast
)
SELECT
ST_DumpValues(ST_Slope(rast, 1, '32BF'))
FROM foo;
ST_DUMPVALUES(DUMPVALUES)      |
-------------------------------
(1,"{{10.0249881744385,21.56812|
85858154,26.5650520324707,21.5|
681285858154,10.0249881744385}|
,{21.5681285858154,35.26438903|
80859,36.8698959350586,35.2643|
890380859,21.5681285858154},{2|
6.5650520324707,36.86989593505|
86,0,36.8698959350586,26.56505|
20324707},{21.5681285858154,35|
.2643890380859,36.869895935058|
6,35.2643890380859,21.56812858|
58154},{10.0249881744385,21.56|
81285858154,26.5650520324707,2|
1.5681285858154,10.02498817443|
85}}")                         |
总数目:1

ST_Slope

ST_Slope — 返回高程栅格标注栏的坡度(默认情况下以度为单位)。对于分析地形非常有用。

语法

st_slope ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

pixeltype

text 类型,默认值 32BF

units

text 类型,默认值 DEGREES

scale

float8 类型,默认值 1

interpolate_nodata

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

CREATE OR REPLACE FUNCTION ST_TestRasterNgb(h integer, w integer, val float8)
    RETURNS raster AS
    DECLARE
    BEGIN
        RETURN ST_AddBand(ST_MakeEmptyRaster(h, w, 0, 0, 1, 1, 0, 0, 0), '32BF', val, -1);
    END;
    LANGUAGE 'ploscar';


SELECT
  ST_Value(rast, 2, 2) = 1,
  ST_Value(
    ST_Slope(rast, 1, NULL), 2, 2
  ) = 0
  FROM ST_TestRasterNgb(3, 3, 1) AS rast;
?COLUMN?(boolean)      |?COLUMN?(boolean)      |
----------------------------------------------
true                   |true                   |
总数目:1

drop FUNCTION ST_TestRasterNgb(h integer, w integer, val float8);

Box3D

Box3D — 返回栅格的封闭框的框3D表示。

语法

box3d ::=

参数

rast

raster 类型

返回值

返回box3d类型数据。

示例

SELECT rid, Box3D(rast) AS rastbox FROM dummy_rast;
RID(int)      |RASTBOX(box3d)      |
----------------------------------
1             |BOX3D(0.5 0.5 0,20.5|
              | 60.5 0)            |
----------------------------------
2             |BOX3D(3427927.75 579|
              |3243.75 0,3427928 5|
              |793244 0)           |
总数目:2

ST_ConvexHull

ST_ConvexHull — 返回栅格的凸壳几何图形,包括等于BandNoDataValue的像素值。对于形状规则且无倾斜的栅格,这将提供与ST_Entaine相同的结果,因此仅适用于形状不规则或倾斜的栅格。

语法

st_convexhull ::=

参数

rast

raster 类型

返回值

返回geometry类型数据。

示例

SELECT ST_AsText(ST_ConvexHull(ST_Collect(ST_GeomFromText('MULTILINESTRING((100 190,10 8),(150 10, 20 30))'),
ST_GeomFromText('MULTIPOINT(50 5, 150 30, 50 10, 10 10)'))) );
ST_ASTEXT(text)      |
---------------------
POLYGON((50 5,10 8,10|
 10,100 190,150 30,1|
50 10,50 5))         |
总数目:1

ST_DumpAsPolygons

ST_DumpAsPolygons — 返回给定栅格标注栏中的一组geomval(geom,val)行。如果未指定波段编号,则波段编号默认为1。

语法

st_dumpaspolygons ::=

参数

rast

raster 类型

band

int 类型,默认值 1

exclude_nodata_value

boolean 类型,默认值 TRUE

返回值

返回多个geometry类型数据。

示例

SELECT val, ST_AsText(geom) As geomwkt
FROM (
SELECT dp.*
FROM dummy_rast, ST_DumpAsPolygons(rast) AS dp
WHERE rid = 2
) As foo
WHERE val BETWEEN 249 and 251
ORDER BY val;
VAL(double precision)      |GEOMWKT(text)      |
----------------------------------------------
249                        |POLYGON((3427927.95|
                           | 5793243.95,342792|
                           |7.95 5793243.85,34|
                           |27928 5793243.85,3|
                           |427928 5793243.95,|
                           |3427927.95 5793243|
                           |.95))              |
----------------------------------------------
250                        |POLYGON((3427927.75|
                           | 5793243.9,3427927|
                           |.75 5793243.85,342|
                           |7927.8 5793243.85,|
                           |3427927.8 5793243.|
                           |9,3427927.75 57932|
                           |43.9))             |
----------------------------------------------
250                        |POLYGON((3427927.8 |
                           |5793243.8,3427927.|
                           |8 5793243.75,34279|
                           |27.85 5793243.75,3|
                           |427927.85 5793243.|
                           |8,3427927.8 579324|
                           |3.8))              |
----------------------------------------------
251                        |POLYGON((3427927.75|
                           | 5793243.85,342792|
                           |7.75 5793243.8,342|
                           |7927.8 5793243.8,3|
                           |427927.8 5793243.8|
                           |5,3427927.75 57932|
                           |43.85))            |
总数目:4

ST_Envelope

ST_Envelope — 返回栅格范围的多边形表示。

语法

st_envelope ::=

参数

rast

raster 类型

返回值

返回geometry类型数据。

示例

SELECT Box3D(geom), Box2D(geom), ST_AsText(ST_Envelope(geom)) As envelopewkt FROM (SELECT 'POLYGON((0 0, 0 1000012333334.34545678, 1.0000001 1, 1.0000001 0, 0 0))'::geometry As geom) As foo;
BOX3D(box3d)      |BOX2D(box2d)      |ENVELOPEWKT(text)      |
-----------------------------------------------------------
BOX3D(0 0 0,1.0000|BOX(0 0,1.0000001 |POLYGON((0 0,0 10000123|
001 1000012333334|1000012333334.35) |33334.35,1.0000001 100|
.35 0)            |                  |0012333334.35,1.000000|
                  |                  |1 0,0 0))              |
总数目:1

ST_MinConvexHull

ST_MinConvexHull — 返回不包括NODATA像素的栅格凸包几何图形。

语法

st_minconvexhull ::=

参数

rast

raster 类型

nband

int 类型,默认值 NULL

返回值

返回geometry类型数据。

示例

WITH foo AS (
SELECT
ST_SetValues(
ST_SetValues(
ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(9, 9, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', 0,
0), 2, '8BUI', 1, 0),
1, 1, 1,
ARRAY[
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 1],
[0, 0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
]::double precision[][]
),
2, 1, 1,
ARRAY[
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0, 0, 0, 0]
]::double precision[][]
) AS rast
)
SELECT
ST_AsText(ST_ConvexHull(rast)) AS hull,
ST_AsText(ST_MinConvexHull(rast)) AS mhull,
ST_AsText(ST_MinConvexHull(rast, 1)) AS mhull_1,
ST_AsText(ST_MinConvexHull(rast, 2)) AS mhull_2
FROM foo;
HULL(text)      |MHULL(text)      |MHULL_1(text)      |MHULL_2(text)      |
-----------------------------------------------------------------------
POLYGON((0 0,9 0|POLYGON((0 -3,9 -|POLYGON((3 -3,9 -3,|POLYGON((0 -3,6 -3,|
,9 -9,0 -9,0 0)|3,9 -9,0 -9,0 -3|9 -6,3 -6,3 -3))   |6 -9,0 -9,0 -3))   |
)               |))               |                   |                   |
总数目:1

ST_Polygon

ST_Polygon — 返回由像素值不是无数据值的像素并集形成的多多边形几何图形。如果未指定波段编号,则波段编号默认为1。

语法

st_polygon ::=

参数

rast

raster 类型

nband

int 类型,默认值 1

返回值

返回geometry类型数据。

示例

SELECT ST_Polygon(ST_GeomFromText('LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)'), 4326);
ST_POLYGON(geometry)      |
--------------------------
0103000020E610000001000000|
040000009A99999999C952404|
8E17A14AE873D400000000000|
4053400000000000003D40666|
6666666665340000000000080|
3D409A99999999C9524048E17|
A14AE873D40               |
总数目:1