7.155 SDO_GEOR.subset
形式
SDO_GEOR.subset( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_GEOMETRY, layerNumbers IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, polygonClip IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR.subset( inGeoRaster IN SDO_GEORASTER, pyramidLevel IN NUMBER, cropArea IN SDO_GEOMETRY, layerNumbers IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL, polygonClip IN VARCHAR2 DEFAULT NULL);
または
SDO_GEOR.subset( inGeoRaster IN SDO_GEORASTER, cropArea IN SDO_NUMBER_ARRAY, bandNumbers IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
または
SDO_GEOR.subset( inGeoRaster IN SDO_GEORASTER, pyramidLevel IN NUMBER, cropArea IN SDO_NUMBER_ARRAY, bandNumbers IN VARCHAR2, storageParam IN VARCHAR2 DEFAULT NULL, outGeoRaster IN OUT SDO_GEORASTER, bgValues IN SDO_NUMBER_ARRAY DEFAULT NULL);
説明
(1)空間のクロッピング、切取りまたはクリップ、(2)レイヤーまたはバンドのサブセット化または複製のうち、いずれか(あるいは両方)の処理を実行します。
パラメータ
- inGeoRaster
-
処理を実行するSDO_GEORASTERオブジェクトを指定します。
- pyramidLevel
-
ソースGeoRasterオブジェクトのピラミッド・レベルを示す番号を指定します。
- cropArea
-
クロッピング領域を定義します。データ型がSDO_NUMBER_ARRAYの場合、このパラメータで矩形ウィンドウの左上の座標(行,列)と右下の座標(行,列)を指定することによって、ラスター空間が想定されます。データ型がSDO_GEOMETRYの場合、ジオメトリ・オブジェクトの最小境界矩形(MBR)がクロッピング領域として使用されます(SDO_SRID要件の「使用上のノート」も参照してください)。
cropArea
がSDO_GEOMETRY型の場合は、layerNumbers
パラメータを使用して1つ以上のレイヤー番号を指定します。cropArea
がSDO_NUMBER_ARRAY型の場合は、bandNumbers
パラメータを使用して、1つ以上のバンド番号を指定します。 - layerNumbers
-
処理を実行する論理レイヤー番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、
2-4
はレイヤー2、3および4を示します)。 - bandNumbers
-
処理を実行する物理バンド番号を示す文字列を指定します。カンマで値を区切り、ハイフンで範囲を指定します(たとえば、
1-3
はバンド1、2および3を示します)。 - storageParam
-
記憶域パラメータを示す文字列を指定します(「記憶域パラメータ」を参照)。
- outGeoRaster
-
新しいSDO_GEORASTERオブジェクトを指定します。既存の有効なGeoRasterオブジェクトまたは空のGeoRasterオブジェクトのいずれかであることが必要です。(空のGeoRasterオブジェクトの詳細は、「空白のGeoRasterオブジェクトと空のGeoRasterオブジェクト」を参照してください)。
inGeoRaster
と同じGeoRasterオブジェクトは指定できません。 - bgValues
-
部分的に空のラスター・ブロックに入力する背景値を指定します。この値が有効なのは、ソースGeoRasterオブジェクトに空のラスター・ブロックが含まれており、現行の処理によって部分的に空のラスター・ブロック(「空のラスター・ブロック」を参照)が生成される場合のみです。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのバンドに同じ入力値を使用)またはバンド次元のサイズ(各バンドにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、
SDO_NUMBER_ARRAY(1,5,10)
では、1番目のバンドに1、2番目のバンドに5、3番目のバンドに10が入力されます。デフォルトのbgValues
は0 (ゼロ)です。入力値は、スパース・データへの入力用としてターゲットのセル深度の背景値で指定された有効なセル値であることが必要です。
- polygonClip
-
文字列
TRUE
では、サブセット操作にクリップ・ウィンドウ(cropArea
ジオメトリ・オブジェクト)が使用され、文字列FALSE
またはNULL値では、サブセット操作にクリップ・ウィンドウのMBR (最小境界矩形)が使用されます。
使用上のノート
このプロシージャには、様々な用途があります。たとえば、このプロシージャをコールしてGeoRasterオブジェクトの一部の領域をクロッピングしたり、いくつかのレイヤーのサブセットを取得すること、レイヤーを複製すること、および結果のオブジェクトの記憶域パラメータ(ブロック、インターリーブなど)を指定することもできます。
pyramidLevel
パラメータを含む構文を使用して0 (ゼロ)より大きい値を指定した場合、ソースGeoRasterオブジェクトの指定したピラミッド・レベルに基づいてクロッピングが行われます。それ以外の場合は、元のソースGeoRasterオブジェクト(pyramidLevel
= 0)に基づいてクロッピングが行われます。
ソースGeoRasterオブジェクトが地理参照されており、pyramidLevel
パラメータ値が0 (ゼロ)より大きい場合、変換後のGeoRasterオブジェクトに地理参照情報が生成されるのは、有効な多項式変換で地理参照されている場合のみです。
この処理では、入力されるGeoRasterオブジェクトの上位レベルのピラミッド・データは考慮されず、出力されるGeoRasterオブジェクトにはピラミッド・データは含まれません。
cropArea
パラメータのデータ型がSDO_GEOMETRYの場合、SDO_SRID値は次のいずれかの値である必要があります。
-
NULL(ラスター空間を指定)
-
MDSYS.CS_SRS表のSRID列の値
cropArea
パラメータ・ジオメトリとモデル空間のSDO_SRID値が異なる場合は、処理が実行される前に、window
パラメータ・ジオメトリは自動的にモデル空間の座標系に変換されます。(ラスター空間およびモデル空間の詳細は、「GeoRasterデータ・モデル」を参照してください。)
cropArea
パラメータで測地MBRを指定する場合、日付変更線をまたぐMBRは指定できません。測地MBRについては、『Oracle Spatial開発者ガイド』を参照してください。
クリップ・ウィンドウ・ジオメトリ・オブジェクト自体を使用してGeoRasterオブジェクトをサブセット化するには、ジオメトリ・オブジェクトが2nn3または2nn7という形式のSDO_GTYPE値を持つ有効な2次元ポリゴン・ジオメトリ(単純または複数のポリゴン)である必要があります。他のSDO_GTYPE値には、polygonClip
パラメータの値にかかわらず、ジオメトリ・オブジェクトのMBRが使用されます。(SDO_GTYPE値の詳細は、『Oracle Spatial開発者ガイド』を参照してください。)
クリップ・ウィンドウ・ジオメトリ・オブジェクト自体がサブセット・プロセスに適用される場合、ポリゴン内またはポリゴンのエッジに接しているすべてのセルが戻されますが、ジオメトリ・オブジェクトのMBR内の他のセルはクリップされます(指定した、またはデフォルトのbgValues
パラメータ値が入力されます)。
polygonClip
がTRUE
で、このプロシージャによって矩形イメージのサブセットが作成されるが、ジオメトリは矩形ではない場合、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションでinWindow
ジオメトリ・オブジェクトの妥当性を確認してください。無効なジオメトリに対しては、このプロシージャは、polygonClip
値がFALSE
またはNULL値の場合のように動作します。
inGeoRaster
とoutGeoRaster
には異なるGeoRasterオブジェクトを指定する必要があります。
処理対象として指定したウィンドウとソースGeoRasterオブジェクトの空間エクステントが重複する部分のみがコピーされます。
出力GeoRasterオブジェクトを異なる座標系に再投影する場合、SDO_GEOR.rectifyまたはSDO_GEOR.reprojectプロシージャを使用します。
次の1つ以上の条件に該当する場合、例外が発生します。
-
inGeoRaster
が無効である。 -
outGeoRaster
が初期化されていない。 -
outGeoRaster
に対するラスター・データ表が存在せず、outGeoRaster
が空白のGeoRasterオブジェクトではない。 -
処理対象として指定したウィンドウが、GeoRasterオブジェクトの空間エクステントの外にある。
例
次の例では、元のGeoRasterオブジェクトの指定したウィンドウの特定のバンドのみが含まれるGeoRasterオブジェクトを作成します。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE gr1 sdo_georaster; gr2 sdo_georaster; BEGIN INSERT INTO georaster_table (georid, georaster) VALUES (41, sdo_geor.init('RDT_1')) RETURNING georaster INTO gr2; SELECT georaster INTO gr1 FROM georaster_table WHERE georid=4; sdo_geor.subset(gr1, sdo_geometry(2003, NULL, NULL, sdo_elem_info_array(1, 1003, 3), sdo_ordinate_array(0,256,255,511)), '3,1-2', null, gr2); UPDATE georaster_table SET georaster=gr2 WHERE georid=41; COMMIT; END; /
次の例は、ポリゴンを使用してGeoRasterオブジェクトをサブセット化する際にクリップを実行する方法を示しています。(GEORASTER_TABLEという名前の表を参照します。この表の定義は「記憶域パラメータ」の例1-1の次に説明されています。)
DECLARE
gr sdo_georaster;
grsub sdo_georaster;
win1 sdo_geometry;
BEGIN
Delete from georaster_table where georid = 111;
INSERT INTO georaster_table VALUES (111, 'ClippedImage',
sdo_geor.init('georaster_RDT', 111))
RETURNING georaster INTO grsub;
SELECT georaster INTO gr FROM georaster_table WHERE georid=1;
win1 := sdo_geometry(2003, 26986, null, sdo_elem_info_array(1,1003,1),
sdo_ordinate_array(237040, 897924,
237013.3, 897831.6,
237129, 897840,
237182.5, 897785.5,
237239.9, 897902.7,
237223, 897954,
237133, 897899,
237040, 897924));
sdo_geor.subset(gr, 0, win1, '1-3',
'interleaving = BIL, compression=DEFLATE',
grsub, NULL, 'TRUE');
UPDATE georaster_table SET georaster=grsub WHERE georid=111;
COMMIT;
END;
/
親トピック: SDO_GEORパッケージのリファレンス