7.7 SDO_GEOR.changeFormatCopy

形式

SDO_GEOR.changeFormatCopy(
     inGeoRaster   IN SDO_GEORASTER, 
     storageParam  IN VARCHAR2, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.changeFormatCopy(
     inGeoRaster   IN SDO_GEORASTER, 
     pyramidLevel  IN NUMBER, 
     storageParam  IN VARCHAR2, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

(たとえば、ブロック、セル深度またはインターリーブを変更した)別の記憶域形式を使用して、既存のGeoRasterオブジェクトのコピーを作成します。

パラメータ

inGeoRaster

形式をコピーするSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

ソースGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。

storageParam

記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。

outGeoRaster

コピーを格納するSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください)。inGeoRasterと同じGeoRasterオブジェクトは指定できません。

bgValues

部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValuesは0 (ゼロ)です。

入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。

使用上のノート

このプロシージャは、元のGeoRasterオブジェクトまたは元のGeoRasterオブジェクトに指定したピラミッド・レベルに基づき、指定した変更が反映された新しいGeoRasterオブジェクトを作成します。このプロシージャを使用した後、希望どおり変更されているかをコピーで確認し、必要に応じて元のGeoRasterオブジェクトを破棄します。

pyramidLevelパラメータを含まない構文を使用すると、元のGeoRasterオブジェクト(pyramidLevel=0)を基にコピーが作成されます。

元のGeoRasterオブジェクトのピラミッド(pyramidLevel > 0)からコピーが作成されており、元のGeoRasterオブジェクトが地理参照されている場合、変換後のGeoRasterオブジェクトに地理参照情報が生成されるのは、有効な多項式変換で地理参照されている場合のみです。変換後のオブジェクトの行および列のultCoordinatesは(0,0)に設定されます。

GeoRasterオブジェクトを圧縮または解凍するには、storageParamパラメータでcompressionキーワードを使用します。(GeoRasterオブジェクトを圧縮または解凍するための個別のGeoRasterファンクションまたはプロシージャはありません。)

inGeoRasterがNULLの場合、このプロシージャは処理を実行しません。

storageParamがNULLの場合、inGeoRasteroutGeoRasterにコピーされます。

outGeoRasterがラスター・データを持つ場合、コピー処理の前に削除されます。

inGeoRasteroutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。

inGeoRasterにピラミッド・データが存在する場合、上位レベルのピラミッド・データがoutGeoRasterにコピーされます。ただし、storageParam文字列にpyramid=FALSEが含まれる場合は除きます。

次の1つ以上の条件に該当する場合、例外が発生します。

  • inGeoRasterが無効である。

  • outGeoRasterが初期化されていない。

  • outGeoRasterに対するラスター・データ表が存在せず、outGeoRasterが空白のGeoRasterオブジェクトではない。

次の例では、両方の次元のブロック・サイズを2048に設定すること以外は、入力オブジェクトと同じGeoRasterオブジェクトを作成します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」例1-1の次に説明されています。)

DECLARE
    gr1 sdo_georaster;
    gr2 sdo_georaster;
BEGIN
    SELECT georaster INTO gr2 from georaster_table WHERE georid=11 FOR UPDATE;
    SELECT georaster INTO gr1 from georaster_table WHERE georid=1;
  
    sdo_geor.changeFormatCopy(gr1, 'blocksize=(2048,2048)', gr2);
    UPDATE georaster_table SET georaster=gr2 WHERE georid=11;
    COMMIT;
END;
/

次の例では、入力オブジェクトと同じGeoRasterオブジェクトを作成します。ただし、ラスター・データがDEFLATE形式に圧縮され、圧縮プロセスがパラレルに実行されます。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」例1-1の次に説明されています。)

DECLARE
    gr1 sdo_georaster;
    gr2 sdo_georaster;
BEGIN
    SELECT georaster INTO gr2 from georaster_table WHERE georid=11 FOR UPDATE;
    SELECT georaster INTO gr1 from georaster_table WHERE georid=1;
  
    sdo_geor.changeFormatCopy(gr1, 'compression=deflate parallel=4', gr2);
    UPDATE georaster_table SET georaster=gr2 WHERE georid=11;
    COMMIT;
END;
/