栅格波段编辑函数

ST_SetBandNoDataValue

ST_SetBandNoDataValue — 设置表示无数据的给定标注栏的值。如果未指定波段,则假定波段1。要将波段标记为没有nodata值,请将nodata值设置为NULL。

语法

st_setbandnodatavalue ::=

参数

rast

raster 类型

nodatavalue

float8 类型

band

int 类型

forcechecking

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

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


select ST_Count(ST_SetBandNoDataValue(rast,1, 254)) from dummy_rast where rid = 2;
ST_COUNT(bigint)      |
----------------------
13                    |
总数目:1

ST_SetBandIsNoData

ST_SetBandIsNoData — 将波段的isnodata标志设置为true。

语法

st_setbandisnodata ::=

参数

rast

raster 类型

band

int 类型,默认值 1

返回值

返回栅格数据。

示例

select st_setbandisnodata(rast, 1) from dummy_rast where rid = 1;
ST_SETBANDISNODATA(RASTER)      |
--------------------------------
01000000000000000000000040000000|
0000000840000000000000E03F00000|
0000000E03F00000000000000000000|
000000000000000000000A001400    |
总数目:1

ST_SetBandPath

ST_SetBandPath — 更新数据库外波段的外部路径和波段编号

语法

st_setbandpath ::=

参数

rast

raster 类型

band

int 类型

outdbpath

text 类型

outdbindex

int 类型

force

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

drop table mydata.mytable;
drop schema mydata;

create schema mydata;
CREATE TABLE mydata.mytable (rid SERIAL primary key, rast raster);
INSERT INTO mydata.mytable (rast) VALUES (ST_AddBand(ST_MakeEmptyRaster(1000, 1000, 0, 0, 1, -1, 0, 0, 4326), 1, '8BUI'::text, 1, 0));
--SELECT ST_SetBandPath(rast, 1, '/path/to/newfile.tif', 1) AS new_rast FROM mydata.mytable;

drop table mydata.mytable;
drop schema mydata;

ST_SetBandIndex

ST_SetBandIndex — 更新数据库外波段的外部波段编号

语法

st_setbandindex ::=

参数

rast

raster 类型

band

int 类型

outdbindex

int 类型

force

boolean 类型,默认值 FALSE

返回值

返回栅格数据。

示例

--/home/llq/apple1.tif 必须能访问且有权限
/*
WITH foo AS (
SELECT
ST_AddBand(NULL::raster, '/home/llq/apple1.tif', NULL::int[]) AS rast
)
SELECT
1 AS query, *
FROM ST_BandMetadata( (SELECT rast FROM foo),
ARRAY[1,3,2]::int[]
)
UNION ALL
SELECT
2,
*
FROM ST_BandMetadata( (
SELECT
ST_SetBandIndex(
rast,
2,
1 ) AS rast
FROM foo
),
ARRAY[1,3,2]::int[]
)
ORDER BY 1, 2;
*/