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オブジェクトは地理参照されても地理参照されなくてもかまいません。polygonClipFALSEの場合、cropAreaのMBRがデータをクロッピングするために使用されます。polygonClipTRUEの場合、cropAreaのジオメトリがデータをクロッピングするために使用されます。

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

layerList

出力する統計値を計算するために使用される入力GeoRasterオブジェクトのバンドを指定する数値の配列。たとえば、georArrayでは、2、3、4のバンドをそれぞれ使用する3つのGeoRasterオブジェクト(geor1geor2geor3)を指定します。レイヤー・リスト{0,3,7}を使用して、次の3つのバンドを指定します。

  • 最初のGeoRasterオブジェクトgeor1の最初のバンド

  • 2番目のGeoRasterオブジェクトgeor2の2番目のバンド

  • 3番目のGeoRasterオブジェクトgeor3の3番目のバンド

bandNumber

nullの場合、入力GeoRasterオブジェクトのすべてのバンドが統計計算の対象となり、そうでない場合は、入力GeoRasterオブジェクトの指定されたバンドが統計計算の対象となります。たとえば、bandNumber0 (ゼロ)の場合は、入力GeoRasterオブジェクトの最初のバンドがすべて統計計算に含まれます。

method

戻す必要があるローカル統計値を指定する文字列。次の値のいずれか(maxminmedianmeanstdsumminoritymajoritydiversity)を指定する必要があります。

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;
/