31 SDO_SAMパッケージ(空間分析およびマイニング)

MDSYS.SDO_SAMパッケージには、空間分析およびデータ・マイニングのサブプログラムが含まれています。

この章で説明するサブプログラムを使用する場合は、空間分析およびデータ・マイニングの概念を理解しておく必要があります(「空間分析およびマイニング」を参照)。

ノート:

SDO_SAMサブプログラムは2次元ジオメトリでのみサポートされています。これらは3次元ジオメトリではサポートされていません。

この章では、空間分析およびマイニングのサブプログラムのリファレンス情報をアルファベット順に説明します。

31.1 SDO_SAM.AGGREGATES_FOR_GEOMETRY

構文

SDO_SAM.AGGREGATES_FOR_GEOMETRY(
     theme_name       IN VARCHAR2, 
     theme_colname    IN VARCHAR2, 
     aggr_type_string IN VARCHAR2, 
     aggr_col_string  IN VARCHAR2, 
     geom             IN SDO_GEOMETRY, 
     dst_spec         IN VARCHAR2 DEFAULT NULL 
     ) RETURN NUMBER;

説明

ジオメトリのテーマ集計を行います。

パラメータ

theme_name

テーマ表の名前を指定します。

theme_colname

theme_nameのジオメトリ列の名前を指定します。

aggr_type_string

1つ以上の数値を受け入れ、1つの数値を算出するOracle SQLの集計ファンクションを指定します(SUMMINMAXAVGなど)。

aggr_col_string

集計値の計算を行うtheme_nameの列名を指定します(「使用上のノート」を参照)。たとえば、POPULATION列を指定します。

geom

ジオメトリ・オブジェクト。

dst_spec

距離バッファまたは考慮すべき最も近いジオメトリの数を指定する文字列を引用符で囲んで指定します。書式および意味については、「使用上のノート」を参照してください。

使用上のノート

特定のジオメトリについて、このファンクションはtheme_name表のジオメトリを識別して、共通部分の比率を検出し、指定された集計にその比率を掛けて、ジオメトリの集計を行います。具体的には、指定されたジオメトリと交差するtheme_name表のすべての行について、次のファンクションの値を戻します。

aggr_type_string(aggr_col_string * proportional_area_of_intersection(geometry, theme_name.theme_colname))

theme_colname列には、空間索引が定義されている必要があります。最適なパフォーマンスを得るには、この列に簡略化されたジオメトリを挿入します。

dst_specパラメータを指定する場合は、次のうちのいずれかを引用符で囲んで指定します。

  • distanceキーワードおよびオプションでunitキーワード(距離値に関係付けられる測定単位)。これにより、ジオメトリの周りにバッファを指定します。たとえば、'distance=2 unit=km'は、入力ジオメトリの周りに2kmのバッファを指定します。dst_specを指定しない場合、バッファは使用されません。

    unitキーワードを指定する場合、値はMDSYS.SDO_DIST_UNITS表のSDO_UNIT値('unit=km'など)である必要があります。unitキーワードを指定しない場合、ジオメトリに関連付けられた測定単位が使用されます。測定単位の指定の詳細は、「測定単位のサポート」を参照してください。

  • sdo_num_resキーワード。これにより、考慮すべき最も近くにあるジオメトリの数を指定します(比率により求められる範囲は考慮しません)。たとえば、'sdo_num_res=5'は、指定した点に最も近い5都市の人口を要求する問合せに使用できます。

次の例では、指定した点ジオメトリを中心に、半径3マイルの領域でテーマ集計を行います。この例では、国内の人口分布が均一であると仮定して、様々な国の円の面積の割合に基づき、その領域内の総人口を計算します。

SELECT sdo_sam.aggregates_for_geometry(
  'GEOD_COUNTIES', 'GEOM',
  'sum', 'totpop',
  SDO_GEOMETRY(2001, 8307,
    SDO_POINT_TYPE(-73.943849, 40.6698,NULL),
    NULL, NULL),
  'distance=3 unit=mile')
FROM DUAL a ;

31.2 SDO_SAM.AGGREGATES_FOR_LAYER

構文

SDO_SAM.AGGREGATES_FOR_LAYER(
     theme_name       IN VARCHAR2, 
     theme_colname    IN VARCHAR2, 
     aggr_type_string IN VARCHAR2, 
     aggr_col_string  IN VARCHAR2, 
     tablename        IN VARCHAR2, 
     colname          IN VARCHAR2, 
     dst_spec         IN VARCHAR2 DEFAULT NULL 
     ) RETURN SDO_REGAGGRSET;

説明

ジオメトリのレイヤーのテーマ集計を行います。

パラメータ

theme_name

テーマ表の名前を指定します。

theme_colname

theme_nameのジオメトリ列の名前を指定します。

aggr_type_string

1つ以上の数値を受け入れ、1つの数値を算出するOracle SQLの集計ファンクションを指定します(SUMMINMAXAVGなど)。

aggr_col_string

集計値の計算を行うtheme_nameの列名を指定します(「使用上のノート」を参照)。たとえば、POPULATION列を指定します。

tablename

データ・マイニング表の名前を指定します。

colname

ジオメトリを格納するtablenameの列名を指定します。

dst_spec

距離バッファまたは考慮すべき最も近いジオメトリの数を指定する文字列を引用符で囲んで指定します。書式および意味については、この章に示すSDO_SAM.AGGREGATES_FOR_GEOMETRYファンクションの「使用上のノート」を参照してください。

使用上のノート

tablenameの各ジオメトリについて、このファンクションはtheme_name表のジオメトリを識別して、共通部分の比率を検出し、指定された集計にその比率を掛けて、tablenameの各ジオメトリの集計を行います。具体的には、theme_name表のすべての行について、次のファンクションの値を戻します。

aggr_type_string(aggr_col_string * proportional_area_of_intersection(geometry, theme_name.theme_colname))

このファンクションは、SDO_REGAGGRSET型のオブジェクトを戻します。SDO_REGAGGRSETオブジェクト型は、次のとおり定義されます。

TABLE OF SDO_REGAGGR

SDO_REGAGGRオブジェクト型は、次のとおり定義されます。

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 REGION_ID                                          VARCHAR2(24)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY
 AGGREGATE_VALUE                                    NUMBER

theme_colname列には、空間索引が定義されている必要があります。最適なパフォーマンスを得るには、この列に簡略化されたジオメトリを挿入します。

次の例では、TEST_TABという表のすべてのジオメトリについて、指定した点ジオメトリを中心に、半径3マイルの領域でテーマ集計を行います。この例では、国内の人口分布が均一であると仮定して、様々な国の円の面積の割合に基づき、各領域内の総人口を計算します。

SELECT a.aggregate_value FROM TABLE(sdo_sam.aggregates_for_layer(
  'GEOD_COUNTIES', 'GEOM', 'SUM', TOTPOP', TEST_TAB', 'GEOM'
    'distance=3 unit=mile')) a;

31.3 SDO_SAM.BIN_GEOMETRY

構文

SDO_SAM.BIN_GEOMETRY(
     geom          IN SDO_GEOMETRY, 
     tol           IN SDO_DIM_ARRAY, 
     bin_tablename IN VARCHAR2, 
     bin_colname   IN VARCHAR2 
     ) RETURN NUMBER;

または

SDO_SAM.BIN_GEOMETRY(
     geom           IN SDO_GEOMETRY,
      dim           IN SDO_DIM_ARRAY,
      bin_tablename IN VARCHAR2,
      bin_colname   IN VARCHAR2  
     ) RETURN NUMBER;

説明

ジオメトリの交差部の最も多い四角形を計算します。

パラメータ

geom

ビンを計算するジオメトリを指定します。

tol

許容差(「許容差」を参照)。

dim

ビンのジオメトリを格納する表の次元配列を指定します。

bin_tablename

ビンのジオメトリを格納する表の名前を指定します。

bin_colname

ビンのジオメトリを格納するbin_tablenameの列を指定します。

使用上のノート

このファンクションは、指定されたジオメトリと最も多く交差するビンを戻します。複数のビンが指定されたジオメトリの同じエクステントに交差する場合は、最小の面積を持つビンが戻されます。

指定されたbin_tablenameを使用して、データ・マイニング表のすべての行に対してこの操作を実行するには、SDO_SAM.BIN_LAYERプロシージャを使用します。

次の例では、指定したジオメトリのビンを計算します。

SELECT sdo_sam.bin_geometry(a.geometry, 0.0000005, 'BINTBL', 'GEOMETRY')
  FROM poly_4pt a, user_sdo_geom_metadata b
  WHERE b.table_name='POLY_4PT' AND a.gid=1;
 
SDO_SAM.BIN_GEOMETRY(A.GEOMETRY,0.0000005,'BINTBL','GEOMETRY')
--------------------------------------------------------------
                                                            43
 
1 row selected.

31.4 SDO_SAM.BIN_LAYER

構文

SDO_SAM.BIN_LAYER(
     tablename       IN VARCHAR2, 
     colname         IN VARCHAR2, 
     bin_tablename   IN VARCHAR2, 
     bin_colname     IN VARCHAR2, 
     bin_id_colname  IN VARCHAR2, 
     commit_interval IN NUMBER DEFAULT 20);

説明

データ・マイニング表の各位置(および対応する行)を空間ビンに割り当てます。

パラメータ

tablename

データ・マイニング表の名前を指定します。

colname

位置の座標を格納するtable_nameの列名を指定します。

bin_tablename

空間ビンの情報(2次元空間全体の事前計算)を含む表名を指定します。

bin_colname

ビンのジオメトリを格納するbin_tablenameの列を指定します。

bin_id_colname

ビンに追加する各ジオメトリのビンID値を格納するデータ・マイニング表の列名を指定します。(データ・マイニング表の影響を受けた各行は、bin_tablenameのビン・ジオメトリのID値で更新されます。)

commit_interval

Spatial and Graphによって内部コミット操作が実行される前に行うビン挿入操作の回数を指定します。commit_intervalを指定しない場合、コミットは挿入操作を20回行うたびに実行されます。

使用上のノート

このプロシージャは、bin_tablenameのビンを使用して、指定したレイヤーの各ジオメトリについて、交差部の最も多い四角形を計算します。各ジオメトリのビンID値は、bin_id_colnameに追加されます。

このプロシージャは、bin_tablenameで指定したデータ・マイニング表の各行に対して、SDO_SAM.BIN_GEOMETRYファンクションを使用する場合と同じ結果になります。

次の例では、POLY_4PT_TEMPデータ・マイニング表の各GEOMETRY列の位置および対応する行を空間ビンに割り当て、ビン表の挿入のたびに内部コミット操作を実行します。

CALL SDO_SAM.BIN_LAYER('POLY_4PT_TEMP', 'GEOMETRY', 'BINTBL', 'GEOMETRY', 'BIN_ID', 1);

31.5 SDO_SAM.COLOCATED_REFERENCE_FEATURES

構文

SDO_SAM.COLOCATED_REFERENCE_FEATURES(
     theme_tablename  IN VARCHAR2, 
     theme_colname    IN VARCHAR2, 
     theme_predicate  IN VARCHAR2, 
     tablename        IN VARCHAR2, 
     colname          IN VARCHAR2, 
     ref_predicate    IN VARCHAR2, 
     dst_spec         IN VARCHAR2, 
     result_tablename IN VARCHAR2, 
     commit_interval  IN NUMBER DEFAULT 100);

説明

部分的な条件ベースの表の結合を実行し、結合の結果を表にマテリアライズします。

パラメータ

theme_tablename

tablenameを結合する表名を指定します。

theme_colname

theme_tablenameのジオメトリ列の名前を指定します。

theme_predicate

theme_tablenameに適用されるWHERE句の条件を指定します。

tablename

データ・マイニング表の名前を指定します。

colname

位置の座標を格納するtablenameの列名を指定します。

ref_predicate

tablenameに適用されるWHERE句の条件を指定します。ヌルまたは非ヌルの値である必要があります。ヌルの場合は条件が適用されません。非ヌルの場合、単一の表述語である必要があります。例: 'country_code=10'

dst_spec

ジオメトリの周りのバッファを、距離値および単位値(オプション)を含む文字列を引用符で囲んで指定します。書式および意味については、「使用上のノート」を参照してください。

result_tablename

マテリアライズした結合の結果を格納する表を指定します。この表が存在し、(tid NUMBER, rid1 VARCHAR2(24), rid2 VARCHAR2(24))と定義されている必要があります。

commit_interval

Spatial and Graphによって内部コミット操作が実行される前に行う内部結合操作の回数を指定します。commit_intervalを指定しない場合、コミットは内部結合操作を100回行うたびに実行されます。

使用上のノート

このプロシージャは、条件ベースの結合操作によって戻されるROWIDの各組合せをマテリアライズして、result_tablenamerid1、rid2列に格納します。tidは、各rid1値に対応して生成される一意の相互作用番号です。

dst_specパラメータは、distanceキーワードおよびオプションでunitキーワード(距離値に関連付けられた測定単位)を含み、引用符で囲んで指定します。これにより、ジオメトリの周りにバッファを指定します。たとえば、'distance=2 unit=km'は、入力ジオメトリの周りに2kmのバッファを指定します。dst_specを指定しない場合、バッファは使用されません。

unitキーワードを指定する場合、値はMDSYS.SDO_DIST_UNITS表のSDO_UNIT値('unit=KM'など)である必要があります。unitキーワードを指定しない場合、ジオメトリに関連付けられた測定単位が使用されます。測定単位の指定の詳細は、「測定単位のサポート」を参照してください。

次の例では、1990年の人口(POP90列の値)が120,000人を超え、州間高速道路からの距離(GEOD_INTERSTATES表のGEOM列)が20km以内である都市を識別します。結果はCOLOCATION_TABLEという表に格納され、内部操作を20回行うたびに内部コミット操作が実行されます。

EXECUTE SDO_SAM.COLOCATED_REFERENCE_FEATURES(
  'geod_cities', 'location', 'pop90 > 120000',
  'geod_interstates', 'geom', null,
  'distance=20 unit=km', 'colocation_table', 20);

31.6 SDO_SAM.SIMPLIFY_GEOMETRY

構文

SDO_SAM.SIMPLIFY_GEOMETRY(
     geom                  IN SDO_GEOMETRY, 
     dim                   IN SDO_DIM_ARRAY, 
     pct_area_change_limit IN NUMBER DEFAULT 2 
     ) RETURN SDO_GEOMETRY;

または

SDO_SAM.SIMPLIFY_GEOMETRY(
     geom                  IN SDO_GEOMETRY, 
     tol                   IN NUMBER, 
     pct_area_change_limit IN NUMBER DEFAULT 2 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリを簡略化します。

パラメータ

geom

簡略化するジオメトリを指定します。

dim

簡略化するジオメトリの次元配列を指定します。

tol

許容差(「許容差」を参照)。

pct_area_change_limit

簡略化の反復ごとに変更される面積の割合を指定します(「使用上のノート」を参照)。

使用上のノート

このファンクションは、SDO_UTIL.SIMPLIFYファンクション(「SDO_UTILパッケージ(ユーティリティ)」を参照)を適切なしきい値で内部適用することによって、ジオメトリの頂点の数を削減します。

頂点の数を削減すると、ジオメトリの面積が変更される場合があります。pct_area_change_limitパラメータで、ジオメトリを簡略化する際に変更される面積の許容差を指定します。通常は1から100の範囲です。デフォルト値(2)の場合、ジオメトリの面積は簡略化によって元のジオメトリから2%の範囲内で増減します。

次の例では、POLY_4PT_TEMP表のGEOMETRY列のジオメトリを簡略化します。

SELECT sdo_sam.simplify_geometry(a.geometry, 0.00000005)
  FROM poly_4pt_temp a, user_sdo_geom_metadata b
  WHERE b.table_name='POLY_4PT_TEMP' ;
 
SDO_SAM.SIMPLIFY_GEOMETRY(A.GEOMETRY,0.00000005)(ORIG_AREA, CUR_AREA, ORIG_LEN,
--------------------------------------------------------------------------------
SDO_SMPL_GEOMETRY(28108.5905, 28108.5905, 758.440118, 758.440118, SDO_GEOMETRY(2
003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(-122.4215,
37.7862, -122.422, 37.7869, -122.421, 37.789, -122.42, 37.7866, -122.4215, 37.78
62)))
 
SDO_SMPL_GEOMETRY(4105.33806, 4105.33806, 394.723053, 394.723053, SDO_GEOMETRY(2
003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(-122.4019,
37.8052, -122.4027, 37.8055, -122.4031, 37.806, -122.4012, 37.8052, -122.4019, 3
7.8052)))
   . 
   . 
   . 
50 rows selected.

31.7 SDO_SAM.SIMPLIFY_LAYER

構文

SDO_SAM.SIMPLIFY_LAYER(
     theme_tablename       IN VARCHAR2, 
     theme_colname         IN VARCHAR2, 
     smpl_geom_colname     IN VARCHAR2, 
     commit_interval       IN NUMBER DEFAULT 10, 
     pct_area_change_limit IN NUMBER DEFAULT 2);

説明

ジオメトリのレイヤーを簡略化します。

パラメータ

theme_tablename

簡略化するジオメトリのレイヤーを含む表の名前を指定します。

theme_colname

簡略化するジオメトリを含むSDO_GEOMETRY型のtheme_tablenameの列を指定します。

smpl_geom_colname

このプロシージャによって簡略化されたジオメトリが配置される、SDO_GEOMETRY型のtheme_tablenameの列を指定します。

commit_interval

Spatial and Graphによって内部コミット操作が実行される前に簡略化するジオメトリの数を指定します。commit_intervalを指定しない場合、コミットは簡略化操作を10回行うたびに実行されます。

pct_area_change_limit

簡略化の反復ごとに変更される面積の割合を指定します(SDO_SAM.SIMPLIFY_GEOMETRYファンクションの「使用上のノート」を参照)。

使用上のノート

このプロシージャは、レイヤー内のすべてのジオメトリを簡略化します。実行する操作は、レイヤー内の各ジオメトリに対してSDO_SAM.SIMPLIFY_GEOMETRYファンクションをコールする場合と同じですが、このファンクションでは、簡略化された各ジオメトリは、コール元に戻されるのではなく、表内の別々の列に配置されます。SDO_SAM.SIMPLIFY_GEOMETRYファンクションの「使用上のノート」も参照してください。

次の例では、SMPL_GEOMという列をPOLY_4PT_TEMP表に追加して、POLY_4PT_TEMP表のGEOMETRY列のすべてのジオメトリを簡略化し、簡略化された各ジオメトリを対応する元のジオメトリと同じ行のSMPL_GEOM列に配置します。

ALTER TABLE poly_4pt_temp ADD (smpl_geom mdsys.sdo_geometry);
 
Table altered.
 
EXECUTE sdo_sam.simplify_layer('POLY_4PT_TEMP', 'GEOMETRY', 'SMPL_GEOM');
 
PL/SQL procedure successfully completed.

31.8 SDO_SAM.SPATIAL_CLUSTERS

構文

SDO_SAM.SPATIAL_CLUSTERS(
     tablename      IN VARCHAR2, 
     colname        IN VARCHAR2, 
     max_clusters   IN NUMBER, 
     allow_outliers IN VARCHAR2 DEFAULT 'TRUE', 
     tablepartition IN VARCHAR2 DEFAULT NULL 
     ) RETURN SDO_REGIONSET;

説明

既存のRツリー索引を使用してクラスタを計算し、SDO_REGIONオブジェクトの集合を戻します。このオブジェクトでは、ジオメトリ列によって各クラスタの境界が指定され、geometry_key値がNULLに設定されています。

パラメータ

tablename

データ・マイニング表の名前を指定します。

colname

位置の座標を格納するtablenameの列名を指定します。

max_clusters

取得するクラスタの最大数を指定します。

allow_outliers

TRUE (デフォルト)を指定した場合、外れ値(独立したインスタンス)が空間クラスタに含まれます。FALSEを指定した場合、外れ値は空間クラスタには含まれません。(TRUEを指定すると、すべてのデータが許容されるため、クラスタは大きくなります。FALSEを指定すると、一部のデータが除外されるため、クラスタは小さくなります。)

tablepartition

tablenameのパーティション名を指定します。

使用上のノート

クラスタはtablenameの空間Rツリー索引を使用して計算されます。

次の例では、都市の位置を最大3つのクラスタにクラスタ化します。外れ値はクラスタに含めます。

SELECT * FROM
  TABLE(sdo_sam.spatial_clusters('PROJ_CITIES', 'LOCATION', 3, 'TRUE'));

31.9 SDO_SAM.TILED_AGGREGATES

構文

SDO_SAM.TILED_AGGREGATES(
     theme_name       IN VARCHAR2, 
     theme_colname    IN VARCHAR2, 
     aggr_type_string IN VARCHAR2, 
     aggr_col_string  IN VARCHAR2, 
     tiling_level     IN NUMBER DEFAULT NULL, 
     tiling_domain    IN SDO_DIM_ARRAY DEFAULT NULL, 
     zero_agg_tiles   IN NUMBER DEFAULT 0, 
     xdivs            IN NUMBER DEFAULT NULL, 
     ydivs            IN NUMBER DEFAULT NULL 
     ) RETURN SDO_REGAGGRSET;

説明

ドメインの集計を四角形処理します。四角形ごとに、テーマ表から交差するジオメトリを計算します。aggr_col_string列の値は、共通部分の面積に対して均等に重み付けされ、aggr_col_stringに従って集計されます。

パラメータ

theme_name

テーマ情報(デモグラフィック情報など)を含む表を指定します。

theme_colname

ジオメトリ・オブジェクトを含むtheme_name表の列名を指定します。

aggr_type_string

1つ以上の数値を受け入れ、1つの数値を算出するOracle SQLの集計ファンクションを指定します(SUMMINMAXAVGなど)。

aggr_col_string

集計値の計算を行うtheme_name表の列名を指定します。たとえば、POPULATION列を指定します。

tiling_level

四角形の作成に使用するレベルを指定します。このパラメータを指定すると、各ディメンションのエクステントは、2^tiling_level個の要素に分割され、結果として最大で4×tiling_levelの四角形が作成されます。(このパラメータ、またはxdivsパラメータとydivsパラメータの組合せのいずれかを指定します。)

tiling_domain

四角形処理レベルのドメインを指定します。このパラメータを必要とせず、指定しない場合は、theme_name表に関連付けられたエクステントが使用されます。

zero_agg_tiles

集計値が0 (ゼロ)となる四角形を除外するために0 (ゼロ)を指定するか、またはすべての四角形を戻すために1を指定します。デフォルト値は0 (ゼロ)です。これにより、0 (ゼロ)以外の集計値を持つ四角形のみが戻されることになります。

xdivs

1つ目の次元のエクステントを何回分割するかを指定します(分割後の要素の合計数はxdivs + 1)。たとえば、xdivsを10に指定すると、1つ目の次元のエクステントは11の要素に分割されます。

ydivs

2つ目の次元のエクステントを何回分割するかを指定します(分割後の要素の合計数はydivs + 1)。たとえば、ydivsを10に指定すると、2つ目の次元のエクステントは11の要素に分割されます。

使用上のノート

このファンクションはSDO_SAM.AGGREGATES_FOR_LAYERに類似していますが、結果は四角形処理情報によって動的に生成されます。theme_name表の場合、四角形処理のドメインが決定されます。tiling_level値、またはxdivs値およびydivs値に基づいて、必要な四角形が生成されます。各四角形ジオメトリについて、テーマ集計が行われます(SDO_SAM.AGGREGATES_FOR_LAYERの「使用上のノート」を参照)。

tiling_levelパラメータ、またはxdivsパラメータとydivsパラメータの両方を指定する必要があります。これらの3つのパラメータをすべて指定した場合、tiling_levelパラメータは無視され、xdivsパラメータとydivsパラメータが使用されます。

xdivsパラメータとydivsパラメータを指定した場合、戻されるグリッド(四角形)の合計数は、(xdivs+1)×(ydivs+1)です。

このファンクションは、SDO_REGAGGRSET型のオブジェクトを戻します。SDO_REGAGGRSETオブジェクト型は、次のとおり定義されます。

TABLE OF SDO_REGAGGR

SDO_REGAGGRオブジェクト型は、次のとおり定義されます。

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 REGION_ID                                          VARCHAR2(24)
 GEOMETRY                                           MDSYS.SDO_GEOMETRY
 AGGREGATE_VALUE                                    NUMBER

次の例では、各四角形と交差するPOLY_4PT_TEMP表の人口の行の合計を計算します。USER_SDO_GEOM_METADATAビューに格納されたPOLY_4PT_TEMP表のエクステントがドメインとして使用され、四角形処理レベルは2となります(この場合、ドメインは16の四角形に分割されます)。

SELECT a.geometry, a.aggregate_value
  from TABLE(sdo_sam.tiled_aggregates('POLY_4PT_TEMP',
                        'GEOMETRY', 'SUM', 'POPULATION', 2)) a;
 
GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------
AGGREGATE_VALUE
---------------
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-180, -90, -90, -45))
     .007150754
 
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-180, -45, -90, 0))
     .034831005
 
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-180, 0, -90, 45))
     7.73307783
 
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-90, -90, 0, -45))
     .019498368
 
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-90, -45, 0, 0))
     .939061456
 
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-90, 0, 0, 45))
     1.26691592
 
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(0, 0, 90, 45))
             40
 
7 rows selected.

31.10 SDO_SAM.TILED_BINS

構文

SDO_SAM.TILED_BINS(
     l1           IN NUMBER, 
     u1           IN NUMBER, 
     l2           IN NUMBER, 
     u2           IN NUMBER, 
     tiling_level IN NUMBER DEFAULT NULL, 
     srid         IN NUMBER DEFAULT NULL, 
     xdivs        IN NUMBER DEFAULT NULL, 
     ydivs        IN NUMBER DEFAULT NULL 
     ) RETURN SDO_REGIONSET;

説明

2次元空間を四角形処理し、その四角形に対応するジオメトリを戻します。

パラメータ

l1

最初の次元のエクステントの下限を指定します。

u1

最初の次元のエクステントの上限を指定します。

l2

第2の次元のエクステントの下限を指定します。

u2

第2の次元のエクステントの上限を指定します。

tiling_level

指定したエクステントの四角形処理に使用するレベルを指定します。このパラメータを指定すると、各ディメンションのエクステントは、2^tiling_level個の要素に分割され、結果として最大で4×tiling_levelの四角形が作成されます。(このパラメータ、またはxdivsパラメータとydivsパラメータの組合せのいずれかを指定します。)

srid

戻される四角形ジオメトリの座標系に含まれるSRID値を指定します。

xdivs

1つ目の次元のエクステントを何回分割するかを指定します(分割後の要素の合計数はxdivs + 1)。たとえば、xdivsを10に指定すると、1つ目の次元のエクステントは11の要素に分割されます。

ydivs

2つ目の次元のエクステントを何回分割するかを指定します(分割後の要素の合計数はydivs + 1)。たとえば、ydivsを10に指定すると、2つ目の次元のエクステントは11の要素に分割されます。

使用上のノート

tiling_levelパラメータ、またはxdivsパラメータとydivsパラメータの両方を指定する必要があります。これらの3つのパラメータをすべて指定した場合、tiling_levelパラメータは無視され、xdivsパラメータとydivsパラメータが使用されます。

xdivsパラメータとydivsパラメータを指定した場合、戻されるグリッド(四角形)の合計数は、(xdivs+1)×(ydivs+1)です。

このファンクションは、SDO_REGIONSET型のオブジェクトを戻します。SDO_REGIONSETオブジェクト型は、次のとおり定義されます。

TABLE OF SDO_REGION

SDO_REGIONオブジェクト型は、次のとおり定義されます。

Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 GEOMETRY                                           MDSYS.SDO_GEOMETRY

次の例では、標準的な緯度と経度の座標系(SRID 8307)を使用して、四角形処理レベル1で地表面全体の四角形処理を行います。結果として戻されるSDO_REGIONSETオブジェクトには、4つのSDO_REGIONオブジェクト(四角形ごとに1つのオブジェクト)が含まれます。

SELECT * FROM TABLE(sdo_sam.tiled_bins(-180, 180, -90, 90, 1, 8307))
  ORDER BY id;
 
        ID
----------
GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
--------------------------------------------------------------------------------
         0
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-180, -90, 0, 0))
 
         1
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(-180, 0, 0, 90))
 
         2
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(0, -90, 180, 0))
 
         3
SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 3), SDO_ORDINATE_ARR
AY(0, 0, 180, 90))
 
4 rows selected.