35.75 SDO_UTIL.TILE_GEOMETRY
書式
SDO_UTIL.TILE_GEOMETRY(
geom IN SDO_GEOMETRY,
x_axis_min IN NUMBER,
x_axis_max IN NUMBER,
y_axis_min IN NUMBER,
y_axis_max IN NUMBER,
tile_resolution IN NUMBER,
resolution_factor IN NUMBER := 0,
perform_intersection IN VARCHAR2 := 'TRUE',
compute_percent IN VARCHAR2 := 'FALSE',
geodetic_tolerance IN NUMBER := .05)
RETURN mdsys.tile_geom_table_type DETERMINISTIC
PIPELINED PARALLEL_ENABLE;説明
指定された四角形解像度と解像度係数に基づいてジオメトリを四角形処理します。MDSYS.TILE_GEOM_TYPEオブジェクトの表であるMDSYS.TILE_GEOM_TABLE_TYPEを戻します。
パラメータ
- geom
-
四角形処理するジオメトリ。
- x_axis_min
-
四角形処理ドメインのX軸上の最小値。(詳細は、「使用上のノート」を参照してください。)
- x_axis_max
-
四角形処理ドメインのX軸上の最大値。(詳細は、「使用上のノート」を参照してください。)
- y_axis_min
-
四角形処理ドメインのY軸上の最小値。(詳細は、「使用上のノート」を参照してください。)
- y_axis_max
-
四角形処理ドメインのY軸上の最大値。(詳細は、「使用上のノート」を参照してください。)
- tile_resolution
-
四角形のサイズ値。(詳細は、「使用上のノート」を参照してください。)
- resolution_factor
-
tile_resolutionパラメータに適用される値係数。デフォルト値は0です。(詳細は、「使用上のノート」を参照してください。)
- perform_intersection
-
文字列値
TRUE(デフォルト)は、境界の四角形をジオメトリ境界にクリップします。文字列値
FALSEは、ジオメトリ境界に沿って最大の四角形を戻します。 - compute_percent
-
デフォルトの文字列値は
FALSEです。文字列値
TRUEは、0から1までの値を計算します。この値を計算するには、perform_intersectionもTRUEに設定する必要があります。 - geodetic_tolerance
-
デフォルトは
0.05です。このパラメータは、四角形に対するジオメトリが経度/緯度の場合にのみ使用されます。デフォルト値は、0.05より小さい値でオーバーライドできます。
使用上のノート
SDO_UTIL.TILE_GEOMETRYファンクションを使用すると、次の処理ができます。
- 農地や土地区画などのジオメトリの四角形処理
- ラスターのセルと同じ空間を占める四角形によるジオメトリの四角形処理。
ラスター・セル・サイズの四角形には、ラスターのエクステントを四角形処理ドメインとして使用し、
tile_resolutionをラスター解像度に設定します。
このファンクションは、次のように定義されるMDSYS.TILE_GEOM_TABLE_TYPEタイプの表を戻します。
CREATE OR REPLACE TYPE mdsys.tile_geom_table_type AS TABLE OF tile_geom_type;
前述のコードで使用されたオブジェクト・タイプMDSYS.TILE_GEOM_TYPEは、次のように定義されます。
CREATE OR REPLACE TYPE mdsys.tile_geom_type AS OBJECT (
tile_id NUMBER,
status CHAR,
percent NUMBER,
tile_center SDO_GEOMETRY,
geom SDO_GEOMETRY);
MDSYS.TILE_GEOM_TYPEの定義に使用されるパラメータは次のとおりです。
tile_id: 1から始まる、各四角形に割り当てられる一意の番号。status: 値は次のいずれかです。'I': 内側の四角形'B': ジオメトリの境界四角形
percent: ジオメトリ領域と同じ空間を占める四角形領域の割合。0から1までの値。内側の四角形は常に1を戻します。tile_center: 四角形の中心点。geom: ジオメトリ四角形。パラメータperform_intersectionがTRUEの場合、境界四角形はジオメトリ境界にクリップされます。
SDO_UTIL.TILE_GEOMETRYファンクションで使用されるパラメータx_axis_min、x_axis_max、y_axis_minおよびy_axis_maxは、四角形処理ドメインを表します。四角形処理ドメインは、四角形に必要なすべてのジオメトリが含まれるエクステントです。たとえば、経度/緯度ジオメトリの場合、次のパラメータ値を使用して四角形処理ドメインを指定できます。
x_axis_min:-180x_axis_max:180y_axis_min:-90y_axis_max:90
tile_resolutionおよびresolution_factorパラメータは、次で強調されているように四角形のサイズに影響します。
- 目的の四角形のサイズ値は、
tile_resolutionパラメータによって決まります。たとえば、値5の場合、四角形は5x5になるか、パラメータresolution_factorが0でない場合は、5x5の倍数になります。 resolution_factorは、指定された場合、tile_resolutionパラメータに係数を適用し、tile_resolutionよりも小さいまたは大きい四角形でジオメトリを四角形処理します。次の表では、
resolution_factor値によって決定される四角形のサイズについて説明します。解像度係数値 四角形のサイズ 0 (デフォルト) 係数は適用されません。四角形のサイズは、 tile_resolutionパラメータによって決定されます。詳細は、例-1を参照してください。
> 0 生成される四角形は、 tile_resolutionパラメータに対して倍数分小さくなります。たとえば、次のresolution_factor値の場合:- 1: 四角形のサイズは
tile_resolutionの1/4倍に小さくなります - 2: 四角形のサイズは
tile_resolutionの1/16倍に小さくなります - 3: 四角形のサイズは
tile_resolutionの1/64倍に小さくなります
詳細は、例-2を参照してください。
< 0 生成される四角形は、 tile_resolutionパラメータに対して倍数分大きくなります。たとえば、次のresolution_factor値の場合:- -1: 四角形のサイズは
tile_resolutionの4倍に大きくなります - -2: 四角形のサイズは
tile_resolutionの16倍に大きくなります - -3: 四角形のサイズは
tile_resolutionの64倍に大きくなります
詳細は、例-3を参照してください。
ただし、四角形を生成する場合、小さい方の四角形は大きい方の四角形に完全に含まれます。また、異なる解像度で生成された四角形は(大きくても小さくても)常に整列されます。
- 1: 四角形のサイズは
例
次の各例では、ラスターのセルと同じ空間を占める四角形でジオメトリを四角形処理します。また、ラスターのエクステントは投影される(経度、緯度ではない)ため、ドメインのエクステントはラスターのエクステントに設定されます。各例のパラメータperform_intersection => 'TRUE'により、境界四角形は農場の境界にクリップされます。
例1
この例では、ラスター・セルのサイズに等しい四角形で農場ジオメトリを四角形処理します。ラスターの解像度が1000であるため、四角形は1000x1000になります。
WITH
part0 AS (SELECT b.tile_id,
b.status,
b.percent,
b.tile_center,
b.geom
FROM farm_plots a,
TABLE (sdo_util.tile_geometry(geom => a.geom,
x_axis_min => 272039.5,
x_axis_max => 275188.5,
y_axis_min => 370575.5,
y_axis_max => 380165.5,
tile_resolution => 1000,
resolution_factor => 0,
perform_intersection => 'TRUE',
compute_percent => 'TRUE',
geodetic_tolerance => NULL)) b
WHERE a.id = -1)
SELECT tile_id, geom FROM part0 ORDER BY tile_id;
次の図に、結果の出力を示します。
例2
次の例では、resolution_factor => 1が指定されているため、1000 x 1000の1/4倍に小さくなった四角形で農場ジオメトリを四角形処理します。
WITH
part0 AS (SELECT b.tile_id,
b.status,
b.percent,
b.tile_center,
b.geom
FROM farm_plots a,
TABLE (sdo_util.tile_geometry(geom => a.geom,
x_axis_min => 272039.5,
x_axis_max => 275188.5,
y_axis_min => 370575.5,
y_axis_max => 380165.5,
tile_resolution => 1000,
resolution_factor => 1,
perform_intersection => 'TRUE',
compute_percent => 'TRUE',
geodetic_tolerance => NULL)) b
WHERE a.id = -1)
SELECT tile_id, geom FROM part0 ORDER BY tile_id;
次の図に、結果の出力を示します。
例3
次の例では、resolution_factor => -1が指定されているため、1000 x 1000の4倍に大きくなった四角形で農場ジオメトリを四角形処理します。
WITH
part0 AS (SELECT b.tile_id,
b.status,
b.percent,
b.tile_center,
b.geom
FROM farm_plots a,
TABLE (sdo_util.tile_geometry(geom => a.geom,
x_axis_min => 272039.5,
x_axis_max => 275188.5,
y_axis_min => 370575.5,
y_axis_max => 380165.5,
tile_resolution => 1000,
resolution_factor => -1,
perform_intersection => 'TRUE',
compute_percent => 'TRUE',
geodetic_tolerance => NULL)) b
WHERE a.id = -1)
SELECT tile_id, geom FROM part0 ORDER BY tile_id;
次の図に、結果の出力を示します。
親トピック: SDO_UTILパッケージ(ユーティリティ)


