7.113 SDO_GEOR.scaleCopy

形式

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

または

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

説明

行次元および列次元に沿ってイメージを拡大または縮小して、GeoRasterオブジェクトをスケール変更し、そのスケール変更が反映された結果を新しいオブジェクトに格納します。

パラメータ

inGeoRaster

新しいオブジェクト(outGeoRaster)を作成するためにスケール変更処理を実行するSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

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

scaleParam

スケール変更パラメータ・キーワード、およびその関連する値を示す文字列を指定します。キーワードは次のいずれかである必要があります。

ノート:

GeoRasterのサブプログラムに対する文字列(VARCHAR2)パラメータの中に数値がある場合は、ロケールにかかわらず、小数点にはピリオド(.)を使用する必要があります。

  • scaleFactor: 元のサイズに乗算して縮小または拡大を実行します。このキーワードには、0 (ゼロ)より大きい数値を指定する必要があります('scaleFactor=0.75'など)。値が1.0の場合、現行のサイズは変更されません。値が1より小さい場合はイメージは縮小され、1より大きい場合はイメージは拡大されます。各次元のセル数は、元の数にscaleFactorを掛けた値になります。たとえば、scaleFactor値が2で、GeoRasterオブジェクトがXおよびY次元を持つ場合、各次元のセル数は2倍になります。

  • maxDimSize: 各次元のセルの最大数によってサイズを指定します。このキーワードには、次元ごとの数値を指定する必要があります('maxDimSize=(512,512)'など)。アスペクト比は変更されません。

  • rowMaxDimSizeおよびcolumnMaxDimSize: 行および列次元のセルの最大数によってサイズを指定します。このペアのキーワードには、次元ごとに数値を含める必要があります(たとえば、'rowMaxDimSize=512,columnMaxDimSize=256'など)。アスペクト比は変更できません。2つのキーワードを一緒に指定する必要があります。

  • rowScaleFactorおよびcolumnScaleFactor: 元のサイズに乗算して縮小または拡大を実行します。このペアのキーワードには、0(ゼロ)を超える数値を含める必要があります。値が1.0の場合、現行のサイズは変更されません。値が1より小さい場合はイメージは縮小され、1より大きい場合はイメージは拡大されます。行次元のセル数は、元の数にrowScaleFactorを掛けた値になります。列次元のセル数は、元の数にcolumnScaleFactorを掛けた値になります。rowScaleFactorおよびcolumnScaleFactorは異なる数値を使用できますが、一緒に指定する必要があります。

resampleParam

リサンプリング・パラメータを含む文字列を指定します。使用可能なキーワードおよび値については、「使用上のノート」を参照してください。

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オブジェクトのコピーで希望どおり変更されているかを確認し、必要に応じて元のGeoRasterオブジェクトを破棄します。

pyramidLevelパラメータを含まない構文を使用すると、元のGeoRasterオブジェクト(pyramidLevel=0)を基にスケール変更が行われます。

スケール変更されたセル値を取得する必要がある場合は、SDO_GEOR.getCellValueファンクションの「使用上のノート」に示すプロシージャを使用します。

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

resampleParamには、次の1つ以上のキーワードにそれぞれ適切な値を指定して、それらを引用符で囲んだ文字列を指定する必要があります。

  • resampling (resampling=NNなど): リサンプリング・メソッドを指定します。NNBILINEARBIQUADRATICCUBICAVERAGE4AVERAGE16のいずれかを指定する必要があります。詳細は、「リサンプリングおよび内挿」を参照してください。

  • nodata (nodata=TRUEなど): プロシージャでの処理中にNODATA値およびその値の範囲を考慮するかどうかを指定します。TRUE (NODATA値およびその値の範囲を考慮する)またはFALSE (NODATA値およびその値の範囲を考慮しない)のいずれかを指定します。デフォルト値はFALSEです。この値がTRUEで、リサンプリング・メソッドがBILINEARBIQUADRATICCUBICAVERAGE4またはAVERAGE16の場合、リサンプリングの計算に含まれるセル値がNODATA値であると、リサンプリングの結果も常にNODATA値になります。複数のNODATA値または値の範囲が存在する場合、結果のNODATA値は、現行のラスター・レイヤーに関連付けられているNODATA値の最小値になります。

この処理中には、入力されるGeoRasterオブジェクトの上位レベルのピラミッド・データは考慮されず、出力されるGeoRasterオブジェクトにはピラミッド・データは含まれません。

スケールが変更されなかった場合(scaleFactor=1の場合)でも、処理後、行と列のULT座標は常に0 (ゼロ)に設定されます。

このプロシージャは、バンド次元のスケール変更は行いません。

ソースGeoRasterオブジェクトが有効な多項式変換を使用して地理参照される場合、それとともに結果のGeoRasterオブジェクトの地理参照情報が生成されます。それ以外の場合、結果のGeoRasterオブジェクトには空間参照情報は含まれません。

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

  • inGeoRasterが無効である。

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

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

次の例では、イメージを4分の3 (0.75)のサイズに縮小して、AVERAGE4リサンプリングを指定し、記憶域パラメータで各次元の最適化されたブロック・サイズを512に指定します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」例1-1の次に説明されています。)

DECLARE
  gr1 sdo_georaster;
  gr2 sdo_georaster;
BEGIN
  INSERT INTO georaster_table (georid, georaster) 
    VALUES (21, sdo_geor.init('RDT_1'))
    RETURNING georaster INTO gr2;

  SELECT georaster INTO gr1 FROM georaster_table WHERE georid=2;

  sdo_geor.scaleCopy(gr1, 'scaleFactor=0.75', 'resampling=AVERAGE4',
                     'blocking=optimalpadding blocksize=(512,512)', gr2);
  UPDATE georaster_table SET georaster=gr2 WHERE georid=21;
  COMMIT;
END;
/