7.108 SDO_GEOR.mask
形式
SDO_GEOR.mask( inGeoRaster IN SDO_GEORASTER, bandNumbers IN VARCHAR2, mask IN SDO_GEORASTER, storageParam IN VARCHAR2, outGeoraster IN OUT SDO_GEORASTER, zeroMapping IN NUMBER DEFAULT 0, oneMapping IN NUMBER DEFAULT 1, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
説明
既存の(入力) GeoRasterオブジェクトの指定したレイヤーにマスクを適用します。マスクGeoRasterオブジェクトと入力GeoRasterオブジェクトは、同じ記憶域形式または異なる記憶域形式を持つことが可能で、出力GeoRasterオブジェクトの記憶域形式オプションを指定できます(ブロック化、セル深度またはインターリーブを変更するなど)。
使用するマスク値を決定する方法の詳細は、「使用上のノート」を参照してください。
パラメータ
- inGeoRaster
-
新しいオブジェクトを作成するためにマスク処理を実行するSDO_GEORASTERオブジェクトを指定します。
- bandNumbers
-
処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、
1-3
は2、3、4番目のレイヤーを示します)。 - mask
-
出力GeoRasterオブジェクトを生成するために入力GeoRasterオブジェクトに対してマスクとして使用するSDO_GEORASTERオブジェクトを指定します。このパラメータをNULLとして指定すると、入力GeoRasterオブジェクトの使用可能なアタッチ済マスクが、指定したレイヤーに適用されます。
- storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
マスク操作の結果を反映させる新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください)。
inGeoRaster
と同じGeoRasterオブジェクトは指定できません。出力GeoRasterオブジェクトに既存のラスター・データが含まれる場合、マスク操作が実行される前に削除されます。出力GeoRasterオブジェクトは、このファンクションの結果として上書きされます。
- zeroMapping
-
マスク・セル値0 (ゼロ)に使用する値を指定します。デフォルト値は0 (ゼロ)です。
- oneMapping
-
マスク・セル値1に使用する値を指定します。デフォルト値は1です。
- bgValues
-
部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのレイヤーに同じ入力値を使用)またはバンド次元のサイズ(各レイヤーにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のレイヤーに1、2番目のレイヤーに5、3番目のレイヤーに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
使用上のノート
mask
パラメータと組み合せて使用するマスク値を決定するには、次のロジックを適用します。
If(cellValue_mask==0) cellValue_target=cellValue_source * zeroMapping; else cellValue_target=cellValue_source * oneMapping;
説明:
-
cellValue_source
は、座標(x,y)でのinGeoraster
のセル値です。 -
cellValue_target
は、座標(x,y)でのoutGeoraster
のセル値です。 -
cellValue_mask
は、座標(x,y)でのmask
のセル値です。
inGeoRaster
がNULLの場合、操作は実行されません。
inGeoRaster
にピラミッド・データが存在する場合、mask
GeoRasterオブジェクトに、inGeoRaster
と同じ数以上のピラミッド・レベルが含まれる必要があります。
mask
がNULLでない場合、次元(行および列)サイズをinGeoRaster
と同じにする必要があります。mask
はinGeoRaster
で重複している必要があります。(SDO_GEOR_RA.isOverlapファンクションを使用して、重複を確認できます。)
mask
がNULLで、指定したレイヤーで使用できるアタッチ済マスクがない場合、inGeoRaster
は、(storageParam
の指定に従って変更される) outGeoRaster
にコピーされます。
このファンクションとSDO_GEOR.setBitmapMaskファンクションの対比: SDO_GEOR.maskはレイヤーのセル値を計算してそれらをターゲットGeoRasterオブジェクトに格納しますが、SDO_GEOR.setBitmapMaskはマスク・データをソースGeoRasterオブジェクトの指定したレイヤーに関連付けます。
次の1つ以上の条件に該当する場合、例外が発生します。
-
inGeoRaster
が無効である。 -
outGeoRaster
が初期化されていない。 -
outGeoRaster
に対するラスター・データ表が存在せず、outGeoRaster
が空白のGeoRasterオブジェクトではない。
例
次の例では、マスクGeoRasterオブジェクトgr2
をソースGeoRasterオブジェクトgr1
に適用します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE gr1 sdo_georaster; gr2 sdo_georaster; gr3 sdo_georaster; BEGIN select tmimage into gr1 from landsat where id=103; select tmimage into gr3 from landsat where id=1015; select grobj into gr2 from grtab where id=1; SDO_GEOR.mask(gr1,null,gr2,'blocksize=(100,100,3)',gr3,0.1,0.9,null); update landsat set tmimage=gr3 where id=1007; END; /
次の例では、ソースGeoRasterオブジェクトgr1
のアタッチ済マスクをその2番目のレイヤーに適用します。
DECLARE gr1 sdo_georaster; gr2 sdo_georaster; gr3 sdo_georaster; BEGIN select tmimage into gr1 from landsat where id=103; select tmimage into gr3 from landsat where id=1015; gr2:=null; SDO_GEOR.mask(gr1,'1',gr2,'blocksize=(100,100,3)',gr3,0.1,0.9,null); update landsat set tmimage=gr3 where id=1007; END; /
親トピック: SDO_GEORパッケージのリファレンス