ST_Geometry のコンストラクタ関数
コンストラクタ関数は、WKT(Well-Known Text)表現、または WKB(Well-Known Binary)やシェープファイルなどのその他のデータ形式からジオメトリを作成します。
ジオメトリを構築するために WKT(Well-Known Text)表現を入力する場合、メジャーは最後に指定する必要があります。たとえば、テキストに x、y、z、m の座標を含む場合、この順序で指定しなければなりません。x、y、m、z の順序では指定できません。
ジオメトリは 0 個以上のポイントで構成されます。ポイントの数が 0 である場合、ジオメトリは空であるとみなされます。ポイント サブタイプは 0 または 1 個のポイントに制限される唯一のジオメトリであり、その他すべてのサブタイプは 0 個以上のポイントで構成されます。
以下のセクションでは、ジオメトリ スーパークラスおよびサブクラス ジオメトリについて説明し、それらを作成できる関数を示します。
ジオメトリ スーパークラス
ST_Geometry スーパークラスをインスタンス化することはできませんが、列を ST_Geometry タイプとして定義することができます。この列に挿入される実際のデータは、ポイント、ラインストリング、ポリゴン、マルチポイント、マルチラインストリング、またはマルチポリゴンのいずれかのエンティティとして定義します。
以下の関数を使用して、前述したエンティティ タイプのうちのいずれかを保持するスーパークラスを作成できます。
- ST_Geometry
- ST_GeomFromShape(PostgreSQL のみ)
- ST_GeomFromText(Oracle および SQLite のみ)
- ST_GeomFromWKB
サブクラス
フィーチャを特定のサブクラスとして定義できます。そのサブクラスで許可されているエンティティ タイプのみを挿入できます。たとえば、ST_PointFromWKB は、ポイント エンティティのみを作成できます。
ST_Point
ST_Point は、座標空間で場所を 1 つ占有する 0 次元のジオメトリです。ST_Point には XY 座標値が 1 つあり、常にシンプルであり、境界は NULL です。ST_Point は、油田、建造物、水質調査サイトといったフィーチャを定義するために使用されます。
ポイントを作成する関数を、以下に示します。
- ST_Point
- ST_PointFromShape(PostgreSQL のみ)
- ST_PointFromText(Oracle および SQLite のみ)
- ST_PointFromWKB
ST_MultiPoint
ST_MultiPoint は ST_Point のコレクションであり、そのエレメントと同様にディメンションは 0 です。同じ座標空間を占めるエレメントがない場合、ST_MultiPoin はシンプルです。ST_MultiPoint の境界は NULL です。ST_MultiPoint は、地上波パターンや感染症の発生ポイントなどを定義するために使用されます。
マルチポイント ジオメトリを作成する関数を、以下に示します。
- ST_MultiPoint
- ST_MPointFromShape(PostgreSQL のみ)
- ST_MPointFromText(Oracle のみ)
- ST_MPointFromWKB
ST_LineString
ST_LineString は、線形補間されたパスを定義する連続したポイントとして格納される 1 次元オブジェクトです。ST_LineString はその内部と交わっていなければシンプルです。閉じた ST_LineString の端点(境界)は、空間内の同じポイントを占めます。ST_LineString は閉じていてシンプルである場合はリングです。ST_LineString は ST_Geometry スーパークラスから複数のプロパティを継承しており、その中には長さがあります。ST_LineString は、道路、河川、電線などの線形フィーチャを定義するためによく使用されます。
端点は、ST_LineString が閉じていなければ、通常は ST_LineString の境界を形成します。ST_LineString が閉じていれば、境界は NULL です。ST_LineString の内部は、閉じていなければ端点間を結ぶパスであり、閉じている場合は内部が連続しています。
ラインストリングを作成する関数を以下に示します。
- ST_LineString
- ST_LineFromShape(PostgreSQL のみ)
- ST_LineFromText(Oracle および SQLite のみ)
- ST_LineFromWKB
- ST_Curve(Oracle および SQLite のみ)
ST_MultiLineString
ST_MultiLineString は、ST_LineString のコレクションです。
ST_MultiLineString の境界は、ST_LineString エレメントの交差していない端点です。ST_MultiLineString のすべてのエレメントのすべての端点が交差している場合、ST_MultiLineString の境界は NULL です。ST_Geometry スーパークラスから継承される他のプロパティに加えて、ST_MultiLineString には長さがあります。ST_MultiLineString は、河川や道路網など、連続していないライン フィーチャを定義するために使用されます。
マルチラインストリングを作成する関数を、以下に示します。
- ST_MultiLineString
- ST_MLineFromShape(PostgreSQL のみ)
- ST_MLineFromText(Oracle および SQLite のみ)
- ST_MLineFromWKB
- ST_MultiCurve(Oracle のみ)
ST_Polygon
ST_Polygon は、一連のポイントとして格納される 2 次元サーフェスであり、外部の境界リングと 0 個以上の内部リングを定義します。ST_Polygon は常にシンプルです。ST_Polygon は、土地区画、水域、行政区域など、空間的な範囲を持つフィーチャを定義します。
次の図は、ST_Polygon オブジェクトの例を示しています。(1) は境界が外部リングによって定義される ST_Polygon です。(2) は境界が外部リングと 2 つの内部リングによって定義される ST_Polygon です。内部リングの内側にある領域は、ST_Polygon の外部の一部です。(3) は、リングが 1 つの接点で交わっているので、有効な ST_Polygon です。
外部リングと内部リングは ST_Polygon の境界を定義し、リング間で囲まれた空間は ST_Polygon の内部を定義します。ST_Polygon のリングは接点で交わる場合がありますが、決して交差しません。ST_Geometry スーパークラスから継承される他のプロパティに加えて、ST_Polygon には面積があります。
ポリゴンを作成する関数を以下に示します。
- ST_Polygon
- ST_PolyFromShape(PostgreSQL のみ)
- ST_PolyFromText(Oracle および SQLite のみ)
- ST_PolyFromWKB
- ST_Surface(Oracle および SQLite のみ)
ST_MultiPolygon
ST_MultiPolygon の境界は、そのエレメントの外部リングと内部リングの長さを累積したものです。ST_MultiPolygon の内部は、そのエレメントである ST_Polygon の内郭を累積したものとして定義されます。ST_MultiPolygon のエレメントの境界は接点でのみ交わる場合があります。ST_Geometry スーパークラスから継承される他のプロパティに加えて、ST_MultiPolygon には面積があります。ST_MultiPolygon は、森林地帯や太平洋諸島のような連続していない空間的な範囲を持つフィーチャを定義します。
次の図は、ST_MultiPolygon の例を示しています。(1)は 2 つの ST_Polygon エレメントからなる ST_MultiPolygon です。境界は 2 つの外部リングと 3 つの内部リングによって定義されます。(2)は 2 つの ST_Polygon エレメントからなる ST_MultiPolygon です。境界は 2 つの外部リングと 2 つの内部リングによって定義されます。2 つの ST_Polygon エレメントは接点で交わっています。
マルチポリゴンを作成する関数を以下に示します。
- ST_MultiPolygon
- ST_MPolyFromShape(PostgreSQL のみ)
- ST_MPolyFromText(Oracle および SQLite のみ)
- ST_MPolyFromWKB
- ST_MultiSurface(Oracle のみ)