12.6 SDO_GEOR_RA.rasterMathOp
形式
単一のGeoRasterオブジェクトの操作
SDO_GEOR_RA.rasterMathOp( inGeoRaster IN SDO_GEORASTER, operation IN SDO_STRING2_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.rasterMathOp( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, operation IN SDO_STRING2_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.rasterMathOp( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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);
または
SDO_GEOR_RA.rasterMathOp( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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.rasterMathOp( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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’);
GeoRasterオブジェクトの配列の操作
SDO_GEOR_RA.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, operation IN SDO_STRING2_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.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_NUMBER_ARRAY, operation IN SDO_STRING2_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.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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);
または
SDO_GEOR_RA.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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.rasterMathOp( georArray IN SDO_GEORASTER_ARRAY, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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’);
カーソルで指定したGeoRasterオブジェクトの操作
SDO_GEOR_RA.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, operation IN SDO_STRING2_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.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_NUMBER_ARRAY, operation IN SDO_STRING2_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.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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);
または
SDO_GEOR_RA.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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.rasterMathOp( inGeoRasters IN SYS_REFCURSOR, cropArea IN SDO_GEOMETRY, operation IN SDO_STRING2_ARRAY, 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’);
各レイヤーのすべての対応するセルの操作
SDO_GEOR_RA.rasterMathOp( georaster0 IN SDO_GEORASTER, georaster1 IN SDO_GEORASTER, constant IN NUMBER, operator IN PLS_INTEGER, storageParam IN VARCHAR2 DEFAULT NULL, 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 DEFAULT NULL, 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 DEFAULT NULL, 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);
または
SDO_GEOR_RA.rasterMathOp( georaster0 IN SDO_GEORASTER, georaster1 IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, constant IN NUMBER, operator IN PLS_INTEGER, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT BLOB, outArea OUT SDO_GEOMETRY, outWindow OUT SDO_NUMBER_ARRAY, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT ‘FALSE’, nodataValue IN NUMBER default 0;
SDO_GEOR_RA.rasterMathOp( georaster0 IN SDO_GEORASTER, georaster1 IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, constant IN NUMBER, operator IN PLS_INTEGER, storageParam IN VARCHAR2 DEFAULT NULL, rasterBlob IN OUT BLOB, outArea OUT SDO_GEOMETRY, outWindow OUT SDO_NUMBER_ARRAY, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, nodata IN VARCHAR2 DEFAULT ‘FALSE’, nodataValue IN NUMBER default 0, polygonClip IN VARCHAR2 DEFAULT ‘FALSE’);
説明
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オブジェクトを指定します。
- rasterBlob
-
処理結果の出力を保持するBLOB。処理の前に、存在しているか、または初期化されている必要があります。
- outArea
-
結果のオブジェクトのモデル座標系の最小境界矩形(MBR)を含むSDO_GEOMETRYオブジェクトを指定します。
- outWindow
-
セル空間内で出力ウィンドウの左上角および右下角の座標を指定するSDO_NUMBER_ARRAYオブジェクトを指定します。
- bgValues
-
入力GeoRasterオブジェクトの空のラスター・ブロックでセルの値を表す背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
- nodata
-
文字列
TRUE
は、数学的操作のオペランドにNODATA値がある場合、操作結果が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
を指定すると、このプロシージャの結果をロールバックできません(「使用上のノート」を参照)。
使用上のノート
このプロシージャは、それぞれ5形式の4グループとみなすことができる20個の形式を使用します。
- 単一のGeoRasterオブジェクトの操作
- GeoRasterオブジェクトの配列の操作
- カーソルで指定したGeoRasterオブジェクトの操作(SYS_REFCURSOR型)
- 各レイヤーまたは1つ以上のGeoRasterオブジェクトのすべての対応するセルの操作
各グループ内のオプションには、SDO_NUMBER_ARRAY型またはSDO_GEOMETRY型のクロッピング領域の指定(SDO_GEOMETRYのクロッピング領域の場合、クロッピング領域のジオメトリ・オブジェクトまたはそのオブジェクトのMBRを使用するかどうか)が含まれます。出力ラスターはGeoRasterオブジェクトまたは単一のBLOBに配置できます。
最初の3つのグループの構文を使用して、operation
パラメータに基づいて、1つ以上の入力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オブジェクトのマスクは結果のGeoRasterオブジェクトでは維持されます。出力ラスターがBLOBにある場合、すべてのピラミッドとマスクは出力から削除されます。
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を追加します。出力はGeoRasterオブジェクトです。
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オブジェクトのすべてのセル値に定数10を追加します。出力はBLOBです。
DECLARE geor SDO_GEORASTER; out_lob BLOB; outArea sdo_geometry; outWindow sdo_number_array; BEGIN select georaster into geor from georaster_table where georid = 1; dbms_lob.create_temporary(out_lob, TRUE); sdo_geor_ra.rasterMathOp(geor,null,10,sdo_geor_ra.OPERATOR_ADDCONST,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; /
次の例では、入力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; /
関連項目:
- ラスター論理操作の適用例は、「論理演算」
- セル・データのスケール変更およびオフセット設定操作の実行例は、「ラスター・データのスケール変更およびオフセット設定」
- キャスト操作を使用した、あるデータ型から別のデータ型へのセル値のマッピングについては、例5-23
- 複雑な地図的モデリングの実行については、例5-24
親トピック: SDO_GEOR_RAパッケージのリファレンス