12.8 SDO_GEOR_RA.stack
礼式 (SDO_GEORASTER_ARRAY入力)
SDO_GEOR_RA.stack( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_NUMBER_ARRAY, layerList IN SDO_NUMBER_ARRAY, method IN VARCHAR2, 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.stack( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, layerList IN SDO_NUMBER_ARRAY, method IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, polygonClip IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
DO_GEOR_RA.stack( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_NUMBER_ARRAY, layerList IN SDO_NUMBER_ARRAY, method IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT NOCOPY BLOB, outArea OUT SDO_GEOMETRY, outWindow OUT SDO_NUMBER_ARRAY, nodata IN VARCHAR2 DEFAULT ‘FALSE’, nodataValue IN NUMBER default 0,;
SDO_GEOR_RA.stack( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, layerList IN SDO_NUMBER_ARRAY, method IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT NOCOPY 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’);
形式 (SYS_REFCURSOR入力)
SDO_GEOR_RA.stack( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_NUMBER_ARRAY, bandNumber IN NUMBER, method IN VARCHAR2, 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.stack( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, bandNumber IN NUMBER, method IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, polygonClip IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
DO_GEOR_RA.stack( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_NUMBER_ARRAY, bandNumber IN NUMBER, method IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT NOCOPY BLOB, outArea OUT SDO_GEOMETRY, outWindow OUT SDO_NUMBER_ARRAY, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER default 0,;
SDO_GEOR_RA.stack( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, bandNumber IN NUMBER, method IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT NOCOPY 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’);
説明
セル値が入力GeoRasterオブジェクトのレイヤーまたはバンドのリストのローカル統計値である単一レイヤーのラスターをGeoRasterオブジェクトまたは単一のBLOBに生成します。入力レイヤーはlayerListパラメータ(またはbandNumberパラメータによる入力バンド)で指定され、統計メソッドはmethodパラメータで指定されます。
パラメータ
- georArray
-
GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、
VARRAY(10485760) OF SDO_GEORASTERとして定義されます。 - inGeoRasters
-
入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。
- cropArea
-
クロッピング領域を定義します。SDO_GEOMETRYオブジェクトにNULL以外のSRIDが含まれる場合、ソースGeoRasterオブジェクトは地理参照される必要がありますが、それ以外の場合、ソースGeoRasterオブジェクトは地理参照されても地理参照されなくてもかまいません。
polygonClipがFALSEの場合、cropAreaのMBRがデータをクロッピングするために使用されます。polygonClipがTRUEの場合、cropAreaのジオメトリがデータをクロッピングするために使用されます。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- layerList
-
出力する統計値を計算するために使用される入力GeoRasterオブジェクトのバンドを指定する数値の配列。たとえば、
georArrayでは、2、3、4のバンドをそれぞれ使用する3つのGeoRasterオブジェクト(geor1、geor2、geor3)を指定します。レイヤー・リスト{0,3,7}を使用して、次の3つのバンドを指定します。-
最初のGeoRasterオブジェクト
geor1の最初のバンド -
2番目のGeoRasterオブジェクト
geor2の2番目のバンド -
3番目のGeoRasterオブジェクト
geor3の3番目のバンド
-
- bandNumber
-
nullの場合、入力GeoRasterオブジェクトのすべてのバンドが統計計算の対象となり、そうでない場合は、入力GeoRasterオブジェクトの指定されたバンドが統計計算の対象となります。たとえば、
bandNumberが0(ゼロ)の場合は、入力GeoRasterオブジェクトの最初のバンドがすべて統計計算に含まれます。 - method
-
戻す必要があるローカル統計値を指定する文字列。次の値のいずれか(
max、min、median、mean、std、sum、minority、majority、diversity)を指定する必要があります。 - storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- rasterBlob
-
処理結果の出力を保持するBLOB。処理の前に、存在しているか、または初期化されている必要があります。
- outArea
-
結果のオブジェクトのモデル座標系の最小境界矩形(MBR)を含むSDO_GEOMETRYオブジェクトを指定します。
- outWindow
-
セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。
- nodata
-
文字列
TRUEは、指定したlayerListパラメータにNODATAセルがある場合、出力GeoRasterオブジェクトの対応するセルがnodataValueパラメータに指定された値に設定されることを示します。文字列FALSE(デフォルト)では、NODATA値を含むセルが通常のデータとみなされます。NODATA値および値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。 - nodataValue
-
nodataパラメータ値が文字列TRUEである場合にNODATAセルを設定するために使用する値を指定します。 - parallelParam
-
操作の並列度を指定します。指定する場合、
parallel=nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)parallelParamを指定すると、このプロシージャの結果をロールバックできません(「使用上のノート」を参照)。
使用上のノート
すべての入力GeoRasterオブジェクトは同じ次元サイズを使用する必要があります。それ以外の場合、ORA-13397エラーが生成されます。
parallelParamを指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
例
次の例では、2つの入力GeoRasterオブジェクトのstack操作を実行します。出力はGeoRasterオブジェクトです。
DECLARE
geor SDO_GEORASTER;
geor1 SDO_GEORASTER;
geor2 SDO_GEORASTER;
geom mdsys.sdo_geometry;
BEGIN
geom:= sdo_geometry(2003,82394, NULL,
sdo_elem_info_array(1, 1003, 1),
sdo_ordinate_array(20283.775, 1011087.9,
18783.775, 1008687.9,
21783.775, 1008687.9,
22683.775+0.001, 1009587.9+0.001,
20283.775, 1011087.9));
select georaster into geor from georaster_table where georid = 100;
select georaster into geor2 from georaster_table where georid = 102;
select georaster into geor1 from georaster_table where georid = 101 for update;
sdo_geor_ra.stack(SDO_GEORASTER_ARRAY(geor,geor2),geom,SDO_NUMBER_ARRAY(3,5),'max',null,geor1,'false',0,'TRUE');
update georaster_table set georaster = geor1 where georid = 101;
END;
/次の例では、2つの入力GeoRasterオブジェクトのstack操作を実行します。出力はBLOBです。
DECLARE
geor SDO_GEORASTER;
geor2 SDO_GEORASTER;
geom sdo_geometry;
out_lob BLOB;
outArea sdo_geometry;
outWindow sdo_number_array;
BEGIN
geom:= null;
select georaster into geor from georaster_table where georid = 100;
select georaster into geor2 from georaster_table where georid = 102;
dbms_lob.create_temporary(out_lob, TRUE);
sdo_geor_ra.stack(SDO_GEORASTER_ARRAY(geor,geor2),geom,SDO_NUMBER_ARRAY(3,5),'max',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;
/
次の例では、カーソル内の2つの入力GeoRasterオブジェクトの最初のバンドに対してスタック操作を実行します。出力はGeoRasterオブジェクトです。
DECLARE
geor1 SDO_GEORASTER;
mycur SYS_REFCURSOR;
geom mdsys.sdo_geometry;
BEGIN
geom:= sdo_geometry(2003,82394, NULL,
sdo_elem_info_array(1, 1003, 1),
sdo_ordinate_array(20283.775, 1011087.9,
18783.775, 1008687.9,
21783.775, 1008687.9,
22683.775+0.001, 1009587.9+0.001,
20283.775, 1011087.9));
open mycur for 'select georaster from georaster_table where georid in (100, 102)';
select georaster into geor1 from georaster_table where georid = 101 for update;
sdo_geor_ra.stack(mycur,geom,0,'max',null,geor1,'false',0,'TRUE');
update georaster_table set georaster = geor1 where georid = 101;
END;
/親トピック: SDO_GEOR_RAパッケージのリファレンス