7.3 SDO_GEOR.affineTransform

形式

SDO_GEOR.affineTransform(
     inGeoRaster   IN SDO_GEORASTER, 
     translation   IN SDO_NUMBER_ARRAY DEFAULT NULL,
     scales        IN SDO_NUMBER_ARRAY DEFAULT NULL,
     rotatePt      IN SDO_NUMBER_ARRAY DEFAULT NULL,
     rotateAngle   IN NUMBER DEFAULT NULL,
     shear         IN SDO_NUMBER_ARRAY DEFAULT NULL,
     reflection    IN NUMBER DEFAULT NULL,
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL,
     parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR.affineTransform(
     inGeoRaster   IN SDO_GEORASTER, 
     translation   IN SDO_NUMBER_ARRAY DEFAULT NULL,
     scales        IN SDO_NUMBER_ARRAY DEFAULT NULL,
     rotatePt      IN SDO_NUMBER_ARRAY DEFAULT NULL,
     rotateAngle   IN NUMBER DEFAULT NULL,
     shear         IN SDO_NUMBER_ARRAY DEFAULT NULL,
     reflection    IN NUMBER DEFAULT NULL,
     storageParam  IN VARCHAR DEFAULT2 DEFAULT NULL, 
     rasterBlob    IN OUT NOCOPY_BLOB,
     outArea       OUT SDO_GEOMTRY,
     outWindow     OUT SDO_NUMBER_ARRAY, 
     bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL,
     parallelParam IN VARCHAR2 DEFAULT NULL);

説明

入力GeoRasterイメージのアファイン変換を実行して、パラメータtranslationscalesrotatePtrotateAngleshearおよびreflectionの値に基づいて出力GeoRasterイメージを生成します。

パラメータ

inGeoRaster

操作を実行するGeoRasterオブジェクトを指定します。地理参照する必要がありません。(地理参照については、「GeoRasterオブジェクトの地理参照」および「高度な地理参照」を参照してください。)

translation

指定する場合、平行移動変換に適用する行および列の数を使用して2つの整数値を含める必要があります。行および列の平行移動の値は相互に独立しています。ただし、正の値はイメージを右側および下側に平行移動し、負の値はイメージを左側および上側に平行移動します。このパラメータを省略すると、平行移動は実行されません。

scales

指定する場合、スケール変換に適用する行および列に適用するスケール係数を使用して2つの数値を含める必要があります。行および列のスケール変更の値は、相互に独立しています。ただし、0と1の間の値は行または列あるいはその両方のイメージのサイズを縮小します。1を超える値は行または列あるいはその両方のイメージのサイズを拡大します。このパラメータを省略すると、スケール変更は実行されません。

rotatePt

指定する場合、回転操作の中心として使用するセル空間座標(行および列)を表す2つの数値を含める必要があります。つまり、rotatePtに関連付けられているイメージの特徴は新しい出力イメージの中心になります。このパラメータを省略すると、イメージの中心が仮定されます。

rotateAngle

指定する場合、回転変換に適用される角度を識別する-180から180の間の数値を含める必要があります。正の値は右側に回転し、負の値は左側に回転します。詳細は、「使用上のノート」を参照してください。このパラメータを省略すると、回転は実行されません。

shear

指定する場合、変形変換のx座標およびy座標に適用する変形係数の2つの数値を含める必要があります。行および列の変形の値は、相互に独立しています。このパラメータを省略すると、変形は実行されません。

reflection

指定する場合、垂直反射または水平反射を表す数値1または2を含める必要があります。このパラメータを省略すると、反射は実行されません。

storageParam

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

outGeoRaster

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

rasterBlob

幾何補正を反映した出力を保持するBLOBを指定します。処理の前に、存在しているか、または初期化されている必要があります。

outArea

結果のオブジェクトのモデル座標系の最小境界矩形(MBR)を含むSDO_GEOMETRYオブジェクトを指定します。

outWindow

セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。

bgValues

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

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

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)

並列性が指定されている場合、プロシージャによって内部コミット操作が実行されます。エラーが発生した場合(Oracle Parallel Serverが原因である場合でも)、操作をロールバックするために、出力結果のGeoRasterオブジェクトを明示的に削除する必要があります。

使用上のノート

このプロシージャには2つの構文があります。

  • 最初の構文では、データベースへの永続的な格納のためにGeoRasterオブジェクトが生成されます。

  • 2番目の構文では、一時的な格納または即座の使用(画面へのデータの表示など)のためにBLOBが生成されます。

このプロシージャは、指定された単純なアファイン変換操作を個別または組合せで実行します。

すべての使用可能な操作および操作の組合せについて、このプロシージャは、格納されたイメージの物理表現を変換し、イメージの特徴の元の場所を保持する新しい地理参照情報を作成します。したがって、ビジュアライゼーション・ツールで投影されると、イメージが同じように表示されます。

次の例では、ソース・イメージを-90度(左側に90度)回転する出力GeoRasterオブジェクトが生成されます。

DECLARE
  gr1 sdo_georaster;
  gr2 sdo_georaster;  
BEGIN
  select georaster into gr1 from georaster_table where georid = 1;

  insert into georaster_table values(2, 'Rotated 90 left',
         sdo_geor.init('rdt0',2)) returning georaster into gr2;

  sdo_geor.affineTransform(inGeoRaster   => gr1,
                           translation   => null,
                           scales        => null,
                           rotatePt      => null,
                           rotateAngle   => -90,
                           shear         => null,
                           reflection    => null,
                           storageParam  => 'pyramid=true',
                           outGeoraster  => gr2);

  update georaster_table set georaster = gr2 where georid = 2;
  commit;
END;

次の例では、ソース・イメージを右側に15度回転して2倍大きく拡大する出力GeoRasterオブジェクトが生成されます。

DECLARE
  gr1 sdo_georaster;
  gr3 sdo_georaster;  
BEGIN
  select georaster into gr2 from georaster_table where georid = 1;

  insert into georaster_table values(3, 'Scaled x 2 Rotated 15',
         sdo_geor.init('rdt0',3)) returning georaster into gr3;

  sdo_geor.affineTransform(inGeoRaster   => gr1,
                           translation   => null,
                           scales        => sdo_number_array(2,2),
                           rotatePt      => null,
                           rotateAngle   => 15,
                           shear         => null,
                           reflection    => null,
                           storageParam  => 'blocksize=(512,512,3)',
                           outGeoraster  => gr3,
                           parallelParam => 'parallel=4');

  update georaster_table set georaster = gr3 where georid = 3;
  commit;
END;

次の例では、行および列の両方で5の係数を使用してソース・イメージを変形する出力GeoRasterオブジェクトが生成されます。

DECLARE
  gr1 sdo_georaster;
  gr4 sdo_georaster;  
BEGIN
  select georaster into gr2 from georaster_table where georid = 1;

  insert into georaster_table values(4, 'Shear 5,5',
         sdo_geor.init('rdt0',4)) returning georaster into gr4;

  sdo_geor.affineTransform(inGeoRaster   => gr1,
                           translation   => null,
                           scales        => null,
                           rotatePt      => null,
                           rotateAngle   => null,
                           shear         => sdo_number_array(5,5),
                           reflection    => null,
                           storageParam  => 'pyramid=true',
                           outGeoraster  => gr4,
                           parallelParam => 'parallel=4');

  update georaster_table set georaster = gr4 where georid = 4;
  commit;
END;

次の例では、ソース・イメージを垂直反射する出力GeoRasterオブジェクトが生成されます。

DECLARE
  gr1 sdo_georaster;
  gr5 sdo_georaster;  
BEGIN
  select georaster into gr2 from georaster_table where georid = 1;

  insert into georaster_table values(5, 'Vertical reflection',
         sdo_geor.init('rdt0',5)) returning georaster into gr5;

  sdo_geor.affineTransform(inGeoRaster   => gr1,
                           translation   => null,
                           scales        => null,
                           rotatePt      => null,
                           rotateAngle   => null,
                           shear         => null,
                           reflection    => 1,
                           storageParam  => 'pyramid=true',
                           outGeoraster  => gr5,
                           parallelParam => 'parallel=4');

  update georaster_table set georaster = gr5 where georid = 5;
  commit;
END;