7.112 SDO_GEOR.reproject

形式

SDO_GEOR.reproject(
     inGeoRaster     IN SDO_GEORASTER, 
     resampleParam   IN VARCHAR2 DEFAULT NULL, 
     storageParam    IN VARCHAR2 DEFAULT NULL, 
     outSRID         IN NUMBER, 
     outGeoraster    IN OUT SDO_GEORASTER, 
     bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
     inGeoRaster     IN SDO_GEORASTER, 
     pyramidLevel    IN NUMBER DEFAULT 0, 
     cropArea        IN SDO_GEOMETRY DEFAULT NULL, 
     layerNumbers    IN VARCHAR2, 
     resampleParam   IN VARCHAR2 DEFAULT NULL, 
     storageParam    IN VARCHAR2 DEFAULT NULL, 
     outSRID         IN NUMBER, 
     outGeoraster    IN OUT SDO_GEORASTER, 
     bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
     inGeoRaster     IN SDO_GEORASTER, 
     pyramidLevel    IN NUMBER DEFAULT 0, 
     cropArea        IN SDO_NUMBER_ARRAY DEFAULT NULL, 
     bandNumbers     IN VARCHAR2, 
     resampleParam   IN VARCHAR2 DEFAULT NULL, 
     storageParam    IN VARCHAR2 DEFAULT NULL, 
     outSRID         IN NUMBER, 
     outGeoraster    IN OUT SDO_GEORASTER, 
     bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
     inGeoRaster     IN SDO_GEORASTER, 
     pyramidLevel    IN NUMBER DEFAULT 0, 
     cropArea        IN SDO_GEOMETRY DEFAULT NULL, 
     layerNumbers    IN VARCHAR2, 
     resampleParam   IN VARCHAR2 DEFAULT NULL, 
     storageParam    IN VARCHAR2 DEFAULT NULL, 
     outSRID         IN NUMBER, 
     rasterBlob      IN OUT NOCOPY BLOB, 
     outArea         OUT SDO_GEOMETRY, 
     outWindow       OUT SDO_NUMBER_ARRAY, 
     bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

または

SDO_GEOR.reproject(
     inGeoRaster     IN SDO_GEORASTER, 
     pyramidLevel    IN NUMBER DEFAULT 0, 
     cropArea        IN SDO_NUMBER_ARRAY DEFAULT NULL, 
     bandNumbers     IN VARCHAR2, 
     resampleParam   IN VARCHAR2 DEFAULT NULL, 
     storageParam    IN VARCHAR2 DEFAULT NULL, 
     outSRID         IN NUMBER, 
     rasterBlob      IN OUT NOCOPY BLOB, 
     outArea         OUT SDO_GEOMETRY, 
     outWindow       OUT SDO_NUMBER_ARRAY, 
     bgValues        IN SDO_NUMBER_ARRAY DEFAULT NULL);

説明

GeoRasterオブジェクトの全部または一部を、(outSRIDパラメータで指定された)異なるOracle Spatial座標系に再投影します。結果のオブジェクトは、新しいGeoRasterオブジェクト(永続記憶域目的)またはBLOB (一時使用目的)のいずれかです。

パラメータ

inGeoRaster

新しいオブジェクトを作成するために再投影処理を実行するSDO_GEORASTERオブジェクトを指定します。

pyramidLevel

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

cropArea

クロッピング領域を定義します。cropAreaがSDO_GEOMETRY型の場合は、layerNumbersパラメータを使用して1つ以上のレイヤー番号を指定します。cropAreaがSDO_NUMBER_ARRAY型の場合は、bandNumbersパラメータを使用して、1つ以上のバンド番号を指定します。

データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がクロッピング領域として使用されます(SDO_SRID要件の「使用上のノート」も参照してください)。

layerNumbers

処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、2-4はレイヤー2、3および4を示します)。

bandNumbers

処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、1-3はバンド1、2および3を示します)。

resampleParam

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

storageParam

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

outGeoRaster

スケール変更処理の結果を反映させる新しいSDO_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 (ゼロ)です。

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

使用上のノート

このプロシージャには2つの一般的な種類のインタフェースがあります。

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

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

inGeoRasterは、地理参照され、MDSYS.CS_SRS表のSRID列のSRID値を持つ必要があります。outSRIDは、inGeoRasterのSRIDとは異なる必要があります。再投影が不適切な場合もあります(たとえば、NAD83, Massachusetts Mainland (SRID = 26986)のGeoRasterオブジェクトを座標系NAD 27, UTMゾーン49N (SRID = 2032649)に再投影するなど)。この場合、再投影すると大規模なひずみが発生するため、実行されません。

inGeoRasteroutGeoRasterには異なるGeoRasterオブジェクトを指定する必要があります。操作後に、結果のGeoRasterオブジェクトのULT座標は、0 (ゼロ)に設定されます。

ソースまたは宛先オブジェクトに3次元座標系が含まれる場合、高さ(Z)の値は0 (ゼロ)に設定されます。

pyramidLevelパラメータを含む構文を使用して0 (ゼロ)より大きい値を指定した場合、再投影はソースGeoRasterオブジェクトの指定したピラミッド・レベルに基づきますが、それ以外の場合、再投影は、元のGeoRasterオブジェクト(pyramidLevel=0)に基づきます。出力GeoRasterオブジェクトにはピラミッド・データが含まれません。

cropAreaパラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は、MDSYS.CS_SRS表のSRID列の値である必要があります。cropAreaパラメータ・ジオメトリとinGeorasterオブジェクト・モデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、cropAreaパラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)

cropAreaパラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。(測地MBRについては、『Oracle Spatial開発者ガイド』を参照してください。)指定したクロッピング領域とソースGeoRasterオブジェクトの空間エクステントが重複する部分のみが再投影されます。

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

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

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

次の例では、SRID 32618によって定義された座標系にGeoRasterオブジェクトを再投影します。結果は、別のGeoRasterオブジェクトです。

DECLARE
   gr1 sdo_georaster;
   gr2 sdo_georaster;
BEGIN
  SELECT georaster INTO gr1 from georaster_table WHERE georid=10;
  INSERT INTO reproject_table VALUES (21, 'WGS 84 / UTM zone 18N',
                                      SDO_GEOR.init('rdt_5', 21))
  RETURNING georaster INTO gr2;
  sdo_geor.Reproject(gr1, 0, 0, SDO_NUMBER_ARRAY(0, 0, 517, 517),
                             null, null, 'blocking=optimalpadding, blocksize=(512,512,3),
                             interleaving=BSQ', 32618, gr2);
   UPDATE georaster_table SET georaster=gr2 WHERE georid=21;
   COMMIT;
END;
/

次の例では、SRID 32618によって定義された座標系にGeoRasterオブジェクトを再投影します。結果は、JPEG-F形式のデータを含む一時BLOBです。

DECLARE
   gr1 sdo_georaster;
   lob1 BLOB;
   outArea SDO_Geometry;
   outWindow SDO_NUMBER_ARRAY;
BEGIN
   SELECT georaster INTO gr1 from georaster_table WHERE georid=10;
   dbms_lob.createTemporary(lob1, TRUE);
   sdo_geor.Reproject(gr1, 0, SDO_NUMBER_ARRAY(0, 0, 120, 300),
                              '0',  null, 'compression = JPEG-F', 32618,
                              lob1, outArea, outWindow);
 
   dbms_lob.freeTemporary(lob1);
   COMMIT;
END;
/