栅格处理函数¶
ST_Clip¶
ST_Clip — 返回由输入几何图形剪裁的栅格。如果未指定波段编号,则处理所有波段。如果 crop 未指定或为TRUE,则将裁剪输出栅格。
参数¶
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。
参数¶
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波段栅格
参数¶
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 — 返回一个栅格或一组几何体-像素值对,表示两个栅格的共享部分或栅格和几何体的矢量化的几何体交集。
返回值¶
返回栅格数据。
示例¶
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 — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。
参数¶
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 — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。
参数¶
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 — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。
参数¶
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 — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。
参数¶
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 — 回调函数版本-返回给定一个或多个输入栅格、波段索引和一个用户指定的回调函数的单波段栅格。
参数¶
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表达式的单波段栅格。
参数¶
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表达式的单波段栅格。
参数¶
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表达式的单波段栅格。
参数¶
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。
返回值¶
返回栅格数据。
示例¶
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”的值可以是:交集、并集、第一个、第二个。
参数¶
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”的值可以是:交集、并集、第一个、第二个。
参数¶
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。
参数¶
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。如果未指定范围类型,则默认为相交。
参数¶
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。如果未指定范围类型,则默认为相交。
参数¶
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用户函数的结果的栅格,该用户函数涉及输入栅格波段中的值的邻域。
参数¶
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。所有其他波段将原封不动地返回。
参数¶
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个或多个标注栏组成的单个栅格。
返回值¶
返回栅格数据。
示例¶
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 — 栅格处理函数,用于计算邻域中唯一像素值的数量。
参数¶
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 — 从像素点的邻域内插像素值的栅格处理功能。
返回值¶
返回浮点数数据。
示例¶
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 — 计算邻域中最大像素值的栅格处理函数
参数¶
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 — 栅格处理函数,用于计算邻域中的平均像素值。
参数¶
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 — 计算邻域中最小像素值的栅格处理函数
参数¶
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 — 栅格处理函数,返回感兴趣的像素与相邻像素之间的最小距离(以像素数表示)。
返回值¶
返回浮点数数据。
示例¶
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 — 计算邻域内像素值范围的栅格处理函数。
参数¶
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 — 栅格处理功能,用于计算邻域内像素值的标准偏差。
参数¶
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 — 计算邻域中所有像素值之和的栅格处理函数。
参数¶
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 — 返回高程栅格标注栏的纵横比(默认情况下以度为单位)。对于分析地形非常有用。
参数¶
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 — 返回高程栅格标注栏的纵横比(默认情况下以度为单位)。对于分析地形非常有用。
参数¶
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 — 使用提供的方位角、海拔高度、亮度和比例输入返回高程栅格波段的假设照明。
参数¶
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 — 使用提供的方位角、海拔高度、亮度和比例输入返回高程栅格波段的假设照明。
参数¶
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 — 返回高程栅格标注栏的坡度(默认情况下以度为单位)。对于分析地形非常有用。
参数¶
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 — 返回高程栅格标注栏的坡度(默认情况下以度为单位)。对于分析地形非常有用。
参数¶
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类型数据。
示例¶
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相同的结果,因此仅适用于形状不规则或倾斜的栅格。
返回值¶
返回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。
返回值¶
返回多个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 — 返回栅格范围的多边形表示。
返回值¶
返回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像素的栅格凸包几何图形。
返回值¶
返回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。
返回值¶
返回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