ST_Geometry 格納タイプとは
ST_Geometry データ タイプは、空間データを格納する列を定義できる UDT(ユーザ定義データ タイプ)です。
ST_Geometry 自体は、インスタンス化できない抽象スーパークラスです。ただし、そのサブクラスはインスタンス化することができます。インスタンス化されたデータ タイプはテーブルの列として定義することができ、その他の値を挿入することができます。
列を ST_Geometry タイプとして定義することはできますが、インスタンス化することができないため ST_Geometry の値は挿入しません。代わりに、サブクラスの値を挿入します。
次の図は、ST_Geometry データ タイプとそのサブクラスの階層を示しています。
サブクラス
ST_Geometry のサブクラスは、ベース ジオメトリ サブクラスと同種コレクション サブクラスの 2 つのカテゴリに分類されます。ベース ジオメトリには、ST_Point、ST_LineString、ST_Polygon が含まれ、同種コレクションには、ST_MultiPoint、ST_MultiLineString、ST_MultiPolygon が含まれます。名前が示しているように、同種コレクションはベース ジオメトリのコレクションです。同種コレクションでは、ベース ジオメトリのプロパティを共有することに加えて、独自のプロパティを持つこともできます。
各サブクラスは、その名前が示唆するジオメトリ タイプを格納します。たとえば、ST_MultiPoint はマルチポイントを格納します。以下の表に、サブクラスの一覧とそれらについての説明を示します。
サブタイプ |
説明 |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
各サブクラスは ST_Geometry スーパークラスのプロパティを継承しますが、サブタイプ固有のプロパティもあります。ST_Geometry データ タイプで使用できる関数は、サブクラス エンティティ タイプでも使用できます。ただし、一部の関数はサブクラス レベルで定義されており、特定のサブクラスにしか対応しません。たとえば、ST_GeometryN 関数には、引数として ST_MultiLinestring、ST_MultiPoint、ST_MultiPolygon サブタイプのみを渡すことができます。
ST_Geometry のサブクラスを検出するには、ST_GeometryType 関数を使用できます。ST_GeometryType 関数は、ST_Geometry を受け取り、インスタンス化されたサブクラスを文字列形式で返します。同種コレクションに含まれているベース ジオメトリ エレメントの数を取得するには、ST_NumGeometries 関数を使用できます。この関数は、同種コレクションを受け取り、コレクションに含まれているベース ジオメトリ エレメントの数を返します。