Amazon Redshift 空間データの用語
以下の用語は、一部の Amazon Redshift 空間関数を説明するために使用されます。
境界ボックス
ジオメトリまたはジオグラフィの境界ボックスは、そのジオメトリまたはジオグラフィのすべてのポイントの座標範囲 (ディメンション間) での外積として定義されます。2 次元ジオメトリの場合、境界ボックスは、ジオメトリ内のすべてのポイントを完全に含む長方形となります。例えば、ポリゴン POLYGON((0 0,1 0,0 2,0 0))
の境界ボックスは、点 (0, 0) と (1, 2) が、それぞれ左下および右上隅として定義される長方形です。Amazon Redshift は、ジオメトリ内の境界ボックスを事前に計算して格納します。この処理により、幾何学的な述語と空間結合を高速化します。例えば、2 つのジオメトリの境界ボックスが交差しないのであれば、これらの 2 つのジオメトリは交差することはなく、したがって ST_Intersects 述語により実行される空間結合の結果セットに含めることはできません。
境界ボックスに対し空間関数を使用して、追加 (AddBBox)、ドロップ (DropBBox)、サポートの判断 (SupportsBBox) が実行できます。Amazon Redshift は、すべてのジオメトリサブタイプで、境界ボックスの事前計算をサポートしています。
次の例は、テーブル内の既存のジオメトリを更新して、境界ボックスを使用しながら、そのジオメトリを格納する方法を示しています。使用しているクラスターのバージョンが 1.0.26809 以降の場合は、デフォルトで、すべての新しいジオメトリは事前に計算された境界ボックスを使用しで作成されます。
UPDATE my_table SET geom = AddBBox(geom) WHERE SupportsBBox(geom) = false;
既存のジオメトリの更新処理後は、更新されたテーブルに対して VACUUM コマンドを実行することをお勧めします。詳細については、「VACUUM」を参照してください。
セッション中にジオメトリを境界ボックスによりエンコードするかどうかを設定するには、「default_geometry_encoding」を参照してください。
幾何学的妥当性
Amazon Redshift で使用されるジオメトリックアルゴリズムは、入力ジオメトリが有効なジオメトリであると仮定しています。アルゴリズムへの入力が有効でない場合、結果は未定義です。以下のセクションでは、各ジオメトリのサブタイプに対して Amazon Redshift が使用するジオメトリの妥当性の定義について説明します。
- Point
-
ポイントは、次の条件の内 1 つが true である場合に有効と見なされます。
ポイントが空である。
すべてのポイントの座標が、有限の浮動小数点数で示されている。
ポイントは空にすることができます。
- Linestring
-
ライン文字列は、次の条件のいずれかが true である場合に有効と見なされます。
ライン文字列は空です。つまり、ポイントは含まれていません。
空ではないライン文字列内のすべてのポイントは、有限の浮動小数点数である座標を持っています。
ライン文字列が空ではない場合、1 次元である必要があります。つまり、ポイントまで縮退することはできません。
ライン文字列には、空のポイントを含めることはできません。
ライン文字列は、連続した重複ポイントを持つことができます。
ライン文字列は、それ自身と交差することができます。
- Polygon
-
ポリゴンは、次の条件のいずれかが true である場合に有効と見なされます。
ポリゴンは空です。つまり、リングが含まれていません。
空でない場合は、次の条件がすべて true である場合、ポリゴンは有効です。
ポリゴンのすべてのリングは有効です。リングは、次の条件のすべてが true である場合に有効と見なされます。
リングのすべての点は、有限の浮動小数点数である座標を持っています。
リングは閉じています。つまり、最初のポイントと最後のポイントが一致します。
リングには自己交差がありません。
リングは 2 次元です。
ポリゴンのリングの向きは一貫しています。つまり、任意のリングを横断する場合、ポリゴンの内部は右または左のいずれかになります。つまり、ポリゴンの外部リングが時計回りまたは反時計回りに向けられている場合、ポリゴンの内部リングはすべて同じ反時計回りまたは時計回りに向けられている必要があります。
すべての内部リングは、ポリゴンの外部リング内にある必要があります。
内部リングはネストできません。つまり、内部リングを別の内部リング内に配置することはできません。
内部リングと外部リングは、有限数のポイントでのみ交差できます。
ポリゴンの内部は簡単に接続する必要があります。
ポリゴンに空のポイントを含めることはできません。
- Multipoint
-
マルチポイントは、次の条件のいずれかが true である場合に有効と見なされます。
マルチポイントは空です。つまり、ポイントは含まれていません。
マルチポイントは空ではなく、含まれるすべてのポイントが、ポイント有効性の定義に従って有効である。
マルチポイントには、1 つ以上の空のポイントを含めることができます。
マルチポイントは重複ポイントを持つことができます。
- マルチライン文字列
-
マルチライン文字列は、次の条件のいずれかが true である場合に有効と見なされます。
マルチライン文字列は空です。つまり、ライン文字列は含まれていません。
空ではないマルチライン文字列内のすべてのライン文字列は、ライン文字列の有効性の定義に従って有効になります。
空のライン文字列のみで構成される空ではないマルチライン文字列は、有効であると見なされます。
マルチライン文字列内の空のライン文字列は、そのマルチライン文字列の有効性に影響を与えません。
マルチライン文字列には、連続するポイントが重複するライン文字列を含めることができます。
マルチライン文字列は、自己交差することができます。
マルチライン文字列には空のポイントを含めることはできません。
- Multipolygon
-
マルチポリゴンは、次の条件のいずれかが true である場合に有効と見なされます。
マルチポリゴンにはポリゴンが含まれていません (空です)。
マルチポリゴンは空ではなく、以下のすべてが true です。
マルチポリゴンのすべてのポリゴンは有効です。
マルチポリゴン内の 2 つのポリゴンが無限数のポイントで交差することはできません。特に、これは、任意の 2 つのポリゴンの内部が交差できず、有限数のポイントでしか接触できないことを意味します。
マルチポリゴン内の空のポリゴンは、マルチポリゴンを無効化しません。
マルチポリゴンには空のポイントを含めることはできません。
- ジオメトリコレクション
-
ジオメトリコレクションは、次の条件のいずれかが true である場合に有効と見なされます。
ジオメトリコレクションは空です。つまり、ジオメトリは含まれていません。
空でないジオメトリコレクション内のすべてのジオメトリが有効です。
この定義は、再帰的にではありますが、ネストされたジオメトリコレクションにも適用されます。
ジオメトリコレクションには、空のポイントと、空のポイントを持つマルチポイントを含めることができます。
幾何学的な単純度
Amazon Redshift で使用されるジオメトリックアルゴリズムは、入力ジオメトリが有効なジオメトリであると仮定しています。アルゴリズムへの入力が有効でない場合、簡略化のチェックは定義されていません。以下のセクションでは、各ジオメトリのサブタイプに対して Amazon Redshift が使用するジオメトリの簡略化の定義について説明します。
- Point
-
有効なポイントは、以下の条件のいずれかが true である場合にシンプルと見なされます。
有効なポイントは、常に単純であるとみなされます。
空のポイントはシンプルであるとみなされます。
- Linestring
-
有効なライン文字列は、次の条件のいずれかが true である場合にシンプルと見なされます。
ライン文字列が空です。
ライン文字列は空ではなく、以下のすべての条件が true です。
重複する連続ポイントはありません。
一致する可能性のある最初のポイントと最後のポイントを除いて、自己交差点はありません。つまり、ライン文字列は、境界点以外で自己交差することはできません。
- Polygon
-
有効なポリゴンは、重複する連続するポイントが含まれていない場合、単純であると見なされます。
- Multipoint
-
有効なマルチポイントは、次の条件のいずれかが true である場合にシンプルと見なされます。
マルチポイントは空です。つまり、ポイントは含まれていません。
マルチポイントの空でないポイント 2 つが一致することはありません。
- マルチライン文字列
-
有効なマルチライン文字列は、次の条件のいずれかが true である場合にシンプルと見なされます。
マルチライン文字列が空です。
マルチライン文字列は空ではなく、以下のすべての条件が true です。
すべてのライン文字列はシンプルです。
マルチライン文字列の 2 つのライン文字列は、2 つのライン文字列の境界点であるポイントを除いて、交差しません。
空のライン文字列のみで構成される空ではないマルチライン文字列は、空であると見なされます。
マルチライン文字列内の空のライン文字列は、そのシンプルさに影響しません。
マルチライン文字列内の閉じたライン文字列は、マルチライン文字列内の他のライン文字列と交差できません。
マルチライン文字列には、連続するポイントが重複するライン文字列を含めることができません。
- Multipolygon
-
有効なマルチポリゴンは重複する連続ポイントが含まれていない場合、単純であると見なされます。
- ジオメトリコレクション
-
有効なジオメトリコレクションは、次の条件のいずれかが true である場合にシンプルと見なされます。
ジオメトリコレクションは空です。つまり、ジオメトリは含まれていません。
空でないジオメトリコレクション内のすべてのジオメトリは単純です。
この定義は、再帰的にではありますが、ネストされたジオメトリコレクションにも適用されます。
H3
H3 は階層型の地理空間インデックスグリッドシステムで、空間座標を平方メートルの解像度までインデックス化できます。インデックス化されたデータは、異なるデータセット間で結合し、さまざまな精度で集約できます。H3 では、最近傍データ、最短経路、勾配平滑化など、グリッドに基づくさまざまなアルゴリズムと最適化が可能になります。H3 インデックスは、六角形または五角形にできるセルを指します。スペースは解像度に応じて階層的に分割されます。H3 は 0 から 15 までの 16 の解像度をサポートしています。0
が最も粗く、15
が最も細かいです。
Amazon Redshift では次の H3 空間関数を提供しています。