### 12.17.3 从 WKT 值创建几何值的函数

这些函数将众所周知的文本 (WKT) 表示形式和可选的空间参考系统标识符 (SRID) 作为参数。它们返回相应的几何图形。有关 WKT 格式的说明，请参阅[知名文本 (WKT) 格式](gis-data-formats.html#gis-wkt-format).

本节中的函数检测笛卡尔或地理空间参考系统 (SRS) 中的参数，并返回适合 SRS 的结果。

[`ST_GeomFromText()`](gis-wkt-functions.html#function_st-geomfromtext)接受任何几何类型的 WKT 值作为其第一个参数。其他函数提供特定类型的构造函数，用于构造每种几何类型的几何值。

功能如[`ST_MPointFromText()`](gis-wkt-functions.html#function_st-mpointfromtext)和[`ST_GeomFromText()`](gis-wkt-functions.html#function_st-geomfromtext)接受 WKT 格式的表示`多点`values 允许值中的各个点用括号括起来。例如，以下两个函数调用都是有效的：

```
ST_MPointFromText('MULTIPOINT (1 1, 2 2, 3 3)')
ST_MPointFromText('MULTIPOINT ((1 1), (2 2), (3 3))')
```

功能如[`ST_GeomFromText()`](gis-wkt-functions.html#function_st-geomfromtext)接受 WKT 几何集合参数的人理解 OpenGIS`'几何集合为空'`标准语法和 MySQL`'几何集合（）'`非标准语法。功能如[`ST_AsWKT()`](gis-format-conversion-functions.html#function_st-astext)产生 WKT 值的产生`'几何集合为空'`标准语法：

```
mysql> SET @s1 = ST_GeomFromText('GEOMETRYCOLLECTION()');
mysql> SET @s2 = ST_GeomFromText('GEOMETRYCOLLECTION EMPTY');
mysql> SELECT ST_AsWKT(@s1), ST_AsWKT(@s2);
+--------------------------+--------------------------+
| ST_AsWKT(@s1)            | ST_AsWKT(@s2)            |
+--------------------------+--------------------------+
| GEOMETRYCOLLECTION EMPTY | GEOMETRYCOLLECTION EMPTY |
+--------------------------+--------------------------+
```

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

-   如果任何几何参数是`空值`或者不是语法格式正确的几何，或者如果 SRID 参数是`空值`，返回值为`空值`.

-   默认情况下，地理坐标（纬度、经度）按照几何参数的空间参考系统指定的顺序进行解释。一个可选的*`选项`*可以给出参数以覆盖默认轴顺序。`选项`由逗号分隔的列表组成`*`钥匙`*=*`价值`*`.唯一允许的*`钥匙`*值为`轴序`, 允许的值为`经纬度`,`长纬度`和`网格定义`（默认）。

    如果*`选项`*论据是`空值`，返回值为`空值`.如果*`选项`*参数无效，发生错误以说明原因。

-   如果 SRID 参数引用未定义的空间参考系统 (SRS)，则[`ER_SRS_NOT_FOUND`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_srs_not_found)发生错误。

-   对于地理 SRS 几何参数，如果任何参数的经度或纬度超出范围，则会发生错误：

    -   如果经度值不在 (−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)发生错误。

        显示的范围以度为单位。如果 SRS 使用另一个单位，则范围使用其单位中的相应值。由于浮点运算，确切的范围限制略有偏差。

    这些函数可用于从 WKT 值创建几何图形：

-   [](<>)

    [`ST_GeomColFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-geomcollfromtext),[`ST_GeometryCollectionFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-geomcollfromtext), [`ST_GeomColFromTxt(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-geomcollfromtext)

    [](<>)[](<>)

    构造一个`几何集合`值使用其 WKT 表示和 SRID。

    这些函数处理它们的参数，如本节介绍中所述。

    ```
    mysql> SET @g = "MULTILINESTRING((10 10, 11 11), (9 9, 10 10))";
    mysql> SELECT ST_AsText(ST_GeomCollFromText(@g));
    +--------------------------------------------+
    | ST_AsText(ST_GeomCollFromText(@g))         |
    +--------------------------------------------+
    | MULTILINESTRING((10 10,11 11),(9 9,10 10)) |
    +--------------------------------------------+
    ```

-   [](<>)

    [`ST_GeomFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-geomfromtext), [`ST_GeometryFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-geomfromtext)

    [](<>)[](<>)

    使用其 WKT 表示和 SRID 构造任何类型的几何值。

    这些函数处理它们的参数，如本节介绍中所述。

-   [](<>)

    [`ST_LineFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-linefromtext), [`ST_LineStringFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-linefromtext)

    [](<>)[](<>)

    构造一个`线串`值使用其 WKT 表示和 SRID。

    这些函数处理它们的参数，如本节介绍中所述。

-   [](<>)

    [`ST_MLineFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-mlinefromtext), [`ST_MultiLineStringFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-mlinefromtext)

    [](<>)[](<>)

    构造一个`多行字符串`值使用其 WKT 表示和 SRID。

    这些函数处理它们的参数，如本节介绍中所述。

-   [](<>)

    [`ST_MPointFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-mpointfromtext), [`ST_MultiPointFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-mpointfromtext)

    [](<>)[](<>)

    构造一个`多点`值使用其 WKT 表示和 SRID。

    这些函数处理它们的参数，如本节介绍中所述。

-   [](<>)

    [`ST_MPolyFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-mpolyfromtext), [`ST_MultiPolygonFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-mpolyfromtext)

    [](<>)[](<>)

    构造一个`多多边形`值使用其 WKT 表示和 SRID。

    这些函数处理它们的参数，如本节介绍中所述。

-   [](<>)

    [`ST_PointFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-pointfromtext)

    [](<>)

    构造一个`观点`值使用其 WKT 表示和 SRID。

    [`ST_PointFromText()`](gis-wkt-functions.html#function_st-pointfromtext)如本节介绍中所述处理其参数。

-   [](<>)

    [`ST_PolyFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-polyfromtext), [`ST_PolygonFromText(*`周转`* [, *`斯里德`* [, *`选项`*]])`](gis-wkt-functions.html#function_st-polyfromtext)

    [](<>)[](<>)

    构造一个`多边形`值使用其 WKT 表示和 SRID。

    这些函数处理它们的参数，如本节介绍中所述。
