7.6 SDO_GEOR.changeCellValues
形式
SDO_GEOR.changeCellValues( georaster IN OUT SDO_GEORASTER, rowNumbers IN SDO_NUMBER_ARRAY, colNumbers IN SDO_NUMBER_ARRAY, bandNumber IN NUMBER, newCellValues IN SDO_NUMBER_ARRAY, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
または
SDO_GEOR.changeCellValues( georaster IN OUT SDO_GEORASTER, ptGeom IN SDO_GEOMETRY, layerNumber IN NUMBER, newCellValues IN SDO_NUMBER_ARRAY, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
説明
行/列配列または複数点のジオメトリで指定されたラスター・セルの値を新しい値に変更します。
パラメータ
- georaster
-
GeoRasterオブジェクトを指定します。
- rowNumbers
-
値を変更するセルを含む行の番号を指定します。
- colNumbers
-
値を変更するセルを含む列の番号を指定します。
- bandNumber
-
値を変更するセルを含む物理バンドの番号を指定します。
- ptGeom
-
値を変更するセルを識別する複数点のジオメトリ。
- layerNumber
-
値を変更するセルを含む論理レイヤーの番号を指定します。(「バンド、レイヤーおよびメタデータ」で説明したように、論理レイヤー番号は、物理バンドの番号に1を足した値です。)
- newCellValues
-
指定したバンドまたはレイヤーのウィンドウ内の各セルに対する新しいセル値を指定します。値は、GeoRasterオブジェクトの
cellDepth
値で指定された範囲内である必要があります。 - bgValues
-
部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
使用上のノート
このプロシージャは、入力されたGeoRasterオブジェクトのデータを上書きするため、元のGeoRasterオブジェクトをコピーし、そのコピーしたオブジェクトに対してこのプロシージャを使用してください。このプロシージャの結果を確認してから、必要に応じて元のGeoRasterオブジェクトを廃棄します。
このプロシージャは、イメージの一部をマスクする(隠す)ために使用できます。たとえば、イメージの必要な部分のみを強調するために、事前に関係ない部分をめだたない色に変更しておくことができます。
ptGeom
SDO_GEOMETRYオブジェクトで、SDO_SRID値には次のいずれかを指定する必要があります。
-
NULL(ラスター空間を指定)
-
MDSYS.CS_SRS表のSRID列の値
ptGeom
パラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、ptGeom
パラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)
georaster
がNULLの場合、このプロシージャは処理を実行しません。georaster
が無効な場合、例外が発生します。
GeoRasterオブジェクトでピラミッドが定義されている場合、ピラミッドの対応するセル値が更新されます。
GeoRasterオブジェクトの任意の位置にあるセルの値を戻すには、SDO_GEOR.getCellValuesファンクションを使用します。
例
次の例では、バンド番号1の2つのセルの値を151および152に変更します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE
gr sdo_georaster;
BEGIN
SELECT georaster INTO gr FROM georaster_table WHERE georid=110 FOR UPDATE;
sdo_geor.changeCellValues(gr, sdo_number_array(100,67),sdo_number_array(134,113), 1,
sdo_number_array(151,152));
UPDATE georaster_table SET georaster=gr WHERE georid=110;
COMMIT;
END;
/
親トピック: SDO_GEORパッケージのリファレンス