7.156 SDO_GEOR.updateRaster
形式
SDO_GEOR.updateRaster( targetGeoRaster IN OUT SDO_GEORASTER, targetPyramidLevel IN NUMBER, targetLayerNumbers IN VARCHAR2, targetArea IN SDO_GEOMETRY, sourceGeoRaster IN SDO_GEORASTER, sourcePyramidLevel IN NUMBER, sourceLayerNumbers IN VARCHAR2, updateUpperPyramids IN VARCHAR2, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
または
SDO_GEOR.updateRaster( targetGeoRaster IN OUT SDO_GEORASTER, targetPyramidLevel IN NUMBER, targetBandNumbers IN VARCHAR2, targetArea IN SDO_NUMBER_ARRAY, sourceGeoRaster IN SDO_GEORASTER, sourcePyramidLevel IN NUMBER, sourceBandNumbers IN VARCHAR2, updateUpperPyramids IN VARCHAR2, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
説明
指定した領域の指定したピラミッド(1つのGeoRasterオブジェクトの重複部分)を、別のGeoRasterオブジェクトの選択したピラミッドと選択したバンドまたはレイヤーで更新できます。
パラメータ
- targetGeoRaster
-
更新するGeoRasterオブジェクトを指定します。(このオブジェクトを更新する前に、オブジェクトのコピーを作成しておいてください。)
- targetPyramidLevel
-
更新するターゲットGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。
- targetLayerNumbers
-
targetGeoRaster
内の更新するレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'
はレイヤー1、3、4、5および7を示します。 - targetBandNumbers
-
targetGeoRaster
内の更新するバンドを示す1つ以上のバンド番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'0,3-5,7'
はバンド0、3、4、5および7を示します。このパラメータに指定するバンドはすべて、ターゲットGeoRasterオブジェクト内の更新対象のバンドと互換性がある必要があります。 - targetArea
-
targetGeoRaster
内の更新対象の領域(矩形ウィンドウ)を指定します。左下と右上の座標を含む数値配列か、SDO_GEOMETRYオブジェクトとして指定します。SDO_NUMBER_ARRAY型はVARRAY(1048576) OF NUMBER
として定義されます。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がターゲット領域として使用されます(SDO_SRID要件の「使用上のノート」も参照してください)。
targetArea
がSDO_GEOMETRY型の場合は、targetLayerNumbers
およびsourceLayerNumbers
パラメータを使用して1つ以上のレイヤー番号を指定します。targetArea
がSDO_NUMBER_ARRAY型の場合は、targetBandNumbers
およびsourceBandNumbers
パラメータを使用して、1つ以上のバンド番号を指定します。指定した領域が
targetGeoRaster
の空間エクステントと交差しない場合、更新は行われません。このパラメータにNULLを指定した場合は、重複するすべての領域が更新されます。このパラメータの使用方法の詳細は、「イメージのピラミッド化: パラレル生成および部分更新」を参照してください。
- sourceGeoRaster
-
targetGeoRaster
の更新に使用する特定のレイヤーを含むGeoRasterオブジェクトを指定します。 - sourcePyramidLevel
-
sourceGeoRaster
オブジェクトのピラミッド・レベルを示す番号を指定します。 - sourceLayerNumbers
-
targetGeoRaster
の更新に使用するsourceGeoRaster
内のレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'
はレイヤー1、3、4、5および7を示します。このパラメータに指定するレイヤーはすべて、ターゲットGeoRasterオブジェクト内の更新対象のレイヤーと互換性がある必要があります。
- sourceBandNumbers
-
targetGeoRaster
の更新に使用するsourceGeoRaster
内のバンドを示す1つ以上のバンド番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'0,3-5,7'
はバンド0、3、4、5および7を示します。このパラメータに指定するバンドはすべて、ターゲットGeoRasterオブジェクト内の更新対象のバンドと互換性がある必要があります。
- updateUpperPyramids
-
上位レベルのピラミッドを更新するかどうかを指定する文字列(
TRUE
またはFALSE
)を指定します。(このパラメータにデフォルト値はありません。このパラメータは常に指定する必要があります。)このパラメータの使用方法の詳細は、「イメージのピラミッド化: パラレル生成および部分更新」を参照してください。 - bgValues
-
部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
使用上のノート
ノート:
targetGeoRaster
に指定したGeoRasterオブジェクトへの変更は、このプロシージャが完了した後では元に戻せない場合があるため、このプロシージャをコールする前にtargetGeoRasterオブジェクトのコピーを作成しておいてください。
両方のGeoRasterオブジェクトが地理参照されている場合は、2つのGeoRasterオブジェクトで使用されている座標系およびセル深度が同じであり、指定したピラミッド・レベルでの空間解像度が同じである必要があります(ただし、targetPyramidLevel
とsourcePyramidLevel
には異なる値を指定できます)。両方のGeoRasterオブジェクトが地理参照されていない場合は、ULTCoordinatesが考慮されてこれらのオブジェクトが互いに共同配置されます。
2つのGeoRasterオブジェクトの次元およびサイズは、異なっていても構いません。
targetArea
パラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。
-
NULL(ラスター空間を指定)
-
MDSYS.CS_SRS表のSRID列の値
window
パラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、window
パラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)
targetArea
パラメータで測地MBRを指定する場合は、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial開発者ガイド』を参照してください。
既存のビットマップ・マスクは更新されません。
ソースGeoRasterオブジェクトにターゲット領域を埋め込むための十分な大きさがない場合は、覆われずに残った領域は更新されません。
ターゲットGeoRasterオブジェクトがピラミッドを持つか圧縮されている場合、またはその両方の場合、ピラミッドおよび圧縮にも更新が反映されます。
上位レベルのピラミッドを更新するには、updateUpperPyramids
パラメータをTRUE
に指定する必要があります。(このパラメータにデフォルト値はありません。常に、TRUE
またはFALSE
を指定する必要があります。)
例
次の例では、指定したターゲットGeoRasterオブジェクトのバンド1内の指定領域を、別のGeoRasterオブジェクトの同じ領域のバンド0で更新します。
DECLARE gr1 sdo_georaster; gr2 sdo_georaster; area sdo_number_array := sdo_number_array(-200,-50,201,162); BEGIN SELECT georaster INTO gr2 FROM georaster_table WHERE georid=0 FOR UPDATE; SELECT georaster INTO gr1 FROM georaster_table WHERE georid=1; SDO_GEOR.updateRaster(gr2, 0, '1', area, gr1, 0, '0', 'true'); UPDATE GEORASTER_TABLE SET georaster=gr2 WHERE georid=0; COMMIT; END; /
親トピック: SDO_GEORパッケージのリファレンス