35.54 SDO_UTIL.H3SUM_CREATE_TABLE
書式
SDO_UTIL.H3SUM_CREATE_TABLE( table_out IN VARCHAR2, table_in IN VARCHAR2, geomcol_spec IN VARCHAR2, col_spec IN VARCHAR2, max_H3_level IN NUMBER DEFAULT 15, dop IN NUMBER DEFAULT 16 );
説明
測地点データのH3サマリー表を作成します。
パラメータ
- table_out
-
作成する表の名前。
- table_in
-
測地(経度、緯度)座標系の点ジオメトリ情報を含む、入力表の名前。
- geomcol_spec
-
点ジオメトリを含む列の説明。これは、点ジオメトリを含む列の名前(
'LOCATION'
など)、またはカンマで区切られた(経度、緯度)ペアを形成する2つのNUMBER列の名前('X, Y'
など)のいずれかです。 - col_spec
-
結果表に集約する入力表の列のリストと、データを集約するルール。各フィールドに列名と集約演算をカンマで区切って指定し、各フィールドをセミコロンで区切ります。サポートされている演算は、MIN、MAX、AVG、SUM、CNTおよびANYです。値は、SQL関数MIN、MAX、AVG、SUM、COUNTおよびANY_VALUEを使用してそれぞれ計算されます。演算が指定されていない場合は、CNTが想定されます。値'1'は列名として使用でき、すべて1である値の列として機能します。
たとえば、
'Name,CNT; Vehicles,AVG; col2; col3,MAX; col4,ANY'
は、列NAME_CNT
(null以外のName値をカウントする)、VEHICLES_AVG
、COL2_CNT
、COL3_MAX
およびCOL4_ANY
を作成します。COUNTおよびANYは、数値以外の列で使用できる唯一の集計です。 - max_H3_level
-
サマリー表に作成する最大レベル(最小セル)を指定します。
- dop
-
パラレル化の程度を制御します。
dop
がNULLの場合、パラレル化は要求されません。このパラメータを指定しない場合、デフォルトは16です。H3SUM表は2つのステップで作成されます。まずデータ表自体が作成され、次に表に索引が作成されます。dopパラメータは、表作成と索引作成の両方に使用されます。
使用上のノート
H3解像度レベルごとに、指定された入力表の点データをH3の六角形ごとに1つのデータ行に集約する新しい表を作成します。単一点であるジオメトリのみが含まれます。点でないデータおよび複数点データは無視されます。H3値は、指定されたジオメトリ列から計算されます。ソース表のH3キー列(ある場合)は無視されます。
同じ六角形にあるすべての点のデータ値が結合されます。col_spec
は、結果の出力(H3サマリー)表に必要な数値列と、値を組み合せる方法を指定します。
表は、SDO_UTIL.H3SUM_GET_CURSORファンクションおよびSDO_UTIL.H3SUM_VECTORTILEファンクションによる高速アクセスのために索引付けされます。
例
例として、次のWORLD表を考えてみます。
SQL> describe WORLD
Name Null? Type
-------------------------------- -------- -------------------
X NUMBER
Y NUMBER
ID NUMBER
PT PUBLIC.SDO_GEOMETRY
INFO VARCHAR2(20)
次のコードは、SDO_UTIL.H3SUM_CREATE_TABLE
プロシージャを使用して、各六角形に結合された点の個数を単純に数えるH3サマリー表を作成します。
begin
sdo_util.h3sum_create_table('WORLD_H3', 'WORLD', 'pt', '1,CNT');
end;
/
H3サマリー表で次のSQL問合せを実行すると、点の個数は各レベルで同じですが、より粗いレベル(より小さいレベル番号)では六角形が大きくなり、数は少なくなることがわかります。レベル15にあったすべてのデータは、より粗いレベルのより少ない(より大きい)六角形に結合されています。
SQL> select levelnum, count(1), sum(id_cnt) from WORLD_H3 group by levelnum order by levelnum;
LEVELNUM COUNT(1) SUM(ID_CNT)
---------- ---------- -----------
0 122 64621
1 842 64621
2 5882 64621
3 38781 64621
4 57074 64621
5 61857 64621
6 63650 64621
7 64329 64621
8 64442 64621
9 64442 64621
10 64442 64621
LEVELNUM COUNT(1) SUM(ID_CNT)
---------- ---------- -----------
11 64442 64621
12 64442 64621
13 64442 64621
14 64442 64621
15 64442 64621
16 rows selected.