MySQL 8.0 リファレンスマニュアル


11.4.1 空間データ型

MySQL には、OpenGIS クラスに対応する空間データ型があります。 これらのタイプの基礎は、セクション11.4.2「OpenGIS ジオメトリモデル」 で説明されています。

空間データ型の中には、単一のジオメトリ値を保持するものがあります:

  • GEOMETRY

  • POINT

  • LINESTRING

  • POLYGON

GEOMETRY にはどの型のジオメトリ値でも格納できます。 その他の単一値型 (POINTLINESTRING、および POLYGON) では、特定のジオメトリ型に値が制限されます。

他の空間データ型には、次の値のコレクションが保持されます:

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

GEOMETRYCOLLECTION には、任意の型のオブジェクトのコレクションを格納できます。 他のコレクション型 (MULTIPOINTMULTILINESTRING および MULTIPOLYGON) では、コレクションメンバーは特定のジオメトリタイプを持つメンバーに制限されます。

例: 任意のジオメトリタイプの値を格納できる g という名前のカラムを持つ geom という名前のテーブルを作成するには、次のステートメントを使用します:

CREATE TABLE geom (g GEOMETRY);

空間データ型のカラムには、カラムに格納されている値の空間参照システム (SRS) を明示的に示す SRID 属性を指定できます。 例:

CREATE TABLE geom (
    p POINT SRID 0,
    g GEOMETRY NOT NULL SRID 4326
);

SPATIAL インデックスは、NOT NULL で特定の SRID を持つ空間カラムに作成できるため、そのカラムをインデックス付けする場合は、NOT NULL および SRID 属性を使用して宣言します:

CREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326);

InnoDB テーブルでは、デカルトおよび地理的 SRS の SRID 値が許可されます。 MyISAM テーブルでは、デカルト SRS の SRID 値が許可されます。

SRID 属性を使用すると、空間カラム SRID が制限され、次のような影響があります:

  • カラムには、指定した SRID の値のみを含めることができます。 SRID が異なる値を挿入しようとすると、エラーが発生します。

  • オプティマイザは、カラムにつけられた SPATIAL インデックスを使用できます。 セクション8.3.3「SPATIAL インデックス最適化」を参照してください。

SRID 属性のない空間カラムは、SRID に制限されず、SRID の値を受け入れます。 ただし、オプティマイザは、カラム定義が SRID 属性を含むように変更されるまで、SPATIAL インデックスを使用できません。これには、すべての値が同じ SRID を持つように、最初にカラムの内容を変更する必要がある場合があります。

MySQL で空間データ型を使用する方法を示すその他の例は、セクション11.4.6「空間カラムの作成」 を参照してください。 空間参照システムの詳細は、セクション11.4.5「空間参照システムのサポート」 を参照してください。


関連キーワード:  空間, カラム, SRID, クラス, リファレンス, 参照, 属性, インデックス, マニュアル, 数値