MySQL 具有对应于 OpenGIS 类的空间数据类型。第 11.4.2 节“OpenGIS 几何模型”中描述了这些类型的基础 。
一些空间数据类型包含单个几何值:
GEOMETRYPOINTLINESTRINGPOLYGON
GEOMETRY可以存储任何类型的几何值。其他单值类型(POINT、 LINESTRING和POLYGON)将它们的值限制为特定的几何类型。
其他空间数据类型包含值的集合:
MULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTION
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
);
SPATIAL如果空间列具有NOT NULL并且具有特定的 SRID,则可以在空间列上创建索引,因此,如果您计划对列进行索引,请使用NOT NULLandSRID 属性声明它:
CREATE TABLE geom (g GEOMETRY NOT NULL SRID 4326);
InnoDB表允许SRID 笛卡尔和地理 SRS 的值。 MyISAM表允许SRID 笛卡尔 SRS 的值。
该SRID属性使空间列受 SRID 限制,这具有以下含义:
- 该列只能包含具有给定 SRID 的值。尝试插入具有不同 SRID 的值会产生错误。
- 优化器可以
SPATIAL在列上使用索引。请参阅 第 8.3.3 节,“空间索引优化”。
没有SRID属性的空间列不受 SRID 限制,并接受具有任何 SRID 的值。但是,在SPATIAL修改列定义以包含一个SRID属性之前,优化器不能对它们使用索引 ,这可能需要首先修改列内容,以便所有值都具有相同的 SRID。
有关如何在 MySQL 中使用空间数据类型的其他示例,请参阅第 11.4.6 节,“创建空间列”。有关空间参考系统的信息,请参阅 第 11.4.5 节,“空间参考系统支持”。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




