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オブジェクトを生成します。パラメータ
polygonClip
がTRUE
である場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(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; /
親トピック: SDO_GEOR_RAパッケージのリファレンス