Lindorm GanosBase は、Open Geospatial Consortium (OGC) 標準に基づくジオメトリデータ型をサポートしています。これらの型を使用して、時空間テーブルに空間列を定義し、Well-Known Text (WKT) または Well-Known Binary (WKB) フォーマットでジオメトリオブジェクトの読み書きを行います。
型階層
Geometry は抽象親型です。すべてのジオメトリ値は、その具象サブタイプのいずれかに属し、これらは 2 つのカテゴリに分類されます。
アトミック型 — Point、LineString、Polygon などの単一の形状を表します
コレクション型 — MultiPoint、MultiLineString、MultiPolygon、GeometryCollection などの形状のセットを表します
空間列を定義する際は、特定のサブタイプを使用してください。`Geometry` 型の列には任意のサブタイプを格納できますが、特定のサブタイプ用に構築された時空間インデックスは `Geometry` 列には適用できません。
ジオメトリ型
| 型 | 説明 | ユースケース |
|---|---|---|
| Geometry | 抽象親型です。任意のサブタイプを格納できますが、サブタイプレベルでの時空間インデックスは利用できません。列の型として `Geometry` を使用することは避け、代わりに特定のサブタイプを使用してください。 | — |
| Point | 経度 (x) と緯度 (y) で識別される単一の場所です。3次元のポイントオブジェクトは計算に使用できません。Lindorm GanosBase は計算中にこれらを 2次元に変換します。 | 車両や船舶の GPS 座標 |
| LineString | 2 つ以上のポイントからなる順序付きシーケンスで、各線分のエンドポイントが次のセグメントの開始ポイントになります。2 つのセグメントが頂点を共有することも可能です。 | 道路、車両の軌跡 |
| Polygon | 外部境界が閉じた線 (開始ポイントとエンドポイントが同じ) である閉じた形状です。少なくとも 3 つのポイントが必要です。内部境界 (穴) を含むことができます。 | ジオフェンス、地番、行政区画、長方形、円 |
| MultiPoint | 0 個以上の `Point` オブジェクトのコレクションです。 | 遊園地内のチケット売り場の場所 |
| MultiLineString | 0 個以上の `LineString` オブジェクトのコレクションです。 | 複数の線分で構成される道路 |
| MultiPolygon | 0 個以上の `Polygon` オブジェクトのコレクションです。 | 複数の郡や地区で構成される都市 |
| GeometryCollection | 任意の型の 0 個以上のジオメトリオブジェクトのコレクションです。 | 混合ジオメトリデータセット |
サブタイプの選択
| データが表すもの | 使用 |
|---|---|
| 単一の場所 (GPS 測位点、ランドマーク) | Point |
| パスまたは軌跡 (道路セグメント、車両ルート) | LineString |
| 閉鎖領域 (境界、リージョン、ゾーン) | Polygon |
| 複数の個別の場所 | MultiPoint |
| 複数のパス | MultiLineString |
| 複数のエリア | MultiPolygon |
| 形状の混合 | GeometryCollection |
WKT フォーマット
Well-Known Text (WKT) は、ジオメトリオブジェクトを記述するために OGC が定義したテキストフォーマットです。詳細については、「Well-Known Text」をご参照ください。
WKT 文字列には、空間参照識別子 (SRID) を含めることはできません。
GanosBase は、Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon の各型で WKT をサポートしています。
構文リファレンス
| 型 | 構文 |
|---|---|
| Point | POINT(x y) — x は経度、y は緯度です |
| LineString | LINESTRING(x1 y1, x2 y2, ..., xn yn) — n 個のポイントのシーケンスです |
| Polygon | POLYGON((x1 y1, ..., xn yn), (xa ya, ..., xm ym)) — 外部境界に続き、オプションで内部境界を指定します |
| MultiPoint | MULTIPOINT(x1 y1, x2 y2, ..., xn yn) — n 個のポイントのコレクションです |
| MultiLineString | MULTILINESTRING((x11 y11, ..., x1n y1n), (x21 y21, ..., x2m y2m), ...) — `LineString` オブジェクトのコレクションです |
| MultiPolygon | MULTIPOLYGON(((x11 y11, ..., x1n y1n)), ((x21 y21, ..., x2m y2m)), ...) — `Polygon` オブジェクトのコレクションです |
| GeometryCollection | GEOMETRYCOLLECTION(Point/LineString/Polygon/MultiPoint/MultiLineString/MultiPolygon) — 混合コレクションです |
WKT の例
-- Point
POINT(-10.1 3.3)
POINT EMPTY
-- LineString
LINESTRING(3 4, 10 50, 20 25)
LINESTRING EMPTY
-- Polygon: 外部境界のみ
POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))
-- Polygon: 外部境界 + 内部境界 (穴)
POLYGON((0.5 0.5, 5 0, 5 5, 0 5, 0.5 0.5), (1.5 1, 4 3, 4 1, 1.5 1))
POLYGON EMPTY
-- MultiPoint
MULTIPOINT(10 40, 40 30, 20 20, 30 10)
-- 以下と同等: POINT(10 40), POINT(40 30), POINT(20 20), POINT(30 10)
-- MultiLineString
MULTILINESTRING((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))
-- 以下と同等: LINESTRING(10 10, 20 20, 10 40) と LINESTRING(40 40, 30 30, 40 20, 30 10)
-- MultiPolygon: 外部境界のみを持つ 2 つのポリゴン
MULTIPOLYGON(((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))
-- MultiPolygon: 外部境界のみを持つポリゴン 1 つ + 外部境界と内部境界を持つポリゴン 1 つ
MULTIPOLYGON(((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))
-- GeometryCollection
GEOMETRYCOLLECTION(POINT(40 10), LINESTRING(10 10, 20 20, 10 40), POLYGON((40 40, 20 45, 45 30, 40 40)))WKT からのジオメトリオブジェクトの構築
WKT 文字列からジオメトリオブジェクトを構築するには、ST_GeomFromText を使用します。詳細については、「ジオメトリコンストラクター」をご参照ください。
座標からのジオメトリオブジェクトの構築
ST_MakePoint を使用して座標からポイント オブジェクトを作成するか、ST_LineFromMultiPoint を使用して複数のポイント座標から LineString を作成します。詳細については、「ジオメトリ コンストラクター」をご参照ください。
WKB フォーマット
Well-Known Binary (WKB) は、ジオメトリオブジェクトを記述するために OGC が定義したバイナリフォーマットです。詳細については、「Well-Known Binary」をご参照ください。
GanosBase は、Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon の各型で WKB をサポートしています。
ジオメトリオブジェクトは、16 進数の WKB 文字列として出力されます。次の例は、WKB の結果を返すクエリを示しています。
SELECT ST_GeomFromText('POINT(-10.1 3.3)') as p;出力:
+--------------------------------+
| p |
+--------------------------------+
| 0020000001000010E6C02433333333 |
| 3333400A666666666666 |
+--------------------------------+ジオメトリオブジェクトを WKT 文字列として出力するには、ST_AsText を使用します。詳細については、「出力関数」をご参照ください。