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_intersectionTRUEに設定する必要があります。

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_intersectionTRUEの場合、境界四角形はジオメトリ境界にクリップされます。
SDO_UTIL.TILE_GEOMETRYファンクションで使用されるパラメータx_axis_minx_axis_maxy_axis_minおよびy_axis_maxは、四角形処理ドメインを表します。四角形処理ドメインは、四角形に必要なすべてのジオメトリが含まれるエクステントです。たとえば、経度/緯度ジオメトリの場合、次のパラメータ値を使用して四角形処理ドメインを指定できます。
  • x_axis_min: -180
  • x_axis_max: 180
  • y_axis_min: -90
  • y_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を参照してください。

    ただし、四角形を生成する場合、小さい方の四角形は大きい方の四角形に完全に含まれます。また、異なる解像度で生成された四角形は(大きくても小さくても)常に整列されます。

次の各例では、ラスターのセルと同じ空間を占める四角形でジオメトリを四角形処理します。また、ラスターのエクステントは投影される(経度、緯度ではない)ため、ドメインのエクステントはラスターのエクステントに設定されます。各例のパラメータ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;

次の図に、結果の出力を示します。

図35-2 tile_resolutionと同じ四角形のサイズ

図35-2の説明が続きます
「図35-2 tile_resolutionと同じ四角形のサイズ」の説明

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

次の図に、結果の出力を示します。

図35-3 tile_resolutionより小さい四角形のサイズ

図35-3の説明が続きます
「図35-3 tile_resolutionより小さい四角形のサイズ」の説明

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

次の図に、結果の出力を示します。

図35-4 tile_resolutionより大きい四角形のサイズ

図35-4の説明が続きます
「図35-4 tile_resolutionより大きい四角形のサイズ」の説明