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; /
親トピック: SDO_GEORパッケージのリファレンス