MySQL 具有對應於 OpenGIS 類別的空間資料類型。這些類型的基礎在 第 13.4.2 節,「OpenGIS 幾何模型」中描述。
有些空間資料類型保存單一幾何值
GEOMETRY
POINT
LINESTRING
POLYGON
GEOMETRY
可以儲存任何類型的幾何值。其他單一值類型(POINT
、LINESTRING
和 POLYGON
)將其值限制為特定幾何類型。
其他空間資料類型保存值的集合
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
GEOMETRYCOLLECTION
可以儲存任何類型的物件集合。其他集合類型(MULTIPOINT
、MULTILINESTRING
和 MULTIPOLYGON
)將集合成員限制為具有特定幾何類型的成員。
範例:若要建立一個名為 geom
的表格,其中包含一個名為 g
的欄位,該欄位可以儲存任何幾何類型的值,請使用此陳述式
CREATE TABLE geom (g GEOMETRY);
具有空間資料類型的欄位可以具有 SRID
屬性,以明確指出儲存在欄位中的值的空間參考系統 (SRS)。例如
CREATE TABLE geom (
p POINT SRID 0,
g GEOMETRY NOT NULL SRID 4326
);
如果空間欄位為 NOT NULL
且具有特定的 SRID,則可以在空間欄位上建立 SPATIAL
索引,因此,如果您計劃為欄位建立索引,請使用 NOT NULL
和 SRID
屬性宣告該欄位
CREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326);
InnoDB
表格允許笛卡爾和地理 SRS 的 SRID
值。MyISAM
表格允許笛卡爾 SRS 的 SRID
值。
SRID
屬性會使空間欄位受到 SRID 限制,這具有以下含義
該欄位只能包含具有指定 SRID 的值。嘗試插入具有不同 SRID 的值會產生錯誤。
最佳化工具可以使用該欄位上的
SPATIAL
索引。請參閱 第 10.3.3 節,「SPATIAL 索引最佳化」。
沒有 SRID
屬性的空間欄位不受 SRID 限制,並且接受具有任何 SRID 的值。但是,在修改欄位定義以包含 SRID
屬性之前,最佳化工具無法在它們上使用 SPATIAL
索引,這可能需要先修改欄位內容,使所有值都具有相同的 SRID。
如需其他範例說明如何在 MySQL 中使用空間資料類型,請參閱第 13.4.6 節,「建立空間欄」。如需空間參考系統的相關資訊,請參閱第 13.4.5 節,「空間參考系統支援」。