# 12.17.7.1 通用几何属性函数

本节中列出的函数不限制其参数并接受任何类型的几何值。

除非另有说明,本节中的函数按如下方式处理其几何参数:

  • 如果有任何论据空值,返回值为空值.

  • 如果任何几何参数不是语法上格式良好的几何,则ER_GIS_INVALID_DATA (opens new window)发生错误。

  • 如果任何几何参数是未定义的空间参考系统 (SRS) 中的语法结构良好的几何,则ER_SRS_NOT_FOUND (opens new window)发生错误。

  • 如果任何 SRID 参数不在 32 位无符号整数的范围内,则ER_DATA_OUT_OF_RANGE (opens new window)发生错误。

  • 如果任何 SRID 参数引用未定义的 SRS,则ER_SRS_NOT_FOUND (opens new window)发生错误。

  • 否则,返回值为非空值.

    这些函数可用于获取几何属性:

  • ST_Dimension(*g*)

    返回几何值的固有尺寸*g*.尺寸可以是−1、0、1或2。这些值的含义在中给出第11.4.2.2节,“几何类”.

    ST_维度()按照本节引言中所述处理其参数。

    mysql> SELECT ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)'));
    +------------------------------------------------------+
    | ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)')) |
    +------------------------------------------------------+
    |                                                    1 |
    +------------------------------------------------------+
    
  • ST_信封(*g*)

    返回几何体值的最小边界矩形(MBR)g。结果以多边形由边界框的角点定义的值:

    POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
    
    mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)')));
    +----------------------------------------------------------------+
    | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)'))) |
    +----------------------------------------------------------------+
    | POLYGON((1 1,2 1,2 2,1 2,1 1))                                 |
    +----------------------------------------------------------------+
    

    如果参数是一个点或垂直或水平线段,ST_信封()返回点或线段作为其MBR,而不是返回无效多边形:

    mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)')));
    +----------------------------------------------------------------+
    | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)'))) |
    +----------------------------------------------------------------+
    | LINESTRING(1 1,1 2)                                            |
    +----------------------------------------------------------------+
    

    ST_信封()按照本节引言中所述处理其参数,但以下情况除外:

  • ST_GeometryType(*g*)

    返回一个二进制字符串,该字符串指示几何体实例所属的几何体类型的名称*g*他是会员。该名称对应于一个实例几何学子类。

    ST_GeometryType()按照本节引言中所述处理其参数。

    mysql> SELECT ST_GeometryType(ST_GeomFromText('POINT(1 1)'));
    +------------------------------------------------+
    | ST_GeometryType(ST_GeomFromText('POINT(1 1)')) |
    +------------------------------------------------+
    | POINT                                          |
    +------------------------------------------------+
    
  • 圣伊斯坦蒂(*g*)

    此函数是一个占位符,为空几何图形集合值返回1,否则返回0。

    唯一有效的空几何图形以空几何图形集合值的形式表示。MySQL不支持GIS空的价值观,比如点空.

    圣伊斯坦蒂(ST_IsEmpty)按照本节引言中所述处理其参数。

  • ST_IsSimple(*g*)

    如果几何体值为0,则返回1*g根据国际标准化组织的规定,这很简单SQL/MM第3部分:空间*标准ST_IsSimple()如果参数不简单,则返回0。

    下给出的可实例化几何类的描述第11.4.2节,“OpenGIS几何模型”包括导致类实例被归类为不简单的特定条件。

    ST_IsSimple()按照本节引言中所述处理其参数,但以下情况除外:

  • 圣斯里德(*g* [, *srid*])

    使用一个表示有效几何体对象的参数*g, ST_SRID()返回一个整数,该整数指示与相关联的空间参考系统(SRS)的IDg*.

    使用表示有效SRID值的可选第二个参数,ST_SRID()返回与第一个参数类型相同的对象,其SRID值等于第二个参数。这仅设置对象的SRID值;它不执行坐标值的任何转换。

    ST_SRID()按照本节引言中所述处理其参数,但以下情况除外:

    圣斯里德(*g*, *目标_srid*)ST_变换(*g*, *目标_srid*)不同之处如下:

    mysql> SET @g = ST_GeomFromText('LineString(1 1,2 2)', 0);
    mysql> SELECT ST_SRID(@g);
    +-------------+
    | ST_SRID(@g) |
    +-------------+
    |           0 |
    +-------------+
    mysql> SET @g = ST_SRID(@g, 4326);
    mysql> SELECT ST_SRID(@g);
    +-------------+
    | ST_SRID(@g) |
    +-------------+
    |        4326 |
    +-------------+
    

    通过传递到,可以在特定SRID中创建几何图形ST_SRID()用于创建空间值的MySQL特定函数之一的结果,以及一个SRID值。例如:

    SET @g1 = ST_SRID(Point(1, 1), 4326);
    

    但是,该方法在SRID 0中创建几何体,然后将其强制转换为SRID 4326(WGS 84)。一个更好的选择是,首先使用正确的空间参照系创建几何体。例如:

    SET @g1 = ST_PointFromText('POINT(1 1)', 4326);
    SET @g1 = ST_GeomFromText('POINT(1 1)', 4326);
    

    双参数形式ST_SRID()对于纠正或更改SRID不正确的几何图形的SRS等任务非常有用。