• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 空间数据类型

    MySQL具有与OpenGIS类相对应的空间数据类型。“ OpenGIS几何模型”中介绍了这些类型的基础。

    一些空间数据类型包含单个几何值:

    • GEOMETRY
    • POINT
    • LINESTRING
    • POLYGON

    GEOMETRY可以存储任何类型的几何值。其他单值类型(POINTLINESTRINGPOLYGON)将其值限制为特定的几何类型。

    其他空间数据类型包含值的集合:

    • MULTIPOINT
    • MULTILINESTRING
    • MULTIPOLYGON
    • GEOMETRYCOLLECTION

    GEOMETRYCOLLECTION可以存储任何类型的对象的集合。其他集合类型(MULTIPOINTMULTILINESTRINGMULTIPOLYGON)将集合成员限制为具有特定几何类型的成员。

    示例:要创建一个名为table的表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 NULLSRID属性对其进行声明:

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

    InnoDB表允许SRID使用笛卡尔和地理SRS的值。MyISAM表允许SRID使用笛卡尔SRS的值。

    SRID属性使空间列受SRID限制,这具有以下含义:

    • 该列只能包含具有给定SRID的值。尝试使用其他SRID插入值会产生错误。
    • 优化器可以SPATIAL在列上使用索引。请参见“空间索引优化”。

    没有SRID属性的空间列不受SRID限制,并接受具有任何SRID的值。但是,在SPATIAL修改列定义以包含SRID属性之前,优化器无法在其上使用索引,这可能需要先修改列内容,以便所有值都具有相同的SRID。

    有关显示如何在MySQL中使用空间数据类型的其他示例,请参见“创建空间列”。有关空间参考系统的信息,请参见“空间参考系统支持”。