# 12.17.7.2 点属性函数

一种观点由 X 和 Y 坐标组成,可以使用ST_X()ST_Y()功能,分别。这些函数还允许可选的第二个参数指定 X 或 Y 坐标值,在这种情况下,函数结果是观点来自第一个参数的对象,将适当的坐标修改为等于第二个参数。

为了观点具有地理空间参考系统 (SRS) 的对象,可以使用ST_经度()ST_Latitude()功能,分别。这些函数还允许可选的第二个参数指定经度或纬度值,在这种情况下,函数结果是观点来自第一个参数的对象,其经度或纬度修改为等于第二个参数。

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

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

  • 如果任何几何参数是有效几何但不是观点对象,一个ER_UNEXPECTED_GEOMETRY_TYPE (opens new window)发生错误。

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

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

  • 如果提供了 X 或 Y 坐标参数并且值为-inf, +信息, 要么, 一个ER_DATA_OUT_OF_RANGE (opens new window)发生错误。

  • 如果经度或纬度值超出范围,则会发生错误:

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

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

  • ST_纬度(*p* [, *new_latitude_val*])

    用一个参数表示一个有效的观点目的*p具有地理空间参考系统 (SRS),ST_Latitude()返回纬度值p*作为双精度数。

    使用表示有效纬度值的可选第二个参数,ST_Latitude()返回一个观点像第一个参数一样的对象,其纬度等于第二个参数。

    ST_Latitude()如本节介绍中所述处理其参数,此外,如果观点对象有效但没有地理 SRS,ER_SRS_NOT_GEOGRAPHIC (opens new window)发生错误。

    mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326);
    mysql> SELECT ST_Latitude(@pt);
    +------------------+
    | ST_Latitude(@pt) |
    +------------------+
    |               45 |
    +------------------+
    mysql> SELECT ST_AsText(ST_Latitude(@pt, 10));
    +---------------------------------+
    | ST_AsText(ST_Latitude(@pt, 10)) |
    +---------------------------------+
    | POINT(10 90)                    |
    +---------------------------------+
    

    此功能是在 MySQL 8.0.12 中添加的。

  • ST_经度(*p* [, *new_longitude_val*])

    用一个参数表示一个有效的观点目的*p具有地理空间参考系统 (SRS),ST_经度()返回的经度值p*作为双精度数。

    使用可选的第二个参数表示有效的经度值,ST_经度()返回一个观点像第一个参数一样的对象,其经度等于第二个参数。

    ST_经度()如本节介绍中所述处理其参数,此外,如果观点对象有效但没有地理 SRS,ER_SRS_NOT_GEOGRAPHIC (opens new window)发生错误。

    mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326);
    mysql> SELECT ST_Longitude(@pt);
    +-------------------+
    | ST_Longitude(@pt) |
    +-------------------+
    |                90 |
    +-------------------+
    mysql> SELECT ST_AsText(ST_Longitude(@pt, 10));
    +----------------------------------+
    | ST_AsText(ST_Longitude(@pt, 10)) |
    +----------------------------------+
    | POINT(45 10)                     |
    +----------------------------------+
    

    此功能是在 MySQL 8.0.12 中添加的。

  • ST_X(*p* [, *new_x_val*])

    用一个参数表示一个有效的观点目的*p,ST_X()返回 X 坐标值p*作为双精度数。从 MySQL 8.0.12 开始,X 坐标被认为是指第一个出现在观点空间参考系统 (SRS) 定义。

    使用可选的第二个参数,ST_X()返回一个观点对象类似于第一个参数,其 X 坐标等于第二个参数。从 MySQL 8.0.12 开始,如果观点对象具有地理 SRS,第二个参数必须在经度或纬度值的适当范围内。

    ST_X()如本节介绍中所述处理其参数。

    mysql> SELECT ST_X(Point(56.7, 53.34));
    +--------------------------+
    | ST_X(Point(56.7, 53.34)) |
    +--------------------------+
    |                     56.7 |
    +--------------------------+
    mysql> SELECT ST_AsText(ST_X(Point(56.7, 53.34), 10.5));
    +-------------------------------------------+
    | ST_AsText(ST_X(Point(56.7, 53.34), 10.5)) |
    +-------------------------------------------+
    | POINT(10.5 53.34)                         |
    +-------------------------------------------+
    
  • ST_Y(*p* [, *new_y_val*])

    用一个参数表示一个有效的观点目的*p,ST_Y()返回 Y 坐标值p*作为双精度数。从 MySQL 8.0.12 开始,Y 坐标被认为是指出现在观点空间参考系统 (SRS) 定义。

    使用可选的第二个参数,ST_Y()返回一个观点像第一个参数一样的对象,其 Y 坐标等于第二个参数。从 MySQL 8.0.12 开始,如果观点对象具有地理 SRS,第二个参数必须在经度或纬度值的适当范围内。

    ST_Y()如本节介绍中所述处理其参数。

    mysql> SELECT ST_Y(Point(56.7, 53.34));
    +--------------------------+
    | ST_Y(Point(56.7, 53.34)) |
    +--------------------------+
    |                    53.34 |
    +--------------------------+
    mysql> SELECT ST_AsText(ST_Y(Point(56.7, 53.34), 10.5));
    +-------------------------------------------+
    | ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)) |
    +-------------------------------------------+
    | POINT(56.7 10.5)                          |
    +-------------------------------------------+