#### 12.17.7.2 点属性函数

一种`观点`由 X 和 Y 坐标组成，可以使用[`ST_X()`](gis-point-property-functions.html#function_st-x)和[`ST_Y()`](gis-point-property-functions.html#function_st-y)功能，分别。这些函数还允许可选的第二个参数指定 X 或 Y 坐标值，在这种情况下，函数结果是`观点`来自第一个参数的对象，将适当的坐标修改为等于第二个参数。

为了`观点`具有地理空间参考系统 (SRS) 的对象，可以使用[`ST_经度（）`](gis-point-property-functions.html#function_st-longitude)和[`ST_Latitude()`](gis-point-property-functions.html#function_st-latitude)功能，分别。这些函数还允许可选的第二个参数指定经度或纬度值，在这种情况下，函数结果是`观点`来自第一个参数的对象，其经度或纬度修改为等于第二个参数。

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

-   如果有任何论据`空值`，返回值为`空值`.

-   如果任何几何参数是有效几何但不是`观点`对象，一个[`ER_UNEXPECTED_GEOMETRY_TYPE`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_unexpected_geometry_type)发生错误。

-   如果任何几何参数不是语法上格式良好的几何，则[`ER_GIS_INVALID_DATA`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_gis_invalid_data)发生错误。

-   如果任何几何参数是未定义的空间参考系统 (SRS) 中的语法结构良好的几何，则[`ER_SRS_NOT_FOUND`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_srs_not_found)发生错误。

-   如果提供了 X 或 Y 坐标参数并且值为`-inf`, `+信息`， 要么`钠`， 一个[`ER_DATA_OUT_OF_RANGE`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_data_out_of_range)发生错误。

-   如果经度或纬度值超出范围，则会发生错误：

    -   如果经度值不在 (−180, 180] 范围内，则[`ER_LONGITUDE_OUT_OF_RANGE`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_longitude_out_of_range)发生错误。

    -   如果纬度值不在范围内[−90, 90]， 一个[`ER_LATITUDE_OUT_OF_RANGE`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_latitude_out_of_range)发生错误。

        显示的范围以度为单位。由于浮点运算，确切的范围限制略有偏差。

-   否则，返回值为非`空值`.

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

-   [](<>)

    [`ST_纬度(*`p`* [, *`new_latitude_val`*])`](gis-point-property-functions.html#function_st-latitude)

    [](<>)

    用一个参数表示一个有效的`观点`目的*`p`*具有地理空间参考系统 (SRS)，[`ST_Latitude()`](gis-point-property-functions.html#function_st-latitude)返回纬度值*`p`*作为双精度数。

    使用表示有效纬度值的可选第二个参数，[`ST_Latitude()`](gis-point-property-functions.html#function_st-latitude)返回一个`观点`像第一个参数一样的对象，其纬度等于第二个参数。

    [`ST_Latitude()`](gis-point-property-functions.html#function_st-latitude)如本节介绍中所述处理其参数，此外，如果`观点`对象有效但没有地理 SRS，[`ER_SRS_NOT_GEOGRAPHIC`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_srs_not_geographic)发生错误。

    ```
    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`*])`](gis-point-property-functions.html#function_st-longitude)

    [](<>)

    用一个参数表示一个有效的`观点`目的*`p`*具有地理空间参考系统 (SRS)，[`ST_经度（）`](gis-point-property-functions.html#function_st-longitude)返回的经度值*`p`*作为双精度数。

    使用可选的第二个参数表示有效的经度值，[`ST_经度（）`](gis-point-property-functions.html#function_st-longitude)返回一个`观点`像第一个参数一样的对象，其经度等于第二个参数。

    [`ST_经度（）`](gis-point-property-functions.html#function_st-longitude)如本节介绍中所述处理其参数，此外，如果`观点`对象有效但没有地理 SRS，[`ER_SRS_NOT_GEOGRAPHIC`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_srs_not_geographic)发生错误。

    ```
    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`*])`](gis-point-property-functions.html#function_st-x)

    [](<>)

    用一个参数表示一个有效的`观点`目的*`p`*,[`ST_X()`](gis-point-property-functions.html#function_st-x)返回 X 坐标值*`p`*作为双精度数。从 MySQL 8.0.12 开始，X 坐标被认为是指第一个出现在`观点`空间参考系统 (SRS) 定义。

    使用可选的第二个参数，[`ST_X()`](gis-point-property-functions.html#function_st-x)返回一个`观点`对象类似于第一个参数，其 X 坐标等于第二个参数。从 MySQL 8.0.12 开始，如果`观点`对象具有地理 SRS，第二个参数必须在经度或纬度值的适当范围内。

    [`ST_X()`](gis-point-property-functions.html#function_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`*])`](gis-point-property-functions.html#function_st-y)

    [](<>)

    用一个参数表示一个有效的`观点`目的*`p`*,[`ST_Y()`](gis-point-property-functions.html#function_st-y)返回 Y 坐标值*`p`*作为双精度数。从 MySQL 8.0.12 开始，Y 坐标被认为是指出现在`观点`空间参考系统 (SRS) 定义。

    使用可选的第二个参数，[`ST_Y()`](gis-point-property-functions.html#function_st-y)返回一个`观点`像第一个参数一样的对象，其 Y 坐标等于第二个参数。从 MySQL 8.0.12 开始，如果`观点`对象具有地理 SRS，第二个参数必须在经度或纬度值的适当范围内。

    [`ST_Y()`](gis-point-property-functions.html#function_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)                          |
    +-------------------------------------------+
    ```
