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;
/