書式
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
のジオメトリ列の名前を指定します。
1つ以上の数値を受け入れ、1つの数値を算出するOracle SQLの集計ファンクションを指定します(SUM
、MIN
、MAX
、AVG
など)。
集計値の計算を行うtheme_name
の列名を指定します(「使用上の注意」を参照)。たとえば、POPULATION列を指定します。
ジオメトリ・オブジェクト。
距離バッファまたは考慮すべき最も近いジオメトリの数を指定する文字列を引用符で囲んで指定します。書式および意味については、「使用上の注意」を参照してください。
使用上の注意
特定のジオメトリについて、このファンクションは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 ;