14.16.3 创建几何值的函数从 WKT 值
这些函数将 Well-Known Text (WKT) 表示作为参数,并且可选地,还包括一个空间参考系统标识符 (SRID)。它们返回相应的几何值。关于 WKT 格式的描述,请见Well-Known Text (WKT) Format。
本节中的函数检测参数是否在笛卡尔坐标系或地理空间参考系统(SRS)中,并返回相应的结果。
ST_GeomFromText()
接受任何几何类型的 WKT 值作为其第一个参数。其他函数提供了每种几何类型的构造函数,以便构建几何值。
类似于ST_MPointFromText()
和 ST_GeomFromText()
的函数,接受 WKT 格式的多点值表示,允许单个点在值中被括号包围。例如,以下两个函数调用都是有效的:
ST_MPointFromText('MULTIPOINT (1 1, 2 2, 3 3)')
ST_MPointFromText('MULTIPOINT ((1 1), (2 2), (3 3))')
接受WKT几何集合参数的函数,如ST_GeomFromText()
,理解OpenGIS标准语法'GEOMETRYCOLLECTION EMPTY'
和MySQL非标准语法'GEOMETRYCOLLECTION()'
。生产WKT值的函数,如ST_AsWKT()
,输出标准语法'GEOMETRYCOLLECTION EMPTY'
。
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 |
+--------------------------+--------------------------+
除非另有指定,以下函数在处理几何参数时遵循以下规则:
-
如果任何几何参数为
NULL
或不是语法正确的几何形状,如果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 使用另一个单位,范围使用相应的值。由于浮点算术精度的原因,实际范围限制会有轻微偏差。
-
这些函数可用于从 WKT 值创建几何形状:
-
ST_GeomCollFromText(
,wkt
[,srid
[,options
]])ST_GeometryCollectionFromText(
,wkt
[,srid
[,options
]])ST_GeomCollFromTxt(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个GeometryCollection值。
这些函数按照本节介绍中描述处理其参数。
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(
,wkt
[,srid
[,options
]])ST_GeometryFromText(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个geometry值。
这些函数按照本节介绍中描述处理其参数。
-
ST_LineFromText(
,wkt
[,srid
[,options
]])ST_LineStringFromText(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个
LineString
值。这些函数按照本节介绍中描述处理其参数。
-
ST_MLineFromText(
,wkt
[,srid
[,options
]])ST_MultiLineStringFromText(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个
MultiLineString
值。这些函数按照本节介绍中描述处理其参数。
-
ST_MPointFromText(
,wkt
[,srid
[,options
]])ST_MultiPointFromText(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个
MultiPoint
值。这些函数按照本节介绍中描述处理其参数。
-
ST_MPolyFromText(
,wkt
[,srid
[,options
]])ST_MultiPolygonFromText(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个
MultiPolygon
值。这些函数按照本节介绍中描述处理其参数。
-
ST_PointFromText(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个
Point
值。ST_点从文本()
按照该部分介绍中描述的方式处理其参数。 -
ST_多边形从文本(
,wkt
[,srid
[,options
]])ST_多边形从文本(
wkt
[,srid
[,options
]])使用WKT表示形式和SRID构造一个
多边形
值。这些函数按照该部分介绍中描述的方式处理其参数。