MySQL 支持本节中列出的函数,用于将几何值从内部几何格式转换为 WKT 或 WKB 格式,或交换 X 和 Y 坐标的顺序。
还有一些函数用于将字符串从 WKT 或 WKB 格式转换为内部几何格式。请参阅 第 14.16.3 节,“从 WKT 值创建几何值的函数” 和 第 14.16.4 节,“从 WKB 值创建几何值的函数”。
诸如 ST_GeomFromText()
之类的函数接受 WKT 几何集合参数,既理解 OpenGIS 'GEOMETRYCOLLECTION EMPTY'
标准语法,也理解 MySQL 'GEOMETRYCOLLECTION()'
非标准语法。另一种生成空几何集合的方法是调用 GeometryCollection()
而不带任何参数。诸如 ST_AsWKT()
之类的函数生成 WKT 值,生成 '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 |
+--------------------------+--------------------------+
mysql> SELECT ST_AsWKT(GeomCollection());
+----------------------------+
| ST_AsWKT(GeomCollection()) |
+----------------------------+
| GEOMETRYCOLLECTION EMPTY |
+----------------------------+
除非另有说明,否则本节中的函数按如下方式处理其几何参数
如果任何参数为
NULL
,则返回值为NULL
。如果任何几何参数不是语法上格式良好的几何,则会发生
ER_GIS_INVALID_DATA
错误。如果任何几何参数位于未定义的空间参考系中,则轴将按其在几何中出现的顺序输出,并且会发生
ER_WARN_SRS_NOT_FOUND_AXIS_ORDER
警告。默认情况下,地理坐标(纬度、经度)的解释顺序与空间参考系中指定的空间参考系一致。可以给出可选的
options
参数来覆盖默认的轴顺序。options
由一个逗号分隔的
列表组成。唯一允许的key
=value
key
值是axis-order
,允许的值为lat-long
、long-lat
和srid-defined
(默认值)。如果
options
参数为NULL
,则返回值为NULL
。如果options
参数无效,则会发生错误以指示原因。否则,返回值为非
NULL
。
以下函数可用于格式转换或坐标交换
ST_AsBinary(
,g
[,options
])ST_AsWKB(
g
[,options
])将内部几何格式的值转换为其 WKB 表示形式,并返回二进制结果。
函数返回值的地理坐标(纬度、经度)顺序与适用于几何参数的空间参考系中指定的顺序一致。可以给出可选的
options
参数来覆盖默认的轴顺序。ST_AsBinary()
和ST_AsWKB()
处理其参数的方式与本节简介中描述的一致。mysql> SET @g = ST_LineFromText('LINESTRING(0 5,5 10,10 15)', 4326); mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))); +-----------------------------------------+ | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g))) | +-----------------------------------------+ | LINESTRING(5 0,10 5,15 10) | +-----------------------------------------+ mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=long-lat'))); +----------------------------------------------------------------+ | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=long-lat'))) | +----------------------------------------------------------------+ | LINESTRING(0 5,5 10,10 15) | +----------------------------------------------------------------+ mysql> SELECT ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=lat-long'))); +----------------------------------------------------------------+ | ST_AsText(ST_GeomFromWKB(ST_AsWKB(@g, 'axis-order=lat-long'))) | +----------------------------------------------------------------+ | LINESTRING(5 0,10 5,15 10) | +----------------------------------------------------------------+
ST_AsText(
,g
[,options
])ST_AsWKT(
g
[,options
])将内部几何格式的值转换为其 WKT 表示形式,并返回字符串结果。
函数返回值的地理坐标(纬度、经度)顺序与适用于几何参数的空间参考系中指定的顺序一致。可以给出可选的
options
参数来覆盖默认的轴顺序。ST_AsText()
和ST_AsWKT()
处理其参数的方式与本节简介中描述的一致。mysql> SET @g = 'LineString(1 1,2 2,3 3)'; mysql> SELECT ST_AsText(ST_GeomFromText(@g)); +--------------------------------+ | ST_AsText(ST_GeomFromText(@g)) | +--------------------------------+ | LINESTRING(1 1,2 2,3 3) | +--------------------------------+
针对
MultiPoint
值的输出包括每个点周围的括号。例如mysql> SELECT ST_AsText(ST_GeomFromText(@mp)); +---------------------------------+ | ST_AsText(ST_GeomFromText(@mp)) | +---------------------------------+ | MULTIPOINT((1 1),(2 2),(3 3)) | +---------------------------------+
接受内部几何格式的参数,交换几何中每个坐标对的 X 和 Y 值,并返回结果。
ST_SwapXY()
处理其参数的方式与本节简介中描述的一致。mysql> SET @g = ST_LineFromText('LINESTRING(0 5,5 10,10 15)'); mysql> SELECT ST_AsText(@g); +----------------------------+ | ST_AsText(@g) | +----------------------------+ | LINESTRING(0 5,5 10,10 15) | +----------------------------+ mysql> SELECT ST_AsText(ST_SwapXY(@g)); +----------------------------+ | ST_AsText(ST_SwapXY(@g)) | +----------------------------+ | LINESTRING(5 0,10 5,15 10) | +----------------------------+