MySQL には、OpenGIS クラスに対応する空間データ型があります。 これらのタイプの基礎は、セクション11.4.2「OpenGIS ジオメトリモデル」 で説明されています。
空間データ型の中には、単一のジオメトリ値を保持するものがあります:
GEOMETRY
POINT
LINESTRING
POLYGON
GEOMETRY
にはどの型のジオメトリ値でも格納できます。 その他の単一値型 (POINT
、LINESTRING
、および POLYGON
) では、特定のジオメトリ型に値が制限されます。
他の空間データ型には、次の値のコレクションが保持されます:
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
GEOMETRYCOLLECTION
には、任意の型のオブジェクトのコレクションを格納できます。 他のコレクション型 (MULTIPOINT
、MULTILINESTRING
および 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「空間参照システムのサポート」 を参照してください。