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の場合、inGeoRaster
はoutGeoRaster
にコピーされます。
outGeoRaster
がラスター・データを持つ場合、コピー処理の前に削除されます。
inGeoRaster
とoutGeoRaster
には異なる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; /
親トピック: SDO_GEORパッケージのリファレンス