### 12.17.4 从 WKB 值创建几何值的函数

这些函数将 a 作为参数[`斑点`](blob.html)包含众所周知的二进制 (WKB) 表示，以及可选的空间参考系统标识符 (SRID)。它们返回相应的几何图形。有关 WKB 格式的说明，请参阅[众所周知的二进制 (WKB) 格式](gis-data-formats.html#gis-wkb-format).

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

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

在 MySQL 8.0 之前，这些函数还接受由函数返回的几何对象[第 12.17.5 节，“创建几何值的 MySQL 特定函数”](gis-mysql-specific-functions.html).不再允许几何参数并产生错误。要将调用从使用几何参数迁移到使用 WKB 参数，请遵循以下准则：

-   重写结构，例如`ST_GeomFromWKB(点(0, 0))`作为`点(0, 0)`.

-   重写结构，例如`ST_GeomFromWKB(点(0, 0), 4326)`作为`ST_SRID(点(0, 0), 4326)`要么`ST_GeomFromWKB(ST_AsWKB(点(0, 0)), 4326)`.

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

-   如果 WKB 或 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 使用另一个单位，则范围使用其单位中的相应值。由于浮点运算，确切的范围限制略有偏差。

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

-   [](<>)

    [`ST_GeomColFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-geomcollfromwkb),[`ST_GeometryCollectionFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-geomcollfromwkb)

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

    构造一个`几何集合`值使用它的 WKB 表示和 SRID。

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

-   [](<>)

    [`ST_GeomFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-geomfromwkb), [`ST_GeometryFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-geomfromwkb)

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

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

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

-   [](<>)

    [`ST_LineFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-linefromwkb), [`ST_LineStringFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-linefromwkb)

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

    构造一个`线串`值使用它的 WKB 表示和 SRID。

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

-   [](<>)

    [`ST_MLineFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-mlinefromwkb), [`ST_MultiLineStringFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-mlinefromwkb)

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

    构造一个`多行字符串`值使用它的 WKB 表示和 SRID。

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

-   [](<>)

    [`ST_MPointFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-mpointfromwkb), [`ST_MultiPointFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-mpointfromwkb)

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

    构造一个`多点`值使用它的 WKB 表示和 SRID。

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

-   [](<>)

    [`ST_MPolyFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-mpolyfromwkb), [`ST_MultiPolygonFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-mpolyfromwkb)

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

    构造一个`多多边形`值使用它的 WKB 表示和 SRID。

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

-   [](<>)

    [`ST_PointFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-pointfromwkb)

    [](<>)

    构造一个`观点`值使用它的 WKB 表示和 SRID。

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

-   [](<>)

    [`ST_PolyFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-polyfromwkb), [`ST_PolygonFromWKB(*`wkb`* [, *`斯里德`* [, *`选项`*]])`](gis-wkb-functions.html#function_st-polyfromwkb)

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

    构造一个`多边形`值使用它的 WKB 表示和 SRID。

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