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オブジェクトで使用されている座標系およびセル深度が同じであり、指定したピラミッド・レベルでの空間解像度が同じである必要があります(ただし、targetPyramidLevelsourcePyramidLevelには異なる値を指定できます)。両方の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;
/