栅格像素访问器和设置函数¶
ST_PixelAsPolygon¶
ST_PixelAsPolygon — 返回限定特定行和列的像素的多边形几何图形。
返回值¶
返回限定特定行和列的像素的多边形几何图形。
示例¶
SELECT i,j, ST_AsText(ST_PixelAsPolygon(foo.rast, i,j)) As b1pgeom
FROM dummy_rast As foo
CROSS JOIN generate_series(1,2) As i
CROSS JOIN generate_series(1,1) As j
WHERE rid=2;
I(int) |J(int) |B1PGEOM(text) |
-------------------------------------------
1 |1 |POLYGON((3427927.75|
| | 5793244,3427927.8|
| | 5793244,3427927.8|
| | 5793243.95,342792|
| |7.75 5793243.95,34|
| |27927.75 5793244)) |
-------------------------------------------
2 |1 |POLYGON((3427927.8 |
| |5793244,3427927.85|
| | 5793244,3427927.8|
| |5 5793243.95,34279|
| |27.8 5793243.95,34|
| |27927.8 5793244)) |
总数目:2
ST_PixelAsPolygons¶
ST_PixelAsPolygons — 返回限定栅格带的每个像素的多边形几何图形,以及每个像素的值、X和Y栅格坐标。
返回值¶
返回限定栅格波段的每个像素的多边形几何图形以及每个像素的值(双精度)、X和Y栅格坐标(整数)。
示例¶
SELECT (gv).x, (gv).y, (gv).val, ST_AsText((gv).geom) geom
FROM (SELECT ST_PixelAsPolygons(ST_SetValue(ST_SetValue(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 0.001, -0.001, 0.001, 0.001, 4269),
'8BUI'::text, 1, 0),2, 2, 10),1, 1, NULL) ) gv) foo;
X(int) |Y(int) |VAL(double precision) |GEOM(text) |
-------------------------------------------------------------------
2 |1 |1 |POLYGON((0.001 0|
| | |.001,0.002 0.00|
| | |2,0.003 0.001,0|
| | |.002 0,0.001 0.|
| | |001)) |
-------------------------------------------------------------------
1 |2 |1 |POLYGON((0.001 -|
| | |0.001,0.002 0,0|
| | |.003 -0.001,0.0|
| | |02 -0.002,0.001|
| | | -0.001)) |
-------------------------------------------------------------------
2 |2 |10 |POLYGON((0.002 0|
| | |,0.003 0.001,0.|
| | |004 0,0.003 -0.|
| | |001,0.002 0)) |
总数目:3
ST_PixelAsPoint¶
ST_PixelAsPoint — 返回像素左上角的点几何图形。
返回值¶
返回像素左上角的点几何图形。
示例¶
SELECT ST_AsText(ST_PixelAsPoint(rast, 1, 1)) FROM dummy_rast WHERE rid = 1;
ST_ASTEXT(text) |
---------------------
POINT(0.5 0.5) |
总数目:1
ST_PixelAsPoints¶
ST_PixelAsPoints — 返回栅格波段的每个像素的点几何图形以及每个像素的值、X和Y栅格坐标。点几何图形的坐标位于像素的左上角。
返回值¶
返回栅格波段的每个像素的点几何图形以及每个像素的值、X和Y栅格坐标。点几何图形的坐标位于像素的左上角。
示例¶
SELECT x, y, val, ST_AsText(geom) FROM (SELECT (ST_PixelAsPoints(rast, 1)).geom, (ST_PixelAsPoints(rast, 1)).x, (ST_PixelAsPoints(rast, 1)).y, (ST_PixelAsPoints(rast, 1)).val FROM dummy_rast WHERE rid = 2) foo;
X(int) |Y(int) |VAL(double precision) |ST_ASTEXT(text) |
------------------------------------------------------------------------
1 |1 |253 |POINT(3427927.75 5793|
| | |244) |
------------------------------------------------------------------------
2 |1 |254 |POINT(3427927.8 57932|
| | |44) |
------------------------------------------------------------------------
3 |1 |253 |POINT(3427927.85 5793|
| | |244) |
------------------------------------------------------------------------
4 |1 |254 |POINT(3427927.9 57932|
| | |44) |
------------------------------------------------------------------------
5 |1 |254 |POINT(3427927.95 5793|
| | |244) |
------------------------------------------------------------------------
1 |2 |253 |POINT(3427927.75 5793|
| | |243.95) |
------------------------------------------------------------------------
2 |2 |254 |POINT(3427927.8 57932|
| | |43.95) |
------------------------------------------------------------------------
3 |2 |254 |POINT(3427927.85 5793|
| | |243.95) |
------------------------------------------------------------------------
4 |2 |253 |POINT(3427927.9 57932|
| | |43.95) |
------------------------------------------------------------------------
5 |2 |249 |POINT(3427927.95 5793|
| | |243.95) |
------------------------------------------------------------------------
1 |3 |250 |POINT(3427927.75 5793|
| | |243.9) |
------------------------------------------------------------------------
2 |3 |254 |POINT(3427927.8 57932|
| | |43.9) |
------------------------------------------------------------------------
3 |3 |254 |POINT(3427927.85 5793|
| | |243.9) |
------------------------------------------------------------------------
4 |3 |252 |POINT(3427927.9 57932|
| | |43.9) |
------------------------------------------------------------------------
5 |3 |249 |POINT(3427927.95 5793|
| | |243.9) |
------------------------------------------------------------------------
1 |4 |251 |POINT(3427927.75 5793|
| | |243.85) |
------------------------------------------------------------------------
2 |4 |253 |POINT(3427927.8 57932|
| | |43.85) |
------------------------------------------------------------------------
3 |4 |254 |POINT(3427927.85 5793|
| | |243.85) |
------------------------------------------------------------------------
4 |4 |254 |POINT(3427927.9 57932|
| | |43.85) |
------------------------------------------------------------------------
5 |4 |253 |POINT(3427927.95 5793|
| | |243.85) |
------------------------------------------------------------------------
1 |5 |252 |POINT(3427927.75 5793|
| | |243.8) |
------------------------------------------------------------------------
2 |5 |250 |POINT(3427927.8 57932|
| | |43.8) |
------------------------------------------------------------------------
3 |5 |254 |POINT(3427927.85 5793|
| | |243.8) |
------------------------------------------------------------------------
4 |5 |254 |POINT(3427927.9 57932|
| | |43.8) |
------------------------------------------------------------------------
5 |5 |254 |POINT(3427927.95 5793|
| | |243.8) |
总数目:25
ST_PixelAsCentroid¶
ST_PixelAsCentroid — 返回像素表示的区域的质心(点几何图形)。
返回值¶
返回像素表示的区域的质心(点几何图形)。
示例¶
SELECT ST_AsText(ST_PixelAsCentroid(rast, 1, 1)) FROM dummy_rast WHERE rid = 1;
ST_ASTEXT(text) |
---------------------
POINT(1.5 2) |
总数目:1
ST_PixelAsCentroids¶
ST_PixelAsCentroids — 返回栅格标注栏的每个像素的质心(点几何图形)以及每个像素的值、X和Y栅格坐标。点几何图形是由像素表示的区域的质心。
返回值¶
返回栅格标注栏的每个像素的质心(点几何图形)以及每个像素的值、X和Y栅格坐标。点几何图形是由像素表示的区域的质心。
示例¶
SELECT x, y, val, ST_AsText(geom) FROM (SELECT dp.* FROM dummy_rast, ST_PixelAsCentroids(rast, 1) AS dp WHERE rid = 2) foo;
X(int) |Y(int) |VAL(double precision) |ST_ASTEXT(text) |
------------------------------------------------------------------------
1 |1 |253 |POINT(3427927.775 579|
| | |3243.975) |
------------------------------------------------------------------------
2 |1 |254 |POINT(3427927.825 579|
| | |3243.975) |
------------------------------------------------------------------------
3 |1 |253 |POINT(3427927.875 579|
| | |3243.975) |
------------------------------------------------------------------------
4 |1 |254 |POINT(3427927.925 579|
| | |3243.975) |
------------------------------------------------------------------------
5 |1 |254 |POINT(3427927.975 579|
| | |3243.975) |
------------------------------------------------------------------------
1 |2 |253 |POINT(3427927.775 579|
| | |3243.925) |
------------------------------------------------------------------------
2 |2 |254 |POINT(3427927.825 579|
| | |3243.925) |
------------------------------------------------------------------------
3 |2 |254 |POINT(3427927.875 579|
| | |3243.925) |
------------------------------------------------------------------------
4 |2 |253 |POINT(3427927.925 579|
| | |3243.925) |
------------------------------------------------------------------------
5 |2 |249 |POINT(3427927.975 579|
| | |3243.925) |
------------------------------------------------------------------------
1 |3 |250 |POINT(3427927.775 579|
| | |3243.875) |
------------------------------------------------------------------------
2 |3 |254 |POINT(3427927.825 579|
| | |3243.875) |
------------------------------------------------------------------------
3 |3 |254 |POINT(3427927.875 579|
| | |3243.875) |
------------------------------------------------------------------------
4 |3 |252 |POINT(3427927.925 579|
| | |3243.875) |
------------------------------------------------------------------------
5 |3 |249 |POINT(3427927.975 579|
| | |3243.875) |
------------------------------------------------------------------------
1 |4 |251 |POINT(3427927.775 579|
| | |3243.825) |
------------------------------------------------------------------------
2 |4 |253 |POINT(3427927.825 579|
| | |3243.825) |
------------------------------------------------------------------------
3 |4 |254 |POINT(3427927.875 579|
| | |3243.825) |
------------------------------------------------------------------------
4 |4 |254 |POINT(3427927.925 579|
| | |3243.825) |
------------------------------------------------------------------------
5 |4 |253 |POINT(3427927.975 579|
| | |3243.825) |
------------------------------------------------------------------------
1 |5 |252 |POINT(3427927.775 579|
| | |3243.775) |
------------------------------------------------------------------------
2 |5 |250 |POINT(3427927.825 579|
| | |3243.775) |
------------------------------------------------------------------------
3 |5 |254 |POINT(3427927.875 579|
| | |3243.775) |
------------------------------------------------------------------------
4 |5 |254 |POINT(3427927.925 579|
| | |3243.775) |
------------------------------------------------------------------------
5 |5 |254 |POINT(3427927.975 579|
| | |3243.775) |
总数目:25
ST_Value¶
ST_Value — 返回给定列x、行像素或特定几何点处的给定带区的值。波段编号从1开始,如果未指定,则假定为1。如果 exclude_nodata_value 设置为False,则所有像素都包括 nodata 像素被视为相交并返回值。如果 exclude_nodata_value 不传入,然后从栅格元数据中读取它。
参数¶
rast
raster 类型
pt
geometry 类型
exclude_nodata_value
boolean 类型,默认值 true
band
int 类型
resample
text 类型,默认值 nearest
x
int 类型
y
int 类型
返回值¶
返回给定列x、行像素或给定几何点处的给定波段的值。波段编号从1开始,如果未指定,则假定波段为1。
如果 exclude_nodata_value 设置为True,则仅为None nodata 像素被考虑在内。如果 exclude_nodata_value 设置为False,则考虑所有像素。
示例¶
SELECT
St_Value(rast, 1, 3, 3),
St_Value(rast, 2, 3, 3)
FROM (
SELECT
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0, 0),
ARRAY[
ROW(1, '64BF', 1234.567, NULL),
ROW(2, '8BUI', 255, NULL)
]::addbandarg[]
) AS rast
) foo;
ST_VALUE(double precision) |ST_VALUE(double precision) |
----------------------------------------------------------------
1234.567 |255 |
总数目:1
ST_NearestValue¶
ST_NearestValue — 返回最接近的非 NODATA 由Columnx和Rowy或在与栅格相同的空间参考坐标系中表示的几何点指定的给定波段的像素值。
参数¶
rast
raster 类型
bandnum
int 类型
pt
geometry 类型
exclude_nodata_value
boolean 类型,默认值 true
columnx
int 类型
rowy
int 类型
返回值¶
返回最接近的非 NODATA 给定列X、行像素或特定几何点处的给定带值。如果列x、行像素或指定几何点处的像素为 NODATA ,则该函数将查找与其值不是的列x、行像素或几何点最近的像素 NODATA 。
示例¶
SELECT
ST_Value(rast, 2, 2) AS value,
ST_NearestValue(rast, 2, 2) AS nearestvalue
FROM (
SELECT
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
'8BUI'::text, 1, 0
),
1, 1, 0.
),
2, 3, 0.
),
3, 5, 0.
),
4, 2, 0.
),
5, 4, 0.
) AS rast
) AS foo;
VALUE(double precision) |NEARESTVALUE(double precision) |
-----------------------------------------------------------------
1 |1 |
总数目:1
ST_Neighborhood¶
ST_Neighborhood — 对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
参数¶
rast
raster 类型
bandnum
int 类型
columnX
int 类型
rowY
int 类型
distanceX
int 类型
distanceY
int 类型
exclude_nodata_value
boolean 类型,默认值 true
返回值¶
对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
示例¶
DROP TABLE raster_neighborhood;
CREATE TABLE raster_neighborhood (
rast raster
);
CREATE OR REPLACE PROCEDURE insert_into_raster_neighborhood(rast raster) is PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO raster_neighborhood VALUES (rast);
commit;
END;
LANGUAGE 'ploscar';
CREATE OR REPLACE FUNCTION make_test_raster()
RETURNS void
AS
DECLARE
rast raster;
BEGIN
rast := ST_MakeEmptyRaster(10, 10, 0, 0, 1, -1, 0, 0, 0);
rast := ST_AddBand(rast, 1, '8BUI', 1, 0);
rast := ST_SetValue(rast, 1, 1, 0);
rast := ST_SetValue(rast, 4, 1, 0);
rast := ST_SetValue(rast, 7, 1, 0);
rast := ST_SetValue(rast, 10, 1, 0);
rast := ST_SetValue(rast, 2, 3, 0);
rast := ST_SetValue(rast, 5, 3, 0);
rast := ST_SetValue(rast, 8, 3, 0);
rast := ST_SetValue(rast, 3, 5, 0);
rast := ST_SetValue(rast, 6, 5, 0);
rast := ST_SetValue(rast, 9, 5, 0);
rast := ST_SetValue(rast, 1, 7, 0);
rast := ST_SetValue(rast, 4, 7, 0);
rast := ST_SetValue(rast, 7, 7, 0);
rast := ST_SetValue(rast, 10, 7, 0);
rast := ST_SetValue(rast, 2, 9, 0);
rast := ST_SetValue(rast, 5, 9, 0);
rast := ST_SetValue(rast, 8, 9, 0);
insert_into_raster_neighborhood(rast);
RETURN;
END;
LANGUAGE 'ploscar';
SELECT make_test_raster();
MAKE_TEST_RASTER(VOID) |
----------------------------
总数目:1
DROP FUNCTION IF EXISTS make_test_raster();
drop PROCEDURE insert_into_raster_neighborhood;
SELECT
ST_Neighborhood(rast, 1, 1, 1, 1, 1)
FROM raster_neighborhood;
ST_NEIGHBORHOOD(_FLOAT8) |
------------------------------
{{NULL,NULL,NULL},{NULL,NULL,1|
},{NULL,1,1}} |
总数目:1
ST_Neighborhood¶
ST_Neighborhood — 对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
参数¶
rast
raster 类型
bandnum
int 类型
columnX
int 类型
rowY
int 类型
distanceX
int 类型
distanceY
int 类型
exclude_nodata_value
boolean 类型,默认值 true
返回值¶
对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
示例¶
SELECT
ST_Neighborhood(rast, 2, 2, 1, 1)
FROM (
SELECT
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(5, 5, -2, 2, 1, -1, 0, 0, 0),
'8BUI'::text, 1, 0
),
1, 1, 1, ARRAY[
[0, 1, 1, 1, 1],
[1, 1, 1, 0, 1],
[1, 0, 1, 1, 1],
[1, 1, 1, 1, 0],
[1, 1, 0, 1, 1]
]::double precision[],
1 ) AS rast
) AS foo;
ST_NEIGHBORHOOD(_FLOAT8) |
------------------------------
{{NULL,1,1},{1,1,1},{1,NULL,1}|
} |
总数目:1
ST_Neighborhood¶
ST_Neighborhood — 对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
参数¶
rast
raster 类型
bandnum
int 类型
pt
geometry 类型
distanceX
int 类型
distanceY
int 类型
exclude_nodata_value
boolean 类型,默认值 true
返回值¶
对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
示例¶
SELECT
ST_Neighborhood(rast, 1, 'POINT(0 0)'::geometry, 1, 1)
FROM raster_neighborhood;
ST_NEIGHBORHOOD(_FLOAT8) |
------------------------------
{{NULL,NULL,NULL},{NULL,NULL,1|
},{NULL,1,1}} |
总数目:1
ST_Neighborhood¶
ST_Neighborhood — 对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
参数¶
rast
raster 类型
pt
geometry 类型
distanceX
int 类型
distanceY
int 类型
exclude_nodata_value
boolean 类型,默认值 true
返回值¶
对象的二维双精度数组。 NODATA 由ColumnX和Rowy指定的给定波段像素周围的值,或在与栅格相同的空间参考坐标系中表示的几何点。
示例¶
SELECT
ST_Neighborhood(rast, 'POINT(0 0)'::geometry, 1, 1)
FROM raster_neighborhood;
ST_NEIGHBORHOOD(_FLOAT8) |
------------------------------
{{NULL,NULL,NULL},{NULL,NULL,1|
},{NULL,1,1}} |
总数目:1
ST_SetValue¶
ST_SetValue — 返回因设置给定列x、行像素或与特定几何图形相交的像素中的给定波段的值而修改的栅格。波段编号从1开始,如果未指定,则假定为1。
返回值¶
返回修改后的栅格,其结果是在给定栅格的行和列或几何图形的情况下,将指定带区的指定像素值设置为新值。如果未指定波段,则假定为波段1。
示例¶
SELECT
count,
round(sum, 3),
round(mean, 3),
round(stddev, 3),
round(min, 3),
round(max, 3)
FROM ST_SummaryStats(
ST_SetValue(
ST_SetValue(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(10, 10, 10, 10, 2, 2, 0, 0,0)
, 1, '64BF', 0, 0
)
, 1, 1, 1, -10
)
, 1, 5, 4, 0
)
, 1, 5, 5, 3.14159
)
, TRUE
);
COUNT(int) |ROUND(numeric) |ROUND(numeric) |ROUND(numeric) |ROUND(numeric) |ROUND(numeric) |
--------------------------------------------------------------------------------------------------------------------
2 |-6.858 |-3.429 |6.571 |-10 |3.142 |
总数目:1
SELECT
ST_Value(t.rast, 1, 1, 1),
ST_Value(t.rast, 1, 10, 10),
ST_Value(t.rast, 1, 2, 10),
ST_BandNoDataValue(rast, 1)
FROM (
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[]
) AS rast OFFSET 0
) AS t;
ST_VALUE(double precision) |ST_VALUE(double precision) |ST_VALUE(double precision) |ST_BANDNODATAVALUE(double precision) |
------------------------------------------------------------------------------------------------------------------------------------------
150 |2 |null |255 |
总数目:1
ST_SetValues¶
ST_SetValues — 返回通过设置给定波段的值而修改的栅格。
参数¶
rast
raster 类型
nband
int 类型
columnx
int 类型
rowy
int 类型
newvalueset
float8[][] 类型
noset
boolean[][] 类型,默认值 NULL
keepnodata
boolean 类型,默认值 FALSE
返回值¶
返回由于将指定的像素设置为指定波段的新值而修改的栅格。
示例¶
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_SetValues¶
ST_SetValues — 返回通过设置给定波段的值而修改的栅格。
参数¶
rast
raster 类型
nband
int 类型
columnx
int 类型
rowy
int 类型
newvalueset
float8[][] 类型
nosetvalue
float8 类型
keepnodata
boolean 类型,默认值 FALSE
返回值¶
返回由于将指定的像素设置为指定波段的新值而修改的栅格。
示例¶
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_SetValues¶
ST_SetValues — 返回通过设置给定波段的值而修改的栅格。
参数¶
rast
raster 类型
nband
int 类型
columnx
int 类型
rowy
int 类型
width
int 类型
height
int 类型
newvalue
float8 类型
keepnodata
boolean 类型,默认值 FALSE
返回值¶
返回由于将指定的像素设置为指定波段的新值而修改的栅格。
示例¶
SELECT
(poly).x, (poly).y, (poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 2, 2, 2, 2, 9
) ) AS poly
) foo
ORDER BY 1, 2;
X(int) |Y(int) |VAL(double precision) |
---------------------------------------------------
1 |1 |1 |
---------------------------------------------------
1 |2 |1 |
---------------------------------------------------
1 |3 |1 |
---------------------------------------------------
2 |1 |1 |
---------------------------------------------------
2 |2 |9 |
---------------------------------------------------
2 |3 |9 |
---------------------------------------------------
3 |1 |1 |
---------------------------------------------------
3 |2 |9 |
---------------------------------------------------
3 |3 |9 |
总数目:9
SELECT
(poly).x, (poly).y, (poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 2, 2, NULL
),
1, 2, 2, 2, 2, 9, TRUE
) ) AS poly
) foo
ORDER BY 1, 2;
X(int) |Y(int) |VAL(double precision) |
---------------------------------------------------
1 |1 |1 |
---------------------------------------------------
1 |2 |1 |
---------------------------------------------------
1 |3 |1 |
---------------------------------------------------
2 |1 |1 |
---------------------------------------------------
2 |3 |9 |
---------------------------------------------------
3 |1 |1 |
---------------------------------------------------
3 |2 |9 |
---------------------------------------------------
3 |3 |9 |
总数目:8
ST_SetValues¶
ST_SetValues — 返回通过设置给定波段的值而修改的栅格。
参数¶
rast
raster 类型
columnx
int 类型
rowy
int 类型
width
int 类型
height
int 类型
newvalue
float8 类型
keepnodata
boolean 类型,默认值 FALSE
返回值¶
返回由于将指定的像素设置为指定波段的新值而修改的栅格。
示例¶
SELECT
(poly).x, (poly).y, (poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 2, 2, 2, 2, 9
) ) AS poly
) foo
ORDER BY 1, 2;
X(int) |Y(int) |VAL(double precision) |
---------------------------------------------------
1 |1 |1 |
---------------------------------------------------
1 |2 |1 |
---------------------------------------------------
1 |3 |1 |
---------------------------------------------------
2 |1 |1 |
---------------------------------------------------
2 |2 |9 |
---------------------------------------------------
2 |3 |9 |
---------------------------------------------------
3 |1 |1 |
---------------------------------------------------
3 |2 |9 |
---------------------------------------------------
3 |3 |9 |
总数目:9
SELECT
(poly).x, (poly).y, (poly).val
FROM (
SELECT
ST_PixelAsPolygons(
ST_SetValues(
ST_SetValue(
ST_AddBand(
ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI', 1, 0
),
1, 2, 2, NULL
),
1, 2, 2, 2, 2, 9, TRUE
) ) AS poly
) foo
ORDER BY 1, 2;
X(int) |Y(int) |VAL(double precision) |
---------------------------------------------------
1 |1 |1 |
---------------------------------------------------
1 |2 |1 |
---------------------------------------------------
1 |3 |1 |
---------------------------------------------------
2 |1 |1 |
---------------------------------------------------
2 |3 |9 |
---------------------------------------------------
3 |1 |1 |
---------------------------------------------------
3 |2 |9 |
---------------------------------------------------
3 |3 |9 |
总数目:8
ST_SetValues¶
ST_SetValues — 返回通过设置给定波段的值而修改的栅格。
返回值¶
返回由于将指定的像素设置为指定波段的新值而修改的栅格。
示例¶
WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI', 0, 0) AS rast
),
bar AS (
SELECT 1 AS gid, 'SRID=0;POINT(2.5 -2.5)'::geometry geom
UNION ALL
SELECT 2 AS gid, 'SRID=0;POLYGON((1 -1, 4 -1, 4 -4, 1 -4, 1 -1))'::geometry geom
UNION ALL
SELECT 3 AS gid, 'SRID=0;POLYGON((0 0, 5 0, 5 -1, 1 -1, 1 -4, 0 -4, 0 0))'::geometry geom
UNION ALL
SELECT 4 AS gid, 'SRID=0;MULTIPOINT(0 0, 4 4, 4 -4)'::geometry
)
SELECT
t1.rid, t2.gid, t3.gid, ST_DumpValues(ST_SetValues(rast, 1, ARRAY[ROW(t2.geom, t2.gid),
ROW(t3.geom, t3.gid)]::geomval[]))
FROM foo t1
CROSS JOIN bar t2
CROSS JOIN bar t3
WHERE t2.gid = 1
AND t3.gid = 2
ORDER BY t1.rid, t2.gid, t3.gid;
RID(int) |GID(int) |GID(int) |ST_DUMPVALUES(DUMPVALUES) |
-------------------------------------------------------------------------
1 |1 |2 |(1,"{{NULL,NULL,NULL,NULL,NULL}|
| | |,{NULL,2,2,2,NULL},{NULL,2,2,2|
| | |,NULL},{NULL,2,2,2,NULL},{NULL|
| | |,NULL,NULL,NULL,NULL}}") |
总数目:1
ST_DumpValues¶
ST_DumpValues — 以二维数组的形式获取指定波段的值。
返回值¶
以二维数组的形式获取指定波段的值(第一个索引是行,第二个是列)。如果 nband 为空或未提供,则处理所有栅格波段。
示例¶
WITH foo AS (
SELECT ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI'::text, 1, 0), 2, '32BF'::text, 3, -9999), 3, '16BSI', 0, 0) AS rast
)
SELECT
(ST_DumpValues(rast))
FROM foo;
ST_DUMPVALUES(DUMPVALUES) |
-------------------------------
(1,"{{1,1,1},{1,1,1},{1,1,1}}")|
-------------------------------
(2,"{{3,3,3},{3,3,3},{3,3,3}}")|
-------------------------------
(3,"{{NULL,NULL,NULL},{NULL,NUL|
L,NULL},{NULL,NULL,NULL}}") |
总数目:3
WITH foo AS (
SELECT ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0),
1, '8BUI'::text, 1, 0), 2, '32BF'::text, 3, -9999), 3, '16BSI', 0, 0) AS rast
)
SELECT
(ST_DumpValues(rast, ARRAY[3, 1]))
FROM foo;
ST_DUMPVALUES(DUMPVALUES) |
-------------------------------
(3,"{{NULL,NULL,NULL},{NULL,NUL|
L,NULL},{NULL,NULL,NULL}}") |
-------------------------------
(1,"{{1,1,1},{1,1,1},{1,1,1}}")|
总数目:2
WITH foo AS (
SELECT ST_SetValue(ST_AddBand(ST_MakeEmptyRaster(3, 3, 0, 0, 1, -1, 0, 0, 0), 1, '8BUI',
1, 0), 1, 2, 5) AS rast
)
SELECT
(ST_DumpValues(rast, 1))[2][1]
FROM foo;
?COLUMN?(double precision) |
--------------------------------
5 |
总数目:1
ST_PixelOfValue¶
ST_PixelOfValue — 获取其值等于搜索值的像素的Columnx,Rowy坐标。
参数¶
rast
raster 类型
nband
int 类型
searcharr
float8[] 类型
exclude_nodata_value
boolean 类型,默认值 true
search
float8 类型
返回值¶
获取其值等于搜索值的像素的列x、行坐标。如果未指定波段,则假定为波段1。
示例¶
DROP TABLE raster_pixelofvalue;
CREATE TABLE raster_pixelofvalue (
rast raster
);
CREATE OR REPLACE PROCEDURE insert_into_raster_pixelofvalue(rast raster) is PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO raster_pixelofvalue VALUES (rast);
commit;
END;
LANGUAGE 'ploscar';
CREATE OR REPLACE FUNCTION make_test_raster()
RETURNS void
AS
DECLARE
width int := 10;
height int := 10;
x int;
y int;
rast raster;
tmp int;
BEGIN
rast := ST_MakeEmptyRaster(width, height, 0, 0, 1, -1, 0, 0, 0);
rast := ST_AddBand(rast, 1, '32BUI', 0, 0);
FOR x IN 1..width LOOP
FOR y IN 1..height LOOP
tmp = (x+y)/2;
if (x+y) < (tmp*2) then
tmp = tmp -1;
end if;
tmp = (x+y) - 2*tmp;
IF tmp = 1 THEN
rast := ST_SetValue(rast, 1, x, y, x + y);
END IF;
END LOOP;
END LOOP;
insert_into_raster_pixelofvalue(rast);
RETURN;
END;
LANGUAGE 'ploscar';
SELECT make_test_raster();
MAKE_TEST_RASTER(VOID) |
----------------------------
总数目:1
DROP FUNCTION make_test_raster();
drop PROCEDURE insert_into_raster_pixelofvalue;
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast, 1,
ARRAY[3, 11]
) AS pixval
FROM raster_pixelofvalue
) foo;
VAL(double precision) |X(int) |Y(int) |
---------------------------------------------------
3 |1 |2 |
---------------------------------------------------
11 |1 |10 |
---------------------------------------------------
3 |2 |1 |
---------------------------------------------------
11 |2 |9 |
---------------------------------------------------
11 |3 |8 |
---------------------------------------------------
11 |4 |7 |
---------------------------------------------------
11 |5 |6 |
---------------------------------------------------
11 |6 |5 |
---------------------------------------------------
11 |7 |4 |
---------------------------------------------------
11 |8 |3 |
---------------------------------------------------
11 |9 |2 |
---------------------------------------------------
11 |10 |1 |
总数目:12
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast, 1,
ARRAY[5]
) AS pixval
FROM raster_pixelofvalue
) foo;
VAL(double precision) |X(int) |Y(int) |
---------------------------------------------------
5 |1 |4 |
---------------------------------------------------
5 |2 |3 |
---------------------------------------------------
5 |3 |2 |
---------------------------------------------------
5 |4 |1 |
总数目:4
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast,
ARRAY[0]
) AS pixval
FROM raster_pixelofvalue
) foo;
VAL(double precision) |X(int) |Y(int) |
总数目:0
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast,
ARRAY[0],
FALSE
) AS pixval
FROM raster_pixelofvalue
) foo;
VAL(double precision) |X(int) |Y(int) |
---------------------------------------------------
0 |1 |1 |
---------------------------------------------------
0 |1 |3 |
---------------------------------------------------
0 |1 |5 |
---------------------------------------------------
0 |1 |7 |
---------------------------------------------------
0 |1 |9 |
---------------------------------------------------
0 |2 |2 |
---------------------------------------------------
0 |2 |4 |
---------------------------------------------------
0 |2 |6 |
---------------------------------------------------
0 |2 |8 |
---------------------------------------------------
0 |2 |10 |
---------------------------------------------------
0 |3 |1 |
---------------------------------------------------
0 |3 |3 |
---------------------------------------------------
0 |3 |5 |
---------------------------------------------------
0 |3 |7 |
---------------------------------------------------
0 |3 |9 |
---------------------------------------------------
0 |4 |2 |
---------------------------------------------------
0 |4 |4 |
---------------------------------------------------
0 |4 |6 |
---------------------------------------------------
0 |4 |8 |
---------------------------------------------------
0 |4 |10 |
---------------------------------------------------
0 |5 |1 |
---------------------------------------------------
0 |5 |3 |
---------------------------------------------------
0 |5 |5 |
---------------------------------------------------
0 |5 |7 |
---------------------------------------------------
0 |5 |9 |
---------------------------------------------------
0 |6 |2 |
---------------------------------------------------
0 |6 |4 |
---------------------------------------------------
0 |6 |6 |
---------------------------------------------------
0 |6 |8 |
---------------------------------------------------
0 |6 |10 |
---------------------------------------------------
0 |7 |1 |
---------------------------------------------------
0 |7 |3 |
---------------------------------------------------
0 |7 |5 |
---------------------------------------------------
0 |7 |7 |
---------------------------------------------------
0 |7 |9 |
---------------------------------------------------
0 |8 |2 |
---------------------------------------------------
0 |8 |4 |
---------------------------------------------------
0 |8 |6 |
---------------------------------------------------
0 |8 |8 |
---------------------------------------------------
0 |8 |10 |
---------------------------------------------------
0 |9 |1 |
---------------------------------------------------
0 |9 |3 |
---------------------------------------------------
0 |9 |5 |
---------------------------------------------------
0 |9 |7 |
---------------------------------------------------
0 |9 |9 |
---------------------------------------------------
0 |10 |2 |
---------------------------------------------------
0 |10 |4 |
---------------------------------------------------
0 |10 |6 |
---------------------------------------------------
0 |10 |8 |
---------------------------------------------------
0 |10 |10 |
总数目:50
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast, 1,
7
) AS pixval
FROM raster_pixelofvalue
) foo;
X(int) |Y(int) |
------------------------
1 |6 |
------------------------
2 |5 |
------------------------
3 |4 |
------------------------
4 |3 |
------------------------
5 |2 |
------------------------
6 |1 |
总数目:6
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast,
2
) AS pixval
FROM raster_pixelofvalue
) foo;
X(int) |Y(int) |
总数目:0
SELECT
(pixval).*
FROM (
SELECT
ST_PixelOfValue(
rast,
0,
FALSE
) AS pixval
FROM raster_pixelofvalue
) foo;
X(int) |Y(int) |
------------------------
1 |1 |
------------------------
1 |3 |
------------------------
1 |5 |
------------------------
1 |7 |
------------------------
1 |9 |
------------------------
2 |2 |
------------------------
2 |4 |
------------------------
2 |6 |
------------------------
2 |8 |
------------------------
2 |10 |
------------------------
3 |1 |
------------------------
3 |3 |
------------------------
3 |5 |
------------------------
3 |7 |
------------------------
3 |9 |
------------------------
4 |2 |
------------------------
4 |4 |
------------------------
4 |6 |
------------------------
4 |8 |
------------------------
4 |10 |
------------------------
5 |1 |
------------------------
5 |3 |
------------------------
5 |5 |
------------------------
5 |7 |
------------------------
5 |9 |
------------------------
6 |2 |
------------------------
6 |4 |
------------------------
6 |6 |
------------------------
6 |8 |
------------------------
6 |10 |
------------------------
7 |1 |
------------------------
7 |3 |
------------------------
7 |5 |
------------------------
7 |7 |
------------------------
7 |9 |
------------------------
8 |2 |
------------------------
8 |4 |
------------------------
8 |6 |
------------------------
8 |8 |
------------------------
8 |10 |
------------------------
9 |1 |
------------------------
9 |3 |
------------------------
9 |5 |
------------------------
9 |7 |
------------------------
9 |9 |
------------------------
10 |2 |
------------------------
10 |4 |
------------------------
10 |6 |
------------------------
10 |8 |
------------------------
10 |10 |
总数目:50