7.5 SDO_GEOR.changeCellValue

形式

SDO_GEOR.changeCellValue(
     georaster    IN OUT SDO_GEORASTER, 
     window       IN SDO_NUMBER_ARRAY, 
     bandNumbers  IN VARCHAR2, 
     newCellValue IN NUMBER, 
     bgValues     IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.changeCellValue(
     georaster    IN OUT SDO_GEORASTER, 
     window       IN SDO_GEOMETRY, 
     layerNumbers IN VARCHAR2, 
     newCellValue IN NUMBER, 
     bgValues     IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

GeoRasterオブジェクトの指定されたウィンドウで、ラスター・セルの値を1つの新しい値に変更します。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

window

すべてのセルの値をnewCellValueに変更するウィンドウを指定します。データ型はSDO_NUMBER_ARRAYまたはSDO_GEOMETRYのいずれかです。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合は、SDO_SRID要件の「使用上のノート」およびその他の情報を参照してください。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

newCellValue

指定したバンドまたはレイヤーのウィンドウ内の各セルに対する新しいセル値を指定します。値は、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オブジェクトを廃棄します。

このプロシージャは、イメージの一部をマスクする(隠す)ために使用できます。たとえば、イメージの必要な部分のみを強調するために、事前に関係ない部分をめだたない色に変更しておくことができます。

windowパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。

  • NULL(ラスター空間を指定)

  • MDSYS.CS_SRS表のSRID列の値

    windowパラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、windowパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

windowパラメータで矩形以外のSDO_GEOMETRYオブジェクトを指定すると、このファンクションによってジオメトリのMBRが計算され、そのMBR内のセルが(MBRの境界上のセルも含め)更新されます。

windowパラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial開発者ガイド』を参照してください。

georasterが空白のGeoRasterオブジェクトで、領域全体が更新される場合、blankCellValue値がnewCellValueに設定された空白のGeoRasterオブジェクトが戻されます。

georasterが空白のGeoRasterオブジェクトで、部分的にのみ更新される場合、元のblankCellValue値およびnewCellValue値がwindowパラメータおよびbandNumbersまたはlayerNumbersパラメータに従って設定された、空白ではないGeoRasterオブジェクトが戻されます。

georasterが空白のGeoRasterオブジェクトでない場合、すべてのセルがnewCellValue値に設定される場合でも、空白ではないGeoRasterオブジェクトが戻されます。

georasterがNULLの場合、このプロシージャは処理を実行しません。georasterが無効な場合、例外が発生します。

GeoRasterオブジェクトでピラミッドが定義されている場合、ピラミッドの対応するセル値が更新されます。

GeoRasterオブジェクトの任意の位置にある単一のセルの値を戻すには、SDO_GEOR.getCellValueファンクションを使用します。

次の例では、バンド番号1の指定されたウィンドウ内のすべてのセルの値を151に変更します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」例1-1の次に説明されています。)

DECLARE
  gr sdo_georaster;
BEGIN
  SELECT georaster INTO gr FROM georaster_table WHERE georid=110 FOR UPDATE;
  sdo_geor.changeCellValue(gr, sdo_number_array(100,67,134,113), '1', 151);
  UPDATE georaster_table SET georaster=gr WHERE georid=110;
  COMMIT;
END;
/