栅格编辑函数¶
ST_SetGeoReference¶
ST_SetGeoReference — 在单个调用中设置地理参考6个地理参考参数。数字之间应该用空格隔开。接受GDAL或ESRI格式的输入。默认值为GDAL。
返回值¶
返回栅格数据
示例¶
WITH foo AS (
SELECT ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0) AS rast
)
SELECT
0 AS rid, (ST_Metadata(rast))
FROM foo
UNION ALL
SELECT
1, (ST_Metadata(ST_SetGeoReference(rast, '10 0 0 -10 0.1 0.1', 'GDAL')))
FROM foo
UNION ALL
SELECT
2, (ST_Metadata(ST_SetGeoReference(rast, '10 0 0 -10 5.1 -4.9', 'ESRI')))
FROM foo
UNION ALL
SELECT
3, (ST_Metadata(ST_SetGeoReference(rast, 1, 1, 10, -10, 0.001, 0.001)))
FROM foo;
RID(int) |ST_METADATA(METADATA) |
-----------------------------------------
0 |(0,0,5,5,1,-1,0,0,0,0) |
-----------------------------------------
1 |(0.1,0.1,5,5,10,-10,0,0,0,0|
|) |
-----------------------------------------
2 |(0.0999999999999996,0.09999|
|99999999996,5,5,10,-10,0,0|
|,0,0) |
-----------------------------------------
3 |(1,1,5,5,10,-10,0.001,0.001|
|,0,0) |
总数目:4
ST_SetGeoReference¶
ST_SetGeoReference — 在单个调用中设置地理参考6个地理参考参数。数字之间应该用空格隔开。接受GDAL或ESRI格式的输入。默认值为GDAL。
参数¶
rast
raster 类型
upperleftx
float8 类型
upperleftx
float8 类型
upperlefty
float8 类型
scalex
float8 类型
scaley
float8 类型
skewx
float8 类型
skewy
float8 类型
返回值¶
返回栅格数据
示例¶
WITH foo AS (
SELECT ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0) AS rast
)
SELECT
0 AS rid, (ST_Metadata(rast))
FROM foo
UNION ALL
SELECT
1, (ST_Metadata(ST_SetGeoReference(rast, '10 0 0 -10 0.1 0.1', 'GDAL')))
FROM foo
UNION ALL
SELECT
2, (ST_Metadata(ST_SetGeoReference(rast, '10 0 0 -10 5.1 -4.9', 'ESRI')))
FROM foo
UNION ALL
SELECT
3, (ST_Metadata(ST_SetGeoReference(rast, 1, 1, 10, -10, 0.001, 0.001)))
FROM foo;
RID(int) |ST_METADATA(METADATA) |
-----------------------------------------
0 |(0,0,5,5,1,-1,0,0,0,0) |
-----------------------------------------
1 |(0.1,0.1,5,5,10,-10,0,0,0,0|
|) |
-----------------------------------------
2 |(0.0999999999999996,0.09999|
|99999999996,5,5,10,-10,0,0|
|,0,0) |
-----------------------------------------
3 |(1,1,5,5,10,-10,0.001,0.001|
|,0,0) |
总数目:4
ST_SetRotation¶
ST_SetRotation — 以弧度设置栅格的旋转。
返回值¶
返回均匀旋转的栅格。
示例¶
SELECT
ST_ScaleX(rast1), ST_ScaleY(rast1), ST_SkewX(rast1), ST_SkewY(rast1),
ST_ScaleX(rast2), ST_ScaleY(rast2), ST_SkewX(rast2), ST_SkewY(rast2)
FROM (
SELECT ST_SetRotation(rast, 15) AS rast1, rast as rast2 FROM dummy_rast
) AS foo order by ST_ScaleX(rast1);
ST_SCALEX(double precision) |ST_SCALEY(double precision) |ST_SKEWX(double precision) |ST_SKEWY(double precision) |ST_SCALEX(double precision) |ST_SCALEY(double precision) |ST_SKEWX(double precision) |ST_SKEWY(double precision) |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-1.51937582571764 |-2.27906373857646 |1.95086352047135 |-1.30057568031423 |2 |3 |0 |0 |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-0.0379843956429411 |0.0379843956429411 |-0.0325143920078558 |-0.0325143920078558 |0.05 |-0.05 |0 |0 |
总数目:2
ST_SetScale¶
ST_SetScale — 以坐标参考系为单位设置像素的X和Y大小。数字单位/像素宽度/高度。
返回值¶
返回栅格数据。
示例¶
select ST_SetScale(rast, 1.5) from dummy_rast WHERE rid = 2;
ST_SETSCALE(RASTER) |
-------------------------
0100000300000000000000F83|
F000000000000F83F000000E|
02B274A41000000007719564|
100000000000000000000000|
000000000000000000500050|
00400FDFEFDFEFEFDFEFEFDF|
9FAFEFEFCF9FBFDFEFEFDFCF|
AFEFEFE04004E627AADD1607|
6B4F9FE6370A9F5FE59637AB|
0E54F5861708704004656648|
7A1506CA2E3FA5A6CAFFBFE4|
D566DA4CB3E454C5665 |
总数目:1
select ST_SetScale(rast, 1.5, 0.55) from dummy_rast WHERE rid = 2;
ST_SETSCALE(RASTER) |
-------------------------
0100000300000000000000F83|
F9A9999999999E13F000000E|
02B274A41000000007719564|
100000000000000000000000|
000000000000000000500050|
00400FDFEFDFEFEFDFEFEFDF|
9FAFEFEFCF9FBFDFEFEFDFCF|
AFEFEFE04004E627AADD1607|
6B4F9FE6370A9F5FE59637AB|
0E54F5861708704004656648|
7A1506CA2E3FA5A6CAFFBFE4|
D566DA4CB3E454C5665 |
总数目:1
ST_SetSkew¶
ST_SetSkew — 设置地理参考X和Y倾斜(或旋转参数)。如果只传入一个,则将X和Y设置为相同的值。
返回值¶
返回栅格数据。
示例¶
select ST_SetSkew(rast,1,2) from dummy_rast WHERE rid = 1;
ST_SETSKEW(RASTER) |
------------------------
010000000000000000000000|
40000000000000084000000|
0000000E03F000000000000|
E03F000000000000F03F000|
0000000000040000000000A|
001400 |
总数目:1
select ST_SetSkew(rast,0) from dummy_rast WHERE rid = 1;
ST_SETSKEW(RASTER) |
------------------------
010000000000000000000000|
40000000000000084000000|
0000000E03F000000000000|
E03F0000000000000000000|
0000000000000000000000A|
001400 |
总数目:1
ST_SetSRID¶
ST_SetSRID — 将栅格的SRID设置为在SPATIAL_REF_SYS表中定义的特定整数sRID。
返回值¶
返回栅格数据。
示例¶
SELECT ST_SetSRID(ST_Point(3427927.77, 5793243.76), 0);
ST_SETSRID(geometry) |
--------------------------
0101000000295C8FE22B274A41|
0AD7A3F076195641 |
总数目:1
ST_SetUpperLeft¶
ST_SetUpperLeft — 将栅格像素左上角的值设置为投影的X和Y坐标。
返回值¶
返回栅格数据。
示例¶
SELECT ST_SetUpperLeft(rast,-71.01,42.37) FROM dummy_rast WHERE rid = 2;
ST_SETUPPERLEFT(RASTER) |
-----------------------------
01000003009A9999999999A93F9A9|
999999999A9BF713D0AD7A3C051C|
08FC2F5285C2F454000000000000|
0000000000000000000000000000|
0050005000400FDFEFDFEFEFDFEF|
EFDF9FAFEFEFCF9FBFDFEFEFDFCF|
AFEFEFE04004E627AADD16076B4F|
9FE6370A9F5FE59637AB0E54F586|
17087040046566487A1506CA2E3F|
A5A6CAFFBFE4D566DA4CB3E454C5|
665 |
总数目:1
ST_Resample¶
ST_Resample — 使用指定的重采样算法、新尺寸、任意栅格角以及从其他栅格定义或借用的一组栅格地理参考属性对栅格进行重采样。
参数¶
rast
raster 类型
width
int 类型
height
int 类型
gridx
float8 类型,默认值 NULL
gridy
float8 类型,默认值 NULL
skewx
float8 类型,默认值 0
skewy
float8 类型,默认值 0
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
返回值¶
返回栅格数据。
示例¶
DROP TABLE raster_gdalwarp_src;
DROP TABLE raster_gdalwarp_dst;
CREATE TABLE raster_gdalwarp_src (
rast raster
);
CREATE TABLE raster_gdalwarp_dst (
rid varchar(2048),
rast raster
);
CREATE OR REPLACE PROCEDURE insert_into_raster_gdalwarp_src( rast raster) is PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO raster_gdalwarp_src(rast) 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;
BEGIN
rast := ST_MakeEmptyRaster(width, height, -500000, 600000, 1000, -1000, 0, 0, 992163);
rast := ST_AddBand(rast, 1, '64BF', 0, 0);
FOR x IN 1..width LOOP
FOR y IN 1..height LOOP
rast := ST_SetValue(rast, 1, x, y, ((x::double precision * y) + (x + y) + (x + y * x)) / (x + y + 1));
END LOOP;
END LOOP;
insert_into_raster_gdalwarp_src(rast);
RETURN;
END;
LANGUAGE 'ploscar';
SELECT make_test_raster();
MAKE_TEST_RASTER(VOID) |
----------------------------
总数目:1
DROP FUNCTION make_test_raster();
drop PROCEDURE insert_into_raster_gdalwarp_src;
SELECT st_astext(ST_Resample( rast, 150::int, 150::int )::geometry) from raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500000 6000|
00,-490000 600000,-4|
90000 590000,-500000|
590000,-500000 6000|
00)) |
总数目:1
SELECT st_astext(ST_Resample(
rast,
ST_MakeEmptyRaster(5, 5, -654321, 123456, 100, 100, 0, 0, 992163),
FALSE
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500321 6014|
56,-490000 601456,-4|
90000 590000,-500321|
590000,-500321 6014|
56)) |
总数目:1
ST_Resample¶
ST_Resample — 使用指定的重采样算法、新尺寸、任意栅格角以及从其他栅格定义或借用的一组栅格地理参考属性对栅格进行重采样。
参数¶
rast
raster 类型
scalex
float8 类型,默认值 0
scaley
float8 类型,默认值 0
gridx
float8 类型,默认值 NULL
gridy
float8 类型,默认值 NULL
skewx
float8 类型,默认值 0
skewy
float8 类型,默认值 0
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
返回值¶
返回栅格数据。
示例¶
SELECT ST_Resample(NULL);
ST_RESAMPLE(RASTER) |
-------------------------
null |
总数目:1
ST_Resample¶
ST_Resample — 使用指定的重采样算法、新尺寸、任意栅格角以及从其他栅格定义或借用的一组栅格地理参考属性对栅格进行重采样。
参数¶
rast
raster 类型
ref
raster 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
usescale_d
boolean 类型,默认值 TRUE
usescale
boolean 类型
返回值¶
返回栅格数据。
示例¶
DROP TABLE raster_gdalwarp_src;
DROP TABLE raster_gdalwarp_dst;
CREATE TABLE raster_gdalwarp_src (
rast raster
);
CREATE TABLE raster_gdalwarp_dst (
rid varchar(2048),
rast raster
);
CREATE OR REPLACE PROCEDURE insert_into_raster_gdalwarp_src( rast raster) is PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO raster_gdalwarp_src(rast) 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;
BEGIN
rast := ST_MakeEmptyRaster(width, height, -500000, 600000, 1000, -1000, 0, 0, 992163);
rast := ST_AddBand(rast, 1, '64BF', 0, 0);
FOR x IN 1..width LOOP
FOR y IN 1..height LOOP
rast := ST_SetValue(rast, 1, x, y, ((x::double precision * y) + (x + y) + (x + y * x)) / (x + y + 1));
END LOOP;
END LOOP;
insert_into_raster_gdalwarp_src(rast);
RETURN;
END;
LANGUAGE 'ploscar';
SELECT make_test_raster();
MAKE_TEST_RASTER(VOID) |
----------------------------
总数目:1
DROP FUNCTION make_test_raster();
drop PROCEDURE insert_into_raster_gdalwarp_src;
SELECT st_astext(ST_Resample( rast, 150::int, 150::int )::geometry) from raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500000 6000|
00,-490000 600000,-4|
90000 590000,-500000|
590000,-500000 6000|
00)) |
总数目:1
SELECT st_astext(ST_Resample(
rast,
ST_MakeEmptyRaster(5, 5, -654321, 123456, 100, 100, 0, 0, 992163),
FALSE
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500321 6014|
56,-490000 601456,-4|
90000 590000,-500321|
590000,-500321 6014|
56)) |
总数目:1
ST_Rescale¶
ST_Rescale — 通过仅调整其比例(或像素大小)来重采样栅格。使用NearestNeighbour(英式或美式拼写)、双线性、立方、立方样条线或Lanczos重采样算法计算新的像素值。默认为NearestNeighbour。
参数¶
rast
raster 类型
scalexy
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
scalex
float8 类型
scaley
float8 类型
返回值¶
返回栅格数据。
示例¶
SELECT st_astext(ST_Rescale(
rast,
100
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500000 5900|
00,-490000 590000,-4|
90000 600000,-500000|
600000,-500000 5900|
00)) |
总数目:1
SELECT st_astext(ST_Rescale(
rast,
100, 100
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500000 5900|
00,-490000 590000,-4|
90000 600000,-500000|
600000,-500000 5900|
00)) |
总数目:1
ST_Reskew¶
ST_Reskew — 通过仅调整其倾斜(或旋转参数)来重采样栅格。使用NearestNeighbour(英式或美式拼写)、双线性、立方、立方样条线或Lanczos重采样算法计算新的像素值。默认为NearestNeighbour。
参数¶
rast
raster 类型
scalexy
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
skewx
float8 类型
skewy
float8 类型
返回值¶
返回栅格数据。
示例¶
SELECT st_astext(ST_Reskew(
rast,
1, 1
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500010 6000|
00,-490010 600010,-4|
90000 590010,-500000|
590000,-500010 6000|
00)) |
总数目:1
SELECT st_astext(ST_Reskew(
rast,
10
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500100 6000|
00,-490100 600100,-4|
90000 590100,-500000|
590000,-500100 6000|
00)) |
总数目:1
ST_SnapToGrid¶
ST_SnapToGrid — 通过将栅格捕捉到栅格来重采样栅格。使用NearestNeighbour(英式或美式拼写)、双线性、立方、立方样条线或Lanczos重采样算法计算新的像素值。默认值为NearestNeighbour。
参数¶
rast
raster 类型
gridx
float8 类型
gridy
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
scalex_d
float8 类型,默认值 0
scaley_d
float8 类型,默认值 0
返回值¶
返回栅格数据。
示例¶
SELECT ST_AsEWKT(ST_SnapToGrid(
ST_GeomFromEWKT('LINESTRING(-1.1115678 2.123 2.3456 1.11111,
4.111111 3.2374897 3.1234 1.1111, -1.11111112 2.123 2.3456 1.1111112)'),
ST_GeomFromEWKT('POINT(1.12 2.22 3.2 4.4444)'),0.1, 0.1, 0.1, 0.01) );
ST_ASEWKT(text) |
---------------------
LINESTRING(-1.08 2.12|
2.3 1.1144,4.12 3.2|
2 3.1 1.1144,-1.08 2|
.12 2.3 1.1144) |
总数目:1
ST_SnapToGrid¶
ST_SnapToGrid — 通过将栅格捕捉到栅格来重采样栅格。使用NearestNeighbour(英式或美式拼写)、双线性、立方、立方样条线或Lanczos重采样算法计算新的像素值。默认值为NearestNeighbour。
参数¶
rast
raster 类型
gridx
float8 类型
gridy
float8 类型
scalex
float8 类型
scaley
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
返回值¶
返回栅格数据。
示例¶
SELECT st_astext(ST_SnapToGrid(
rast,
-500000, 600000,
50, 50
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500000 5900|
00,-490000 590000,-4|
90000 600000,-500000|
600000,-500000 5900|
00)) |
总数目:1
ST_SnapToGrid¶
ST_SnapToGrid — 通过将栅格捕捉到栅格来重采样栅格。使用NearestNeighbour(英式或美式拼写)、双线性、立方、立方样条线或Lanczos重采样算法计算新的像素值。默认值为NearestNeighbour。
参数¶
rast
raster 类型
gridx
float8 类型
gridy
float8 类型
scalexy
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
返回值¶
返回栅格数据。
示例¶
SELECT st_astext(ST_SnapToGrid(
rast,
0, 0,
121
)::geometry) FROM raster_gdalwarp_src;
ST_ASTEXT(text) |
---------------------
POLYGON((-500093 5898|
75,-489929 589875,-4|
89929 600039,-500093|
600039,-500093 5898|
75)) |
总数目:1
ST_Resize¶
ST_Resize — 将栅格大小调整为新的宽度/高度
参数¶
rast
raster 类型
width
int 类型
height
int 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
percentwidth
float8 类型,默认值 0
percentheight
float8 类型,默认值 0
width_t
text 类型
height_t
text 类型
返回值¶
返回栅格数据。
示例¶
WITH foo AS(
SELECT
1 AS rid,
ST_Resize(
ST_AddBand(
ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 255, 0
)
, '50%'::text, '500'::text) AS rast
UNION ALL
SELECT
2 AS rid,
ST_Resize(
ST_AddBand(
ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 255, 0
)
, 500::int, 100::int) AS rast
UNION ALL
SELECT
3 AS rid,
ST_Resize(
ST_AddBand(
ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 0)
, 1, '8BUI', 255, 0
)
, 0.25::float8, 0.9::float8) AS rast
), bar AS (
SELECT rid, ST_Metadata(rast) AS meta, rast FROM foo
)
SELECT rid, (meta) FROM bar;
RID(int) |META(METADATA) |
----------------------------------
1 |(0,0,500,500,2,-2,0,|
|0,0,1) |
----------------------------------
2 |(0,0,500,100,2,-10,0|
|,0,0,1) |
----------------------------------
3 |(0,0,250,900,4,-1.11|
|111111111111,0,0,0,|
|1) |
总数目:3
ST_Transform¶
ST_Transform — 使用指定的重采样算法将已知空间参考系中的栅格重投影到另一个已知空间参考系。选项包括NearestNeighbour、双线性、立方、三次样条、默认为NearestNeighbour的Lanczos。
参数¶
rast
raster 类型
srid
int 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
scalex_t
float8 类型,默认值 0
scaley_t
float8 类型,默认值 0
返回值¶
返回栅格数据。
示例¶
drop table raster_test;
CREATE TABLE raster_test AS
SELECT
'passwd' AS lbl,
'0100000100000000000000F03F000000000000F0BF0000000000000000000000000000000000000000000000000000000000000000110F0000E80301008400003C56525444617461736574207261737465725853697A653D223130303022207261737465725953697A653D2231223E3C56525452617374657242616E642062616E643D22312220737562436C6173733D2256525452617752617374657242616E64223E3C536F7572636546696C656E616D653E2F6574632F7061737377643C2F536F7572636546696C656E616D653E3C2F56525452617374657242616E643E3C2F565254446174617365743E00'::raster AS r
UNION ALL
SELECT
'inline' AS lbl,
'0100000100000000000000F03F000000000000F03F00000000000020C000000000000020C000000000000000000000000000000000110F000010001000440000000000000101010101010000000000000000010101010101010101010000000000010101010101010101010101000000010101010101010101010101010100000101010101010101010101010101000101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010001010101010101010101010101010000010101010101010101010101010100000001010101010101010101010100000000000101010101010101010100000000000000000101010101010000000000'::raster AS r
;
SELECT st_srid(st_transform(r, 4326)) from raster_test where lbl = 'inline';
ST_SRID(int) |
------------------
4326 |
总数目:1
ST_Transform¶
ST_Transform — 使用指定的重采样算法将已知空间参考系中的栅格重投影到另一个已知空间参考系。选项包括NearestNeighbour、双线性、立方、三次样条、默认为NearestNeighbour的Lanczos。
参数¶
rast
raster 类型
srid
int 类型
scalex
float8 类型
scaley
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
返回值¶
返回栅格数据。
示例¶
SELECT st_srid(st_transform(r, 4326, 0, 0)) from raster_test where lbl = 'inline';
ST_SRID(int) |
------------------
4326 |
总数目:1
ST_Transform¶
ST_Transform — 使用指定的重采样算法将已知空间参考系中的栅格重投影到另一个已知空间参考系。选项包括NearestNeighbour、双线性、立方、三次样条、默认为NearestNeighbour的Lanczos。
参数¶
rast
raster 类型
srid
int 类型
scalexy
float8 类型
algorithm
text 类型,默认值 NearestNeighbour
maxerr
float8 类型,默认值 0.125
alignto
raster 类型
返回值¶
返回栅格数据。
示例¶
SELECT st_srid(st_transform(r, 4326, 0)) from raster_test where lbl = 'inline';
ST_SRID(int) |
------------------
4326 |
总数目:1
SELECT st_srid(st_transform(r, r)) from raster_test where lbl = 'inline';
ST_SRID(int) |
------------------
3857 |
总数目:1