ST_SetBandIsNoData — 将带区的 isnodata 标志设置为 TRUE。
raster ST_SetBandIsNoData(raster rast, integer band=1);
将带的isnodata标志设置为true。如果未指定,将假定为第1带。只有在被认为是脏标志时才应调用此函数。也就是说,当调用 ST_BandIsNoData 作为最后一个参数使用 TRUE 和不使用 TRUE 时的结果不同时
可用性: 2.0.0
This example creates a dummy table with one raster column. The raster has two bands and one pixel per band. In the first band, the NODATA value and pixel value are both 3. In the second band, the NODATA value is 13 and the pixel value is 4.
create table dummy_rast (rid integer, rast raster);
insert into dummy_rast values(
1,
(
'01' -- little endian (uint8 ndr)
||
'0000' -- version (uint16 0)
||
'0200' -- nBands (uint16 0)
||
'17263529ED684A3F' -- scaleX (float64 0.000805965234044584)
||
'F9253529ED684ABF' -- scaleY (float64 -0.00080596523404458)
||
'1C9F33CE69E352C0' -- ipX (float64 -75.5533328537098)
||
'718F0E9A27A44840' -- ipY (float64 49.2824585505576)
||
'ED50EB853EC32B3F' -- skewX (float64 0.000211812383858707)
||
'7550EB853EC32B3F' -- skewY (float64 0.000211812383858704)
||
'E6100000' -- SRID (int32 4326)
||
'0100' -- width (uint16 1)
||
'0100' -- height (uint16 1)
||
'4' -- hasnodatavalue set to true, isnodata value set to false (when it should be true)
||
'2' -- first band type (4BUI)
||
'03' -- novalue==3
||
'03' -- pixel(0,0)==3 (same that nodata)
||
'0' -- hasnodatavalue set to false
||
'5' -- second band type (16BSI)
||
'0D00' -- novalue==13
||
'0400' -- pixel(0,0)==4
)::raster
);
select ST_BandIsNoData(rast, 1) from dummy_rast where rid = 1; -- Expected false
select ST_BandIsNoData(rast, 1, TRUE) from dummy_rast where rid = 1; -- Expected true
The isnodata flag is dirty, so set it to true.
update dummy_rast set rast = ST_SetBandIsNoData(rast, 1) where rid = 1;
select ST_BandIsNoData(rast, 1) from dummy_rast where rid = 1; -- Expected true