12.2 SDO_GEOR_RA.diff

形式

SDO_GEOR_RA.diff(
     geor          IN SDO_GEORASTER, 
     geor1         IN SDO_GEORASTER, 
     cropArea      IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.diff(
     geor          IN SDO_GEORASTER, 
     geor1         IN SDO_GEORASTER, 
     cropArea      IN SDO_GEOMETRY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     ploygonClip   IN VARCHAR2 DEFAULT 'FALSE',
     parallelParam IN VARCHAR2 DEFAULT NULL);

または

SDO_GEOR_RA.diff(
     geor          IN SDO_GEORASTER,
     geor1         IN SDO_GEORASTER,
     cropArea      IN SDO_GEOMETRY,
     storageParam  IN VARCHAR2 DEFAULT NULL,
     rasterBlob    IN OUT BLOB,
     outArea       OUT SDO_GEOMETRY,
     outWindow     OUT SDO_NUMBER_ARRAY,
     nodata        IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue   IN NUMBER default 0;
SDO_GEOR_RA.diff(
     geor          IN SDO_GEORASTER,
     geor1         IN SDO_GEORASTER,
     cropArea      IN SDO_GEOMETRY,
     storageParam  IN VARCHAR2 DEFAULT NULL,
     rasterBlob    IN OUT BLOB,
     outArea       OUT SDO_GEOMETRY,
     outWindow     OUT SDO_NUMBER_ARRAY,
     nodata        IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue   IN NUMBER default 0,
     polygonClip   IN VARCHAR2 DEFAULT 'FALSE');

説明

diff操作を実行して、新しいGeoRasterオブジェクトを生成します(「使用上のノート」を参照)。新しいラスターはGeoRasterオブジェクトまたは単一のBLOBにあります。

パラメータ

geor

最初の入力GeoRasterオブジェクト。

geor1

2番目の入力GeoRasterオブジェクト。

cropArea

クロッピング領域を定義します。データ型がSDO_GEOMETRYである場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)を矩形クロッピング領域として使用し、出力GeoRasterオブジェクトを生成します。パラメータpolygonClipTRUEである場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(0)に設定されます。SDO_SRID要件のSDO_GEOR.reprojectの「使用上のノート」も参照してください。

データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。

storageParam

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

outGeoRaster

出力GeoRasterオブジェクトを指定します。

rasterBlob

処理結果の出力を保持するBLOB。処理の前に、存在しているか、または初期化されている必要があります。

outArea

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

outWindow

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

nodata

文字列TRUEでは、入力GeoRasterオブジェクトの任意のNODATAセルで、出力GeoRasterオブジェクトの対応するセルがnodataValueパラメータで指定された値に設定されます。文字列FALSE (デフォルト)では、NODATA値を含むセルが通常のデータとみなされます。NODATA値および値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。

nodataValue

nodataパラメータ値が文字列TRUEである場合にNODATAセルを設定するために使用する値を指定します。

polygonClip

cropAreaがNULLの場合は無視されます。それ以外の場合、文字列TRUEではモザイク処理されたデータをクロッピングするためにcropArea値が使用され、文字列FALSEまたはNULL値では出力イメージをクロッピングするためにcropAreaのMBRが使用されます。

parallelParam

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

parallelParamを指定すると、このプロシージャの結果をロールバックできません(「使用上のノート」を参照)。

使用上のノート

このプロシージャは、2つの入力GeoRasterオブジェクトを取得してover操作を適用し、新しいGeoRasterオブジェクトを生成します。特に、各レイヤーのセル値ごとに、2つの入力オブジェクトの値が異なる場合は最初の入力の値が出力されますが、2つの入力オブジェクトの値が同じ場合は出力がゼロになります。

2つの入力GeoRasterオブジェクトは、同じ次元サイズおよび同じ数のバンドを使用する必要があります。それ以外の場合、ORA-13397エラーが生成されます。

parallelParamを指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。

詳細は、「論理演算」を参照してください。

次の例では、2つの入力GeoRasterオブジェクトのdiff操作を実行します。出力はGeoRasterオブジェクトです。

declare
  geor       SDO_GEORASTER;
  geor1      SDO_GEORASTER;
  geor2      SDO_GEORASTER;
  geom       sdo_geometry;
begin
  select georaster into geor from georaster_table where georid = 100;
  select georaster into geor1 from georaster_table where georid = 101;
  select georaster into geor2 from georaster_table where georid = 102 for update;
  geom:=null;
  sdo_geor_ra.diff(geor,geor1,geom,null,geor2);
  update georaster_table set georaster = geor2 where georid = 102;
end;
/

次の例では、2つの入力GeoRasterオブジェクトのdiff操作を実行します。出力はGeoRasterオブジェクトです。出力はBLOBです。

DECLARE 
  geor       SDO_GEORASTER;
  geor1      SDO_GEORASTER;
  out_lob    BLOB;
  outArea    sdo_geometry;
  outWindow  sdo_number_array;  
  geom       sdo_geometry;
BEGIN
  select georaster into geor from georaster_table where georid = 100;
  select georaster into geor1 from georaster_table where georid = 101;
  dbms_lob.create_temporary(out_lob, TRUE);
  geom:=null;
  sdo_geor_ra.diff(geor,geor1,geom,null,out_lob, outArea, outWindow);
  if outWindow is not null then
     dbms_output.put_line('output window: (' || outWindow(1) || ',' ||
                           outWindow(2) || ',' || outWindow(3) || ',' || outWindow(4) || ')');
  end if;
  dbms_lob.freeTemporary(out_lob);
END;
/