名前

ST_SetBandIsNoData — バンドのisnodataフラグをTRUEにします。ST_BandIsNoData(rast, band) != ST_BandIsNodata(rast, band, TRUE)となり、isnodataフラグが汚れている場合に使用することがあります。バンドを指定しない場合は1番バンドと仮定します。

概要

integer ST_SetBandIsNoData(raster rast, integer band=1);

説明

バンドのisnodataフラグをTRUEにします。バンドを指定しない場合は1番バンドと仮定します。isnodataフラグが汚れている場合にのみ呼ぶべきものです。これは、ST_BandIsNoDataの、最後の引数にTRUEを設定した場合の結果と指定しない場合の結果とで異なっている時です。

初出: 2.0.0

[注記]

ローダ(raster2pgsql.py)は現在のところ、ラスタデータをロードする時に確実なバンドへのisnodataフラグの設定ができません。この関数がTRUEを設定する最も早い方法で、他のバンド値を変更しません。

-- ラスタカラムを1つ持つダミーテーブルを生成します
create table dummy_rast (rid integer, rast raster);

-- 2バンドでバンドごとに1ピクセルを持つラスタを追加します
-- ひとつめのバンドにはnodatavalueとピクセル値をともに3とし、
-- ふたつめのバンドにはnodatavalue=13とピクセル値=4とします。
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; -- FALSEを期待
select st_bandisnodata(rast, 1, TRUE) from dummy_rast where rid = 1; -- TRUEを期待

-- isnodataフラグが汚れているので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

                    

関連情報

ST_BandNoDataValue, ST_NumBands, ST_SetBandNoDataValue, ST_BandIsNoData