ポリゴン Dictionary
polygon(POLYGON)Dictionary は、ポイント・イン・ポリゴンクエリ、すなわち「逆ジオコーディング」ルックアップに最適化されています。
座標(緯度・経度)を指定すると、多数のポリゴン(国や地域の境界など)の中からその座標を含むポリゴン/地域を効率的に特定します。
位置座標をそれが属する地域にマッピングする用途に適しています。
ポリゴンDictionaryの設定例:
ClickHouse Cloud でディクショナリを使用している場合は、ディクショナリの作成に DDL クエリオプションを使用し、ユーザー default でディクショナリを作成してください。
また、Cloud 互換性ガイド でサポートされているディクショナリソースの一覧を確認してください。
- DDL
- 設定ファイル
ポリゴンDictionaryを設定する際、キーは以下の2つの型のいずれかである必要があります:
- 単純ポリゴン。点の配列です。
- MultiPolygon。これはポリゴンの配列です。各ポリゴンは点の二次元配列です。この配列の最初の要素はポリゴンの外側の境界を表し、以降の要素はそのポリゴンから除外する領域を指定します。
点は座標の配列またはタプルとして指定できます。現在の実装では、2次元の点のみサポートされています。
ユーザーは、ClickHouseがサポートするすべての形式で自身のデータをアップロードできます。
利用可能なインメモリストレージには、3つの種類があります:
| レイアウト | 説明 |
|---|---|
POLYGON_SIMPLE | 単純な実装です。各クエリごとにすべてのポリゴンを線形走査し、追加の索引を使用せずに包含関係を判定します。 |
POLYGON_INDEX_EACH | 各ポリゴンごとに個別の索引が構築され、多くの場合に高速な包含判定が可能になります(地理的な領域向けに最適化されています)。領域上にグリッドが重ね合わされ、セルは再帰的に 16 個の等しいパーツに分割されます。再帰の深さが MAX_DEPTH に達するか、1 つのセルと交差するポリゴンの数が MIN_INTERSECTIONS 以下になると分割は停止します。 |
POLYGON_INDEX_CELL | 上記で説明したグリッドも、同じオプションで作成します。各リーフセルごとに、そのセルに含まれるすべてのポリゴン断片に対して索引を構築し、高速なクエリ応答を可能にします。 |
POLYGON | POLYGON_INDEX_CELL の別名です。 |
Dictionaryのクエリは、Dictionaryを操作するための標準的な関数を使用して実行されます。 重要な違いは、ここでのキーが、そのキーを含むポリゴンを検索したい地点になるという点です。
例
上記で定義したDictionaryを使用した例:
'points' テーブル内の各ポイントに対して上記のコマンドを実行すると、そのポイントを含む最小面積のポリゴンが検索され、指定した属性が出力されます。
例
SELECT クエリでポリゴン Dictionary からカラムを読み取ることができます。そのためには、Dictionary の設定または対応する DDL クエリで store_polygon_key_column = 1 を有効にしてください。