14.16.4 创建几何值的函数从 WKB 值
这些函数将 Well-Known Binary (WKB) 表示作为参数, optionally,一个空间参考系统标识符(SRID)。它们返回相应的几何值。关于 WKB 格式的描述,请见Well-Known Binary (WKB) 格式。
本节中的函数检测参数在 either Cartesian 或 geographic 空间参考系统(SRS)中,并返回相应的结果。
ST_GeomFromWKB()
接受任何几何类型的 WKB 值作为其第一个参数。其他函数提供了每种几何类型的构造函数,以便构建几何值。
在 MySQL 8.4 之前,这些函数还接受由Section 14.16.5, “MySQL-特定函数创建几何值”返回的几何对象作为参数。现在不允许 geometry 对象作为参数,并且会产生错误。要将调用从使用 geometry 参数迁移到使用 WKB 参数,请遵循以下指南:
-
将构造语句,如
ST_GeomFromWKB(Point(0, 0))
重写为Point(0, 0)
。 -
将构造语句,如
ST_GeomFromWKB(Point(0, 0), 4326)
重写为ST_SRID(Point(0, 0), 4326)
或ST_GeomFromWKB(ST_AsWKB(Point(0, 0)), 4326)
。
除非另有指定,以下部分中的函数将其几何参数处理如下:
-
如果WKB或SRID参数为
NULL
,返回值也为NULL
。 -
默认情况下,地理坐标(纬度、经度)将根据几何参数的空间参考系统顺序进行解释。可以提供可选的
options
参数来覆盖默认的轴顺序。options
由逗号分隔的
组成。唯一允许的key
=value
key
值是axis-order
,允许的值为lat-long
、long-lat
和srid-defined
(默认)。如果
options
参数为NULL
,返回值也为NULL
。如果options
参数无效,将发生错误,以指示原因。 -
如果SRID参数引用未定义的空间参考系统(SRS),将发生
ER_SRS_NOT_FOUND
错误。 -
对于地理SRS几何参数,如果任何参数的经度或纬度超出范围,将发生错误:
-
如果经度值不在(-180, 180]范围内,将发生
ER_LONGITUDE_OUT_OF_RANGE
错误。 -
如果纬度值不在[-90, 90]范围内,将出现
ER_LATITUDE_OUT_OF_RANGE
错误。
显示的范围是度数。如果SRS使用另一个单位,范围将使用相应的值在其单位中。由于浮点算术精度的原因,实际范围限制会有轻微偏差。
-
这些函数可用于从WKB值创建几何体:
-
ST_GeomCollFromWKB(
,wkb
[,srid
[,options
]])ST_GeometryCollectionFromWKB(
wkb
[,srid
[,options
]])使用WKB表示和SRID构建一个GeometryCollection值。
这些函数将其参数按照本节介绍的方式处理。
-
ST_GeomFromWKB(
,wkb
[,srid
[,options
]])ST_GeometryFromWKB(
wkb
[,srid
[,options
]])使用WKB表示和SRID构建一个几何体值。
这些函数按照本节介绍中描述处理其参数。
-
ST_线FromWKB(
,wkb
[,srid
[,options
]])ST_线StringFromWKB(
wkb
[,srid
[,options
]])使用WKB表示形式和SRID构造一个
线String
值。这些函数按照本节介绍中描述处理其参数。
-
ST_MLineFromWKB(
,wkb
[,srid
[,options
]])ST_多线StringFromWKB(
wkb
[,srid
[,options
]])使用WKB表示形式和SRID构造一个
多线String
值。这些函数按照本节介绍中描述处理其参数。
-
ST_MPointFromWKB(
,wkb
[,srid
[,options
]])ST_MultiPointFromWKB(
wkb
[,srid
[,options
]])使用WKB表示和SRID构造一个MultiPoint值。
这些函数按照本节介绍中描述处理其参数。
-
ST_MPloyFromWKB(
,wkb
[,srid
[,options
]])ST_MultiPolygonFromWKB(
wkb
[,srid
[,options
]])使用WKB表示和SRID构造一个MultiPolygon值。
这些函数按照本节介绍中描述处理其参数。
-
ST_PointFromWKB(
wkb
[,srid
[,options
]])使用WKB表示和SRID构造一个Point值。
ST_点从WKB()
按照本节介绍的方式处理其参数。 -
ST_多边形从WKB(
,wkb
[,srid
[,options
]])ST_多边形从WKB(
wkb
[,srid
[,options
]])使用WKB表示和SRID构造一个
多边形
值。这些函数按照本节介绍的方式处理其参数。