12.7 SDO_GEOR_RA.rasterUpdate
形式
SDO_GEOR_RA.rasterUpdate( geoRaster IN OUT SDO_GEORASTER, pyramidLevel IN NUMBER, conditions IN SDO_STRING2_ARRAY, vals IN SDO_STRING2_ARRAYSET, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.rasterUpdate( geoRaster IN OUT SDO_GEORASTER, pyramidLevel IN NUMBER, targetArea IN SDO_NUMBER_ARRAY, conditions IN SDO_STRING2_ARRAY, vals IN SDO_STRING2_ARRAYSET, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.rasterUpdate( geoRaster IN OUT SDO_GEORASTER, pyramidLevel IN NUMBER, targetArea IN SDO_GEOMETRY, conditions IN SDO_STRING2_ARRAY, vals IN SDO_STRING2_ARRAYSET, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', polygonClip IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
説明
vals
の指定から計算された値を使用して、conditions
の指定がTRUEのすべてのセルを更新します。
パラメータ
- geoRaster
-
入力および出力で使用されるGeoRasterオブジェクトを指定します(更新は指定した条件に基づきます)。
- pyramidLevel
-
更新するピラミッド・レベルを指定します。このパラメータがNULLの場合、すべてのピラミッド・レベルが更新されます。
- targetArea
-
ターゲット領域の定義です。データ型がSDO_GEOMETRYであり、パラメータ
polygonClip
がTRUE
である場合、ターゲット領域ジオメトリ内のセルのみが更新され、ターゲット領域ジオメトリ外のすべてのセルは元の値を保持しますが、パラメータpolygonClip
がFALSE
である場合はターゲット領域ジオメトリのMBRのすべてのセルが更新されます。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- conditions
-
セルを選択するために使用する
booleanExpr
式文字列の配列を指定します。(詳細は、「使用上のノート」を参照してください。)データ型はSDO_STRING2_ARRAYで、VARRAY(2147483647) OF VARCHAR2(4096)
として定義されます。 - vals
-
各条件に対応する外部配列と各レイヤーに対応する内部配列を持つ
arithmeticExpr
式の1つ以上の配列を指定します。データ型はSDO_STRING2_ARRAYSETで、VARRAY(2147483647) OF SDO_STRING2_ARRAY
として定義されます。 - bgValues
-
入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
- nodata
-
文字列
TRUE
は、GeoRasterオブジェクトのNODATAセルの元の値が更新されず、NODATA値がconditions
パラメータの評価で考慮されることを意味します。conditions
パラメータの評価に関与するセル値にNODATA値がある場合、conditions
パラメータはFALSEとして評価されます(conditions
パラメータに関する使用上のノートを参照)。文字列FALSE
(デフォルト)では、NODATA値を含むセルが通常のセルとみなされるため、更新対象になります。NODATA値および値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。 - polygonClip
-
targetArea
がNULLの場合は無視されます。それ以外の場合、文字列TRUE
では、targetArea
ジオメトリ値がラスター・セル値の更新で使用されますが、文字列FALSE
またはNULL値では、targetArea
ジオメトリのMBRがラスター・セル値の更新で使用されます。 - parallelParam
-
操作の並列度を指定します。指定する場合、
parallel=
nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)parallelParam
を指定すると、このプロシージャの結果をロールバックできません(「使用上のノート」を参照)。
使用上のノート
このプロシージャは、入力されたGeoRasterオブジェクトのデータを上書きするため、元のGeoRasterオブジェクトをコピーし、そのコピーしたオブジェクトに対してこのプロシージャを使用してください。このプロシージャの結果を確認してから、必要に応じて元のGeoRasterオブジェクトを廃棄します。
このプロシージャでは、conditions
パラメータに指定されたbooleanExpr
文字列に基づいて、指定されたGeoRasterオブジェクトからセルを選択し、vals
パラメータに指定されたarithmeticExpr式文字列を計算して対応するセル値を更新します。たとえば、次の場合を検討します:
conditions = SDO_STRING2_ARRAY('{0}=48','{0}=108') vals = SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123'))
この場合、次のようになります:
-
1番目のレイヤーの値が48に等しいすべてのセルで、その1番目、2番目、3番目のレイヤーの値がそれぞれ123、54、89に設定されます。
-
1番目のレイヤーの値が108に等しいすべてのセルで、その1番目、2番目、3番目のレイヤーの値がそれぞれ98、56、123に設定されます。
詳細は、「ラスター代数言語」を参照してください。
parallelParam
を指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
例
次の例では、vals
の指定から計算された値を使用して、conditions
の指定がTRUEのすべてのセルを更新します。
DECLARE geor SDO_GEORASTER; BEGIN select georaster into geor from georaster_table where georid = 1; sdo_geor_ra.rasterUpdate(geor,0,SDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108'),SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123'))); END; /
親トピック: SDO_GEOR_RAパッケージのリファレンス