ST_Geometry 格納タイプとは

ST_Geometry データ タイプは、空間データを格納する列を定義できる UDT(ユーザ定義データ タイプ)です。

ST_Geometry 自体は、インスタンス化できない抽象スーパークラスです。ただし、そのサブクラスはインスタンス化することができます。インスタンス化されたデータ タイプはテーブルの列として定義することができ、その他の値を挿入することができます。

列を ST_Geometry タイプとして定義することはできますが、インスタンス化することができないため ST_Geometry の値は挿入しません。代わりに、サブクラスの値を挿入します。

次の図は、ST_Geometry データ タイプとそのサブクラスの階層を示しています。ST_Curve、ST_Surface、ST_MultiCurve、および ST_MultiSurface は、インスタンス化できないタイプとして定義されています。これらのタイプにコンストラクタは定義されていません。

ST_Geometry
ST_Geometry スーパークラスとそのサブクラス

サブクラス

ST_Geometry のサブクラスは、ベース ジオメトリ サブクラスと同種コレクション サブクラスの 2 つのカテゴリに分類されます。ベース ジオメトリには、ST_Point、ST_LineString、ST_Polygon が含まれ、同種コレクションには、ST_MultiPoint、ST_MultiLineString、ST_MultiPolygon が含まれます。名前が示しているように、同種コレクションはベース ジオメトリのコレクションです。同種コレクションでは、ベース ジオメトリのプロパティを共有することに加えて、独自のプロパティを持つこともできます。

各サブクラスは、その名前が示唆するジオメトリ タイプを格納します。たとえば、ST_MultiPoint はマルチポイントを格納します。各サブクラスには、サブクラスに関する情報を返す特定の関数があります。次の表に、サブクラスの概要、それらの説明、サブクラスに関する情報を取得するために使用できる関数の例をまとめます。

サブタイプ

説明

サブタイプで使用する関数

ST_Point

  • 座標空間で場所を 1 つ占有する 0 次元のジオメトリ。
  • XY 座標値が 1 つあり、常にシンプルであり、境界は NULL です。
  • 油田、建造物、標高点などのフィーチャを定義するために使用されます。

  • ST_X は、ポイントの X 座標値を倍精度数値として返します。
  • ST_Y は、ポイントの Y 座標値を倍精度数値として返します。
  • ST_Z は、ポイントの Z 座標値を倍精度数値として返します。
  • ST_M は、ポイントの M 座標値を倍精度数値として返します。

ST_LineString

  • 線形に補間されたパスを定義するポイント列として格納される 1 次元オブジェクト。
  • ST_LineString には長さがあります。
  • ST_LineString はその内部と交わっていなければシンプルです。
  • 閉じた ST_LineString の端点(境界)は、空間内の同じポイントを占めます。
  • ST_LineString は閉じていてシンプルである場合はリングです。
  • 端点は、ST_LineString が閉じていなければ、通常は ST_LineString の境界を形成します。ST_LineString が閉じていれば、境界は NULL です。
  • ST_LineString の内部は、閉じていなければ端点間を結ぶパスであり、閉じている場合は内部が連続しています。
  • ST_LineString は、道路、河川、電線などの線形フィーチャを定義するためによく使用されます。

  • ST_StartPoint は、ラインストリングの最初のポイントを返します。
  • ST_EndPoint は、ラインストリングの最後のポイントを返します。
  • ST_PointN は、ラインストリングと n 番目のポイントへのインデックスを受け取り、そのポイントを返します。
  • ST_Length は、ラインストリングの長さを倍精度数値として返します。
  • ST_NumPoints は、ラインストリングのポイントの数を整数として返します。
  • ST_IsRing は、ラインストリングがリングの場合は 1(TRUE)を返し、リングでない場合は 0(FALSE)を返します。
  • ST_IsClosed は、ラインストリングが閉じている場合は 1(TRUE)を返し、閉じていない場合は 0(FALSE)を返します。

ST_Polygon

  • 一連のポイントとして格納される 2D サーフェスであり、外部の境界リングと 0 個以上の内部リングを定義します。
  • ST_Polygon には面積があり、常にシンプルです。
  • 外部リングと内部リングは ST_Polygon の境界を定義し、リング間で囲まれた空間は ST_Polygon の内部を定義します。
  • ST_Polygon のリングは接点で交わる場合がありますが、決して交差しません。
  • 土地区画、水域、その他の空間的な範囲を持つフィーチャを定義します。

  • ST_Area は、ポリゴンの面積を倍精度数値として返します。
  • ST_ExteriorRing は、ポリゴンの外部リングをラインストリングとして返します。
  • ST_NumInteriorRing は、ポリゴンに含まれている内部リングの数を返します。
  • ST_InteriorRingN は、ポリゴンとインデックスを受け取り、n 番目の内部リングをラインストリングとして返します。
  • ST_Centroid は、ポリゴンのエンベロープの中心であるポイントを返します。
  • ST_PointOnSurface は、ポリゴンのサーフェス上にあることが保証されるポイントを返します。

ST_MultiPoint

  • ST_Point のコレクション。
  • ディメンションは 0 です。
  • ST_MultiPoint は、同じ座標空間を占めるエレメントが 1 つもなければ、シンプルです。
  • ST_MultiPoint の境界は NULL です。
  • ST_MultiPoint は、地上波パターンや感染症の発生ポイントなどのフィーチャを定義するために使用されます。

ST_MultiLineString

  • ST_LineString のコレクション。
  • ST_MultiLineString には長さがあります。
  • ST_MultiLineString は、ST_LineString エレメントの端点でのみ交わる場合はシンプルです。
  • ST_LineString エレメントの内部が交差している場合、ST_MultiLineString はシンプルではありません。
  • ST_MultiLineString の境界は、ST_LineString エレメントの交差していない端点です。
  • ST_MultiLineString が閉じているのは、すべての ST_LineString エレメントが閉じている場合です。
  • ST_MultiLineString のすべてのエレメントのすべての端点が交差している場合、ST_MultiLineString の境界は NULL です。
  • 河川や道路網などのエンティティの定義に使用されます。

  • ST_Length は、マルチラインストリングのすべての ST_LineString エレメントの長さを合計した値を倍精度数値として返します。
  • ST_IsClosed は、マルチラインストリングが閉じている場合は 1(TRUE)を返し、閉じていない場合は 0(FALSE)を返します。

ST_MultiPolygon

  • ポリゴンのコレクション。
  • ST_MultiPolygon には面積があります。
  • ST_MultiPolygon の境界は、そのエレメントの外部リングと内部リングの長さを累積したものです。
  • ST_MultiPolygon の内部は、そのエレメントである ST_Polygon の長さを累積したものとして定義されます。
  • ST_MultiPolygon のエレメントの境界は接点でのみ交わる場合があります。
  • 森林地帯や太平洋諸島のような連続していない空間的な範囲を持つフィーチャを定義します。

  • ST_Area は、マルチポリゴンのポリゴン エレメントの ST_Area を累積した値を倍精度数値として返します。
  • ST_Centroid は、マルチポリゴンのエンベロープの中心であるポイントを返します。
  • ST_PointOnSurface は、マルチポリゴンのいずれかのポリゴン エレメントのサーフェス上にあることが保証されるポイントを返します。

ST_Geometry サブタイプ

各サブクラスは ST_Geometry スーパークラスのプロパティを継承しますが、サブタイプ固有のプロパティもあります。ST_Geometry データ タイプで使用できる関数は、サブクラス データ タイプでも使用できます。ただし、一部の関数はサブクラス レベルで定義されており、特定のサブクラスにしか対応しません。たとえば、ST_GeometryN 関数には、引数として ST_MultiLinestring、ST_MultiPoint、ST_MultiPolygon サブタイプのみを渡すことができます。

ST_Geometry のサブクラスを検出するには、ST_GeometryType 関数を使用できます。ST_GeometryType 関数は、ST_Geometry を受け取り、インスタンス化されたサブクラスを文字列形式で返します。同種コレクションに含まれているベース ジオメトリ エレメントの数を取得するには、ST_NumGeometries 関数を使用できます。この関数は、同種コレクションを受け取り、コレクションに含まれているベース ジオメトリ エレメントの数を返します。


7/10/2012