7.109 SDO_GEOR.mergeLayers

形式

SDO_GEOR.mergeLayers(
     targetGeoRaster    IN OUT SDO_GEORASTER, 
     sourceGeoRaster    IN SDO_GEORASTER, 
     sourceLayerNumbers IN VARCHAR2 DEFAULT NULL, 
     bgValues           IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.mergeLayers(
     source1GeoRaster    IN SDO_GEORASTER, 
     source1LayerNumbers IN VARCHAR2, 
     source2GeoRaster    IN SDO_GEORASTER, 
     source2LayerNumbers IN VARCHAR2, 
     storageParam        IN VARCHAR2, 
     outGeoRaster        IN OUT SDO_GEORASTER, 
     bgValues            IN SDO_NUMBER_ARRAY DEFAULT NULL, 
     pyramidLevel        IN NUMBER DEFAULT NULL);

説明

2つのGeoRasterオブジェクトのレイヤーをマージします。マージ処理には、ソース・レイヤーをターゲットGeoRasterオブジェクトに追加する方法(最初の構文)か、和演算を実行する方法(2番目の構文)のいずれかを使用します。

パラメータ

targetGeoRaster

sourceGeoRasterに含まれるレイヤーの追加先となるGeoRasterオブジェクトを指定します。sourceGeoRasterと同じGeoRasterオブジェクトは指定できません。(このプロシージャをコールする前に、このオブジェクトのコピーを作成しておいてください。)

sourceGeoRaster

targetGeoRasterに追加する特定のレイヤーを含むGeoRasterオブジェクトを指定します。

sourceLayerNumbers

sourceGeoRasterからtargetGeoRasterに追加するレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

source1GeoRaster

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource2GeoRasterのレイヤーと結合する特定のレイヤーを持つGeoRasterオブジェクトを1つ指定します。

source1LayerNumbers

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource2GeoRasterのレイヤーと結合するsource1GeoRaster内のレイヤーを示す1つ以上のレイヤー番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

source2GeoRaster

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource1GeoRasterのレイヤーと結合する特定のレイヤーを持つGeoRasterオブジェクトを1つ指定します。

source2LayerNumbers

和演算で出力GeoRasterオブジェクトoutGeoRaster内のsource1GeoRasterのレイヤーと結合するsource2GeoRaster内のレイヤーを示す1つ以上の番号を文字列で指定します。カンマで数字または範囲を区切り、ハイフンで範囲を指定します。たとえば、'1,3-5,7'はレイヤー1、3、4、5および7を示します。

storageParam

outGeoRasterの作成時に適用される記憶域パラメータを示す文字列を指定します。記憶域パラメータについては、「記憶域パラメータ」を参照してください。

outGeoRaster

和演算の結果を反映させる新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください)。source1GeoRasterまたはsource2GeoRasterと同じGeoRasterオブジェクトは指定できません。

bgValues

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

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

pyramidLevel

ソースGeoRasterオブジェクトがマージされるピラミッド・レベルを示す番号を指定します。指定しない場合、ピラミッド・レベル0が使用されます。

使用上のノート

ノート:

targetGeoRasterに指定したGeoRasterオブジェクトへの変更は、このプロシージャが完了した後では元に戻せない場合があるため、このプロシージャをコールする前にtargetGeoRasterオブジェクトのコピーを作成しておいてください。

georasterまたはoutGeoRasterパラメータで指定する結果のGeoRasterオブジェクトには、sourceGeoRastersource1GeoRasterまたはsource2GeoRasterとして指定したGeoRasterオブジェクトと同じオブジェクトを指定できません。

追加または結合する2つのGeoRasterオブジェクトは、同じ空間次元サイズで、同じ領域を覆っている必要があります。いずれかのGeoRasterオブジェクトが地理参照されている場合は、もう一方のオブジェクトも地理参照されている必要があり、モデルSRIDおよび空間解像度が同じで、モデル空間内の同じ領域を覆っている必要があります。いずれのGeoRasterオブジェクトも地理参照されていない場合は、それぞれのultCoordinatesが同一であることが必要です。

追加または結合する2つのGeoRasterオブジェクトは、同じセル深度を持つ必要はありません。デフォルトでは、最初のソースGeoRasterオブジェクトのセル深度が、結果のGeoRasterオブジェクトに使用されます。データ損失を回避したり、出力セル深度を変更したりするために、結果のGeoRasterオブジェクトのstorageParamに別のcellDepthを指定できます。

次の例では、2つのGeoRasterオブジェクト内の指定したレイヤーをマージして3つ目のGeoRasterオブジェクトに出力します。マージ処理には和演算を使用します。

declare
 gr1 sdo_georaster;
 gr2 sdo_georaster;
 gr3 sdo_georaster;
begin
 select georaster into gr1 from georaster_table where georid=1;
 select georaster into gr2 from georaster_table where georid=2;
 insert into georaster_table(georid, georaster) values (3, sdo_geor.init('RDT_1'))
    returning georaster into gr3;
 sdo_geor.mergeLayers(gr1, '3', gr2, '2,1', 'blocking=false', gr3);
 update georaster_table set georaster=gr3 where georid=3;
 commit;
end;
/

SDO_GEOR.mergLayersを使用して複数のレイヤーを既存のGeoRasterオブジェクトに追加する例は、「バンドのマージ」の例を参照してください。