11 SDO_GEOR_RAパッケージのリファレンス
SDO_GEOR_RAパッケージには、GeoRasterに関連するラスター代数および分析操作のためのサブプログラム(ファンクションおよびプロシージャ)が含まれます。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。
トピック:
11.1 SDO_GEOR_RA.classify
形式
SDO_GEOR_RA.classify( inGeoRaster IN SDO_GEORASTER, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.classify( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.classify( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, 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);
または
SDO_GEOR_RA.classify( georArray IN SDO_GEORASTER_ARRAY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.classify( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_NUMBER_ARRAY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.classify( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, 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);
または
SDO_GEOR_RA.classify( inGeoRasters IN SYS_REFCURSOR, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.classify( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_NUMBER_ARRAY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.classify( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, expression IN VARCHAR2, rangeArray IN SDO_NUMBER_ARRAY, valueArray IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, 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);
説明
指定した分類操作を1つ以上の入力GeoRasterオブジェクトに対して適用した後に、新しいGeoRasterオブジェクトを生成します。
3つの入力GeoRasterオブジェクトごとに3つの形式またはオブジェクト指定オプションがあります(SDO_GEORASTER、SDO_GEORASTER_ARRAY、SYS_REEFCURSOR)。3つの各グループ内で、クロッピング領域なし、SDO_NUMBER_ARRAYまたはSDO_GEOMETRYのクロッピング領域を指定できます。SDO_GEOMETRYクロッピング領域の場合、ポリゴン・クリップ・オプションを指定できます。
パラメータ
- inGeoRaster
-
入力GeoRasterオブジェクトを指定します。
- georArray
-
GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、
VARRAY(10485760) OF SDO_GEORASTER
として定義されます。 - inGeoRasters
-
入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。
- cropArea
-
クロッピング領域を定義します。データ型がSDO_GEOMETRYである場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)を矩形クロッピング領域として使用し、出力GeoRasterオブジェクトを生成します。パラメータ
polygonClip
がTRUE
である場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(0)に設定されます。パラメータpolygonClip
がFALSE
である場合、最小境界矩形内のすべてのセルが処理されます。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- expression
-
セル値を分類するために使用する算術式を指定します。このパラメータの指定方法の詳細は、「使用上の注意」を参照してください。
- rangeArray
-
セル値を分類するための範囲を定義する数値配列を指定します。配列には、1つ以上の要素が含まれている必要があります。
- valueArray
-
各範囲のターゲット・セル値を定義する数値配列を指定します。要素の数は、
rangeArray
の要素より1つ多くする必要があります(その長さがrangeArray
+1である必要があります)。 - storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- 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
を指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。
使用上の注意
このプロシージャでは、1つ以上の入力GeoRasterオブジェクトおよびexpression
パラメータ(算術式の文字列)に基づいて、1レイヤーのGeoRasterオブジェクトが生成されます。出力GeoRasterオブジェクトのセルごとに、入力GeoRasterオブジェクトの対応するセル値に対してexpression
が評価され、次のアルゴリズムを使用して出力GeoRasterオブジェクトのセル値が計算されます。
if (value of expression < rangeArray[0]) cellValue=valueArray[0] else if (value of expression >= rangeArray[n-1]) cellValue=valueArray[n] else if rangeArray[m-1] <= value of expression < rangeArray[m] cellValue=valueArray[m]
expression
の計算:
-
rangeArray
の長さはn -
valueArray
の長さはn+1 -
0 < m < n-1
詳細は、「ラスター代数言語」を参照してください。
parallelParam
を指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
例
次の例では、1番目のレイヤーのセル値に基づいてセル値を分類します。
DECLARE geor SDO_GEORASTER; geor1 SDO_GEORASTER; rangeArray SDO_NUMBER_ARRAY; valueArray SDO_NUMBER_ARRAY; BEGIN rangeArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180); valueArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180,190); select georaster into geor from georaster_table where georid = 1; insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1; sdo_geor_ra.classify(geor,'{0}',rangeArray,valueArray,null,geor1); update georaster_table set georaster = geor1 where georid = 5; commit; END; /
11.2 SDO_GEOR_RA.diff
形式
SDO_GEOR_RA.diff( georaster1 IN SDO_GEORASTER, georaster2 IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.diff( georaster1 IN SDO_GEORASTER, georaster2 IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, storageParam IN VARCHAR2, 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);
説明
diff操作を実行して、新しいGeoRasterオブジェクトを生成します(「使用上の注意」を参照)。
パラメータ
- georaster1
-
最初の入力GeoRasterオブジェクト。
- georaster2
-
2番目の入力GeoRasterオブジェクト。
- cropArea
-
クロッピング領域を定義します。データ型がSDO_GEOMETRYである場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)を矩形クロッピング領域として使用し、出力GeoRasterオブジェクトを生成します。パラメータ
polygonClip
がTRUE
である場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(0)に設定されます。SDO_SRID要件のSDO_GEOR.reprojectの「使用上の注意」も参照してください。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- 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操作を実行します。
declare geor MDSYS.SDO_GEORASTER; geor1 MDSYS.SDO_GEORASTER; geor2 MDSYS.SDO_GEORASTER; geom mdsys.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; mdsys.sdo_geor_ra.diff(geor,geor1,geom,null,geor2); update georaster_table set georaster = geor2 where georid = 102; end; /
11.3 SDO_GEOR_RA.findCells
形式
SDO_GEOR_AGGR.findCells( inGeoRaster IN SDO_GEORASTER, condition IN VARCHAR2, storageParam IN VARCHAR2 outGeoRaster OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_AGGR.findCells( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, condition IN VARCHAR2, storageParam IN VARCHAR2 outGeoRaster OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_AGGR.findCells( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, condition IN VARCHAR2, storageParam IN VARCHAR2 outGeoRaster OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', polygonClip IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
説明
入力GeoRasterオブジェクトに基づいて新しいGeoRasterオブジェクトを生成しますが、condition
パラメータの指定を満たしていないすべてのセルをマスクします。
パラメータ
- inGeoRaster
-
入力GeoRasterオブジェクトを指定します。
- cropArea
-
クロッピング領域を定義します。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)が矩形クロッピング領域として使用され、出力GeoRasterオブジェクトが生成されます。SDO_SRID要件のSDO_GEOR.reprojectの「使用上の注意」も参照してください。パラメータ
polygonClip
がTRUE
である場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(0)に設定されます。パラメータpolygonClip
がFALSE
である場合、最小境界矩形内のすべてのセルが処理されます。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- condition
-
セルを除外するために使用する式文字列を指定します。(詳細は、「使用上の注意」を参照してください。)
- storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- bgValues
-
入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
- nodata
-
文字列
TRUE
では、GeoRasterオブジェクトのNODATAセルに元の値を維持するように指定します。文字列FALSE
(デフォルト)では、NODATA値を含むセルが通常のデータとみなされます。NODATA値および値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。 - polygonClip
-
cropArea
がNULLの場合は無視されます。それ以外の場合、文字列TRUE
では、cropArea
ジオメトリがデータ処理で使用されますが、文字列FALSE
またはNULL値では、cropArea
ジオメトリ・オブジェクトの最小境界矩形(MBR)がデータ処理で使用されます。 - parallelParam
-
操作の並列度を指定します。指定する場合、
parallel=
nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)parallelParam
を指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。
使用上の注意
このプロシージャでは、入力GeoRasterオブジェクトおよびexpression
パラメータ(ブール式文字列のbooleanExpr
)に基づいて、新しいGeoRasterオブジェクトが生成されます。出力GeoRasterオブジェクトのセルごとに、入力GeoRasterオブジェクトの対応するセル値に対して条件が評価されます。セルのcondition
がTRUEの場合、出力GeoRasterオブジェクトでは元のセル値が維持されますが、それ以外の場合、出力GeoRasterオブジェクトのセルに対してbgValues
が入力されます。
詳細は、「ラスター代数言語」を参照してください。
parallelParam
を指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
例
次の例では、2番目のレイヤーのセル値が200以下の場合に、セル値をデフォルトの背景値0に変更します。
DECLARE geor SDO_GEORASTER; geor1 SDO_GEORASTER; BEGIN select georaster into geor from georaster_table where georid = 1; insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1; sdo_geor_ra.findcells(geor, '{1}>200',null,geor1); update georaster_table set georaster = geor1 where georid = 5; commit; END; /
次の例では、ジオメトリ・オブジェクト(geom
)を入力cropArea
として使用します。
DECLARE geor SDO_GEORASTER; geor0 SDO_GEORASTER; geor1 SDO_GEORASTER; geom SDO_GEOMETRY; BEGIN geom:= sdo_geometry(2003,82394, NULL, sdo_elem_info_array(1, 1003, 1), sdo_ordinate_array(21783.775, 1008687.9, 18783.775, 966687.905, 63783.775, 966687.905, 81783.775, 990687.905, 21783.775, 1008687.9)); select georaster into geor from georaster_table where georid = 100; select georaster into geor1 from georaster_table where georid = 101 for update; sdo_geor_ra.findcells(geor,geom,'({1}=42)','blocking=true, blocksize=(256,256,3)',geor1,null,'false'); update georaster_table set georaster = geor1 where georid = 101; END; /
11.4 SDO_GEOR_RA.isOverlap
形式
SDO_GEOR.isOverlap( georaster1 IN SDO_GEORASTER, georaster2 IN SDO_GEORASTER, tolerance IN NUMBER DEFAULT 0.5 ) RETURN VARCHAR2;
または
SDO_GEOR_RA.isOverlap( georArray IN SDO_GEORASTER_ARRAY, tolerance IN NUMBER DEFAULT 0.5 ) RETURN VARCHAR2;
または
SDO_GEOR_RA.isOverlap( geor_cur IN SYS_REFCURSOR, tolerance IN NUMBER DEFAULT 0.5 ) RETURN VARCHAR2;
説明
文字列TRUE
(2つ以上のGeoRasterオブジェクトが重複している場合)またはFALSE
(2つ以上のGeoRasterオブジェクトが重複していない場合)を戻します。(地理参照の有無にかかわらず、2つのGeoRasterオブジェクトの重複を決定するために使用されるロジックについては、「使用上の注意」を参照してください。)
パラメータ
- georaster1
-
GeoRasterオブジェクトを指定します。
- georaster2
-
GeoRasterオブジェクトを指定します。
- georArray
-
GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、
VARRAY(10485760) OF SDO_GEORASTER
として定義されます。 - geor_cur
-
入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。
- tolerance
-
セル空間の2つのセルがモデル空間で重複しているかどうかを決定するために使用される許容差の値を指定します。値は、0から1の間である必要があり、単位はセルです。たとえば、0.5 (デフォルト)では、セルの半分、つまり、2つのセル間の距離が0.5セル以下の場合にそれらのセルが重複していることになります。
使用上の注意
重複で比較されるGeoRasterオブジェクトは、すべて地理参照されているか、すべて地理参照されていない必要があります。
2つのGeoRasterオブジェクトが重複しているかどうかを決定するため、次のロジックが適用されます。
-
2つのGeoRasterオブジェクトの行または列の次元サイズが異なる場合、
'FALSE'
を戻します。それ以外の場合は、次の手順に進みます。 -
両方のGeoRasterオブジェクトが地理参照されているかどうかをチェックします。
-
一方が地理参照され、他方が地理参照されていない場合、
'FALSE'
を戻します。 -
両方とも地理参照されておらず、両方のGeoRasterオブジェクトの
ultCoordinate
が同じである場合、'TRUE'
を戻しますが、それ以外の場合、'FALSE'
を戻します。 -
両方とも地理参照されている場合、次の手順に進みます。
-
-
p
、q
、r
およびs
多項式のpType
、nVars
、order
およびnCoefficients
の値(「関数フィッティング地理参照モデル」を参照)をチェックします。いずれかが異なる場合、'FALSE'を戻しますが、それ以外の場合、次の手順に進みます。 -
セル空間からモデル空間に対して左上、右上、左下および右下の4つの点を計算します。2つのGeoRasterオブジェクトの対応する点の距離が許容差内である場合(セル空間からモデル空間への変換)、
'TRUE'
を戻しますが、それ以外の場合、'FALSE'
を戻します。
GeoRasterのラスター代数ファンクションでは、異なるGeoRasterオブジェクトのラスター・レイヤーが同じサイズで、相互に完全に重複している必要があります。2つ以上のGeoRasterオブジェクトにラスター代数操作を適用するか、他の操作を実行する前に、SDO_GEOR_RA.isOverlapファンクションを使用して、GeoRasterオブジェクトが同じサイズであり、同じ土地を対象範囲としているかどうかを判別できます。
例
次の例では、2つのGeoRasterオブジェクトが重複しているかどうかをチェックします。(ここでは、2つの異なる構文のファンクションを使用しています。)
DECLARE geor MDSYS.SDO_GEORASTER; geor1 MDSYS.SDO_GEORASTER; BEGIN SELECT georaster INTO geor FROM georaster_table WHERE georid = 1; SELECT georaster INTO geor1 FROM georaster_table WHERE georid = 30; dbms_output.put_line(sdo_geor_ra.isOverlap(geor,geor1,0.5)); END; / DECLARE mycursor sys_refcursor; BEGIN OPEN mycursor FOR SELECT georaster FROM georaster_table WHERE georid = 1 or georid=30; dbms_output.put_line(sdo_geor_ra.isOverlap(mycursor,0.5)); END; /
11.5 SDO_GEOR_RA.over
形式
SDO_GEOR_RA.over( georaster1 IN SDO_GEORASTER, georaster2 IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.over( georaster1 IN SDO_GEORASTER, georaster2 IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, storageParam IN VARCHAR2, 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);
説明
over操作を実行して、新しいGeoRasterオブジェクトを生成します(「使用上の注意」を参照)。
パラメータ
- georaster1
-
最初の入力GeoRasterオブジェクト。
- georaster2
-
2番目の入力GeoRasterオブジェクト。
- cropArea
-
クロッピング領域を定義します。データ型がSDO_GEOMETRYである場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)を矩形クロッピング領域として使用し、出力GeoRasterオブジェクトを生成します。パラメータ
polygonClip
がTRUE
である場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(0)に設定されます。SDO_SRID要件のSDO_GEOR.reprojectの「使用上の注意」も参照してください。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- 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オブジェクトを生成します。特に、出力GeoRasterオブジェクトの各レイヤーの各セルには、値がゼロでない場合に最初の入力GeoRasterオブジェクトの対応するセルの値が含まれます。それ以外の場合、2番目のGeoRasterオブジェクトの対応するセルの値が含まれます。
parallelParam
を指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
詳細は、「論理演算」を参照してください。
例
次の例では、2つの入力GeoRasterオブジェクトのover操作を実行します。
declare geor MDSYS.SDO_GEORASTER; geor1 MDSYS.SDO_GEORASTER; geor2 MDSYS.SDO_GEORASTER; geom mdsys.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; mdsys.sdo_geor_ra.over(geor,geor1,geom,null,geor2); update georaster_table set georaster = geor2 where georid = 102; end; /
11.6 SDO_GEOR_RA.rasterMathOp
形式
SDO_GEOR_RA.rasterMathOp( inGeoRaster IN SDO_GEORASTER, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, 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);
または
SDO_GEOR_RA.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_NUMBER_ARRAY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, 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);
または
SDO_GEOR_RA.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_NUMBER_ARRAY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, storageParam IN VARCHAR2, 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);
または
SDO_GEOR_RA.rasterMathOp( georaster0 IN SDO_GEORASTER, georaster1 IN SDO_GEORASTER, constant IN NUMBER, operator IN PLS_INTEGER, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( georaster0 IN SDO_GEORASTER, georaster1 IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, constant IN NUMBER, operator IN PLS_INTEGER, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.rasterMathOp( georaster0 IN SDO_GEORASTER, georaster1 IN SDO_GEORASTER, cropArea IN SDO_GHEOMETRY, constant IN NUMBER, operator IN PLS_INTEGER, storageParam IN VARCHAR2, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', nodataValue IN NUMBER DEFAULT 0, polygonClip IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
説明
1つ以上のGeoRasterオブジェクトのラスター数学的操作を実行します。
パラメータ
- inGeoRaster
-
入力GeoRasterオブジェクトを指定します。
- georArray
-
GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、
VARRAY(10485760) OF SDO_GEORASTER
として定義されます。 - inGeoRasters
-
入力GeoRasterオブジェクトのカーソル(SYS_REFCURSOR型)を指定します。
- georaster0
-
左側のオペランドを指定します。
- georaster1
-
右側のオペランドを指定します。
- cropArea
-
クロッピング領域を定義します。データ型がSDO_GEOMETRYである場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)を矩形クロッピング領域として使用し、出力GeoRasterオブジェクトを生成します。パラメータ
polygonClip
がTRUE
である場合、クロッピング領域ジオメトリ内のセルのみが処理され、クロッピング領域ジオメトリ外のすべてのセルがゼロ(0)に設定されます。SDO_SRID要件のSDO_GEOR.reprojectの「使用上の注意」も参照してください。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- operation
-
出力GeoRasterオブジェクトのラスター・セル値を計算するために使用される
arithmeticExpr
式文字列の配列を指定します。配列の各要素は、出力GeoRasterオブジェクトのレイヤーに対応します。データ型はSDO_STRING2_ARRAYで、VARRAY(2147483647) OF VARCHAR2(4096)
として定義されます。arithmeticExpr
式の構文については、「ラスター代数言語」を参照してください。 - constant
-
addConst
やdivConstant
などの一部の演算子(operator
パラメータを参照)の定数値を指定します。 - operator
-
SDO_GEOR_RAパッケージに定義されている次の数学演算子のいずれかを指定します。
OPERATOR_ABSOLUTE OPERATOR_ADD OPERATOR_ADDCONST OPERATOR_DIVIDE OPERATOR_DIVIDECONST OPERATOR_EXP OPERATOR_INVERT OPERATOR_LOG OPERATOR_MULTIPLY OPERATOR_MULTIPLYCONST OPERATOR_SUBTRACT OPERATOR_SUBTRACTCONST
これらの演算子の定義については、「使用上の注意」を参照してください。
- storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- bgValues
-
入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
- 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
を指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。
使用上の注意
このプロシージャは、それぞれ3形式の4グループとみなすことができる12個の形式を使用します。
-
単一のGeoRasterオブジェクトの操作
-
GeoRasterオブジェクトの配列の操作
-
カーソルで指定したGeoRasterオブジェクトの操作(SYS_REFCURSOR型)
-
各レイヤーまたは1つ以上のGeoRasterオブジェクトのすべての対応するセルの操作
各グループ内のオプションには、SDO_NUMBER_ARRAY型またはSDO_GEOMETRY型のクロッピング領域の指定(SDO_GEOMETRYのクロッピング領域の場合、クロッピング領域のジオメトリ・オブジェクトまたはそのオブジェクトのMBRを使用するかどうか)が含まれます。
最初の3つのグループの構文を使用して、operation
パラメータに基づいて、1つ以上の入力GeoRasterオブジェクトのレイヤーから新しいGeoRasterオブジェクトを生成します。たとえば、次の例では、3つのレイヤーを持つ新しいGeoRasterオブジェクトを生成します(各レイヤーの値は、入力GeoRasterオブジェクトのセル値から10を引いた値になります)。
sdo_geor_ra.rasterMathOp(geor,SDO_STRING2_ARRAY('{0,0}-10','{0,1}-10','{0,2}-10'),null,geor1);
4番目のグループの構文では、入力GeoRasterオブジェクトの各レイヤーの対応するすべてのセルに対して数学的操作を適用し、最初の入力GeoRasterオブジェクト(geoRaster0
)と同じ次元サイズで新しいGeoRasterオブジェクトを生成します。2つの入力GeoRasterオブジェクトの行、列およびバンドの次元サイズは、同じである必要があります。
4番目のグループの構文では、すべてのピラミッドが結果のGeoRasterオブジェクトで削除されますが、最初の入力GeoRasterオブジェクトのマスクは結果のGeoRasterオブジェクトで維持されます。
operator
パラメータでは、演算子は次の定義を持ちます。
OPERATOR_ABSOLUTE : if (src[x][y][b] < 0) { dst[x][y][b] = -src[x][y][b]; } else { dst[x][y][b] = src[x][y][b]; } OPERATOR_ADD dst[x][y][b]=src1[x][y][b]+src2[x][y][b] OPERATOR_ADDCONST dst[x][y][b]=src[x][y][b] +constant --constant is the third parameter OPERATOR_DIVIDE dst[x][y][b]=src1[x][y][b]/src2[x][y][b] OPERATOR_DIVIDECONST dst[x][y][b]=src[x][y][b]/constant --constant is the third parameter OPERATOR_EXP dst[x][y][b]=exp(src[x][y][b]) OPERATOR_INVERT : Inverts the cell values: dst[x][y][b]=-src[x][y][b] OPERATOR_LOG : dst[x][y][b]=log(src[x][y][b]) OPERATOR_MULTIPLY dst[x][y][b]=src1[x][y][b]*src2[x][y][b] OPERATOR_MULTIPLYCONST dst[x][y][b]=src[x][y][b]*constant --constant is the third parameter OPERATOR_SUBTRACT dst[x][y][b]=src1[x][y][b]-src2[x][y][b] OPERATOR_SUBTRACTCONST dst[x][y][b]=src[x][y][b]-constant --constant is the third parameter
ラスター代数言語の詳細は、「ラスター代数言語」を参照してください。
parallelParam
を指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
例
次の例では、入力GeoRasterオブジェクトのすべてのセル値に定数10を追加します。
DECLARE geor SDO_GEORASTER; geor1 SDO_GEORASTER; BEGIN select georaster into geor from georaster_table where georid = 1; insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1; sdo_geor_ra.rasterMathOp(geor,null,10,sdo_geor_ra.OPERATOR_ADDCONST,null,geor1); update georaster_table set georaster = geor1 where georid = 5; commit; END; /
次の例では、入力GeoRasterオブジェクトの3つのレイヤーから新しい3レイヤーのGeoRasterオブジェクトを生成します(新しいGeoRasterオブジェクトの各セル値は、対応する古いセル値を2で割った値になります)。
DECLARE geor SDO_GEORASTER; geor1 SDO_GEORASTER; geo_array SDO_GEORASTER_ARRAY; BEGIN select georaster into geor from georaster_table where georid = 2; insert into georaster_table values (20, sdo_geor.init('rdt_1', 20)) returning georaster into geor1; geo_array:=SDO_GEORASTER_ARRAY(geor); sdo_geor_ra.rasterMathOp(geo_array,SDO_STRING2_ARRAY('{0,0}/2','{0,1}/2','{0,2}/2'),null,geor1); update georaster_table set georaster = geor1 where georid = 20; commit; END; /
次の例では、クロッピング領域としてジオメトリ・オブジェクトを使用したラスター数学的操作を実行します。
DECLARE geor SDO_GEORASTER; geor1 SDO_GEORASTER; geom SDO_GEOMETRY; geo_array SDO_GEORASTER_ARRAY; BEGIN geom:= sdo_geometry(2003,82394, NULL, sdo_elem_info_array(1, 1003, 1), sdo_ordinate_array(21783.775, 1008687.9, 18783.775, 966687.905, 63783.775, 966687.905, 81783.775, 990687.905, 21783.775, 1008687.9)); select georaster into geor from georaster_table where georid = 100; select georaster into geor1 from georaster_table where georid = 101 for update; geo_array:=SDO_GEORASTER_ARRAY(geor); mdsys.sdo_geor_ra.rasterMathOp(geo_array,geom,SDO_STRING2_ARRAY('{0,0}/2','{0,1}/2','{0,2}/2'),null,geor1); update georaster_table set georaster = geor1 where georid = 101; commit; END; /
11.7 SDO_GEOR_RA.rasterUpdate
形式
SDO_GEOR_RA.rasterUpdate( geoRaster IN OUT SDO_GEORASTER, pyramidLevel IN NUMBER, conditions IN SDO_STRING2_ARRAY, vals IN SDO_STRING2_ARRAYSET, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.rasterUpdate( geoRaster IN OUT SDO_GEORASTER, pyramidLevel IN NUMBER, targetArea IN SDO_NUMBER_ARRAY, conditions IN SDO_STRING2_ARRAY, vals IN SDO_STRING2_ARRAYSET, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR_RA.rasterUpdate( geoRaster IN OUT SDO_GEORASTER, pyramidLevel IN NUMBER, targetArea IN SDO_GEOMETRY, conditions IN SDO_STRING2_ARRAY, vals IN SDO_STRING2_ARRAYSET, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT 'FALSE', polygonClip IN VARCHAR2 DEFAULT 'FALSE', parallelParam IN VARCHAR2 DEFAULT NULL);
説明
vals
の指定から計算された値を使用して、conditions
の指定がTRUEのすべてのセルを更新します。
パラメータ
- geoRaster
-
入力および出力で使用されるGeoRasterオブジェクトを指定します(更新は指定した条件に基づきます)。
- pyramidLevel
-
更新するピラミッド・レベルを指定します。このパラメータがNULLの場合、すべてのピラミッド・レベルが更新されます。
- targetArea
-
ターゲット領域の定義です。データ型がSDO_GEOMETRYであり、パラメータ
polygonClip
がTRUE
である場合、ターゲット領域ジオメトリ内のセルのみが更新され、ターゲット領域ジオメトリ外のすべてのセルは元の値を保持しますが、パラメータpolygonClip
がFALSE
である場合はターゲット領域ジオメトリのMBRのすべてのセルが更新されます。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。
- conditions
-
セルを選択するために使用する
booleanExpr
式文字列の配列を指定します。(詳細は、「使用上の注意」を参照してください。)データ型はSDO_STRING2_ARRAYで、VARRAY(2147483647) OF VARCHAR2(4096)
として定義されます。 - vals
-
各条件に対応する外部配列と各レイヤーに対応する内部配列を持つ
arithmeticExpr
式の1つ以上の配列を指定します。データ型はSDO_STRING2_ARRAYSETで、VARRAY(2147483647) OF SDO_STRING2_ARRAY
として定義されます。 - bgValues
-
入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
- nodata
-
文字列
TRUE
では、GeoRasterオブジェクトのNODATAセルを更新しないように指定します。文字列FALSE
(デフォルト)では、NODATA値を含むセルが通常のセルとみなされるため、更新対象になります。NODATA値および値の範囲の詳細は、「NODATA値および値の範囲」を参照してください。 - polygonClip
-
targetArea
がNULLの場合は無視されます。それ以外の場合、文字列TRUE
では、targetArea
ジオメトリ値がラスター・セル値の更新で使用されますが、文字列FALSE
またはNULL値では、targetArea
ジオメトリのMBRがラスター・セル値の更新で使用されます。 - parallelParam
-
操作の並列度を指定します。指定する場合、
parallel=
nという形式である必要があります(nは1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。(詳細は、「GeoRasterでのパラレル処理」を参照してください。)parallelParam
を指定すると、このプロシージャの結果をロールバックできません(「使用上の注意」を参照)。
使用上の注意
このプロシージャは、入力されたGeoRasterオブジェクトのデータを上書きするため、元のGeoRasterオブジェクトをコピーし、そのコピーしたオブジェクトに対してこのプロシージャを使用してください。このプロシージャの結果を確認してから、必要に応じて元のGeoRasterオブジェクトを廃棄します。
このプロシージャでは、conditions
パラメータに指定されたbooleanExpr
文字列に基づいて、指定されたGeoRasterオブジェクトからセルを選択し、vals
パラメータに指定されたarithmeticExpr式文字列を計算して対応するセル値を更新します。次に例を示します。
conditions = SDO_STRING2_ARRAY('{0}=48','{0}=108') vals = SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123'))
次に:
-
1番目のレイヤーの値が48に等しいすべてのセルで、その1番目、2番目、3番目のレイヤーの値がそれぞれ123、54、89に設定されます。
-
1番目のレイヤーの値が108に等しいすべてのセルで、その1番目、2番目、3番目のレイヤーの値がそれぞれ98、56、123に設定されます。
詳細は、「ラスター代数言語」を参照してください。
parallelParam
を指定すると、プロシージャのいくつかの実行単位は、自律型トランザクションとして実行され、プロシージャの実行中に一部の変更はコミットされるため、それらの変更はロールバックできません。このパラメータを指定しない場合、すべての変更をロールバックできます。
例
次の例では、vals
の指定から計算された値を使用して、conditions
の指定がTRUEのすべてのセルを更新します。
DECLARE geor SDO_GEORASTER; BEGIN select georaster into geor from georaster_table where georid = 1; sdo_geor_ra.rasterUpdate(geor,0,SDO_STRING2_ARRAY('(abs({0}-{1})=48)&({2}-{1}=-101)','2*{0}-{1}/3=108'),SDO_STRING2_ARRAYSET(SDO_STRING2_ARRAY('123','54','89'),SDO_STRING2_ARRAY('98','56','123'))); END; /
11.8 SDO_GEOR_RA.stack
形式
SDO_GEOR_RA.stack( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_NUMBER_ARRAY, layerList IN SDO_NUMBER_ARRAY, method IN VARCHARs, storageParam IN VARCHAR2, 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 VARCHARs, storageParam IN VARCHAR2, 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);
説明
セル値が入力GeoRaster配列のレイヤーのリストのローカル統計値である単一レイヤーGeoRasterオブジェクトを生成します。入力レイヤーはlayerList
パラメータで指定され、統計メソッドはmethod
パラメータで指定されます。
パラメータ
- georArray
-
GeoRasterオブジェクトの配列を指定します。データ型はSDO_GEOR_ARRAYで、
VARRAY(10485760) OF SDO_GEORASTER
として定義されます。 - 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番目のバンド
-
- method
-
戻す必要があるローカル統計値を指定する文字列。次の値のいずれか(
max
、min
、median
、mean
、std
、sum
、minority
、majority
、diversity
)を指定する必要があります。 - storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
出力GeoRasterオブジェクトを指定します。
- nodata
-
文字列
TRUE
では、入力GeoRasterオブジェクトの任意の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操作を実行します。
DECLARE geor MDSYS.SDO_GEORASTER; geor1 MDSYS.SDO_GEORASTER; geor2 MDSYS.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; mdsys.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; /