一个LineString
由点
值。你可以提取a的特定点LineString
,计算它包含的点数,或获得它的长度。
本节中的一些函数也适用于MultiLineString
值。
除非另有说明,本节中的函数处理其几何参数的方式如下:
如果有任何争论
零
或任何几何参数为空几何,返回值为零
.如果任何几何参数不是一个语法结构良好的几何,则
ER_GIS_INVALID_DATA
发生错误。如果任何几何参数是未定义空间参考系统(SRS)中的语法良好的几何,则
ER_SRS_NOT_FOUND
发生错误。否则,返回值为non-
零
.
这些函数可用于获取linestring属性:
返回
点
这是LineString
价值ls
.ST_EndPoint ()
如本节介绍中所述处理其参数。mysql> SET @ls = 'LineString(1 1,2 2,3 3)';mysql >选择ST_AsText (ST_EndPoint (ST_GeomFromText (@ls)));+----------------------------------------------+ | ST_AsText (ST_EndPoint (ST_GeomFromText (@ls ))) | +----------------------------------------------+ | (3点3 ) | +----------------------------------------------+
对于一个
LineString
价值ls
,ST_IsClosed ()
返回1,如果ls
是关门的吗ST_StartPoint ()
和ST_EndPoint ()
价值观是一样的)。对于一个
MultiLineString
价值ls
,ST_IsClosed ()
返回1,如果ls
是闭合的(即ST_StartPoint ()
和ST_EndPoint ()
每个值都是相同的LineString
在ls
).ST_IsClosed ()
返回0,如果ls
是不关门的,还有呢零
如果ls
是零
.ST_IsClosed ()
像本节介绍中描述的那样处理它的参数,但有以下例外:如果几何图形具有地理空间参考系统(SRS)的SRID值,则
ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS
发生错误。
mysql> SET @ls1 = 'LineString(1 1,2 2,3 3,2 2)';mysql> SET @ls2 = 'LineString(1 1,2 2,3 3,1 1)';mysql >选择ST_IsClosed (ST_GeomFromText (@ls1));+------------------------------------+ | ST_IsClosed (ST_GeomFromText (@ls1 )) | +------------------------------------+ | 0 | +------------------------------------+ mysql >选择ST_IsClosed (ST_GeomFromText (@ls2));+------------------------------------+ | ST_IsClosed (ST_GeomFromText (@ls2 )) | +------------------------------------+ | 1 | +------------------------------------+ mysql >设置@ls3 = ' MultiLineString((1 1 2 2 3 3),(4 4、5 5)”;mysql >选择ST_IsClosed (ST_GeomFromText (@ls3));+------------------------------------+ | ST_IsClosed (ST_GeomFromText (@ls3 )) | +------------------------------------+ | 0 | +------------------------------------+
对象的长度返回一个双精度数字
LineString
或MultiLineString
价值ls
在相关的空间参考系统中。a的长度MultiLineString
Value等于其元素长度之和。ST_Length ()
计算结果如下:如果几何是有效的
LineString
在笛卡儿SRS中,返回值是几何图形的笛卡儿长度。如果几何是有效的
MultiLineString
在笛卡儿SRS中,返回值是其元素的笛卡儿长度之和。如果几何是有效的
LineString
在地理SRS中,返回值是该SRS中几何图形的大地测量长度,单位为米。如果几何是有效的
MultiLineString
在地理SRS中,返回值是该SRS中各元素的大地长度之和,单位为米。
ST_Length ()
如本节介绍所述处理其参数,但有以下例外情况:如果几何不是a
LineString
或MultiLineString
,返回值为零
.如果几何图形在几何上无效,要么结果是一个未定义的长度(也就是说,它可以是任何数字),要么就会发生错误。
若长度计算结果为
+正
,一个ER_DATA_OUT_OF_RANGE
发生错误。如果几何图形的地理SRS的经度或纬度超出范围,则会发生错误:
如果经度值不在(−180,180)范围内,则表示
ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE
发生错误(ER_LONGITUDE_OUT_OF_RANGE
MySQL 8.0.12之前)。如果纬度值不在[−90,90]范围内,则表示
ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE
发生错误(ER_LATITUDE_OUT_OF_RANGE
MySQL 8.0.12之前)。
范围以度数表示。由于浮点运算,确切的范围限制略有偏差。
从MySQL 8.0.16开始,
ST_Length ()
允许一个可选的单位
参数,该参数指定返回长度值的线性单位。这些规则适用:如果指定了一个单元,但MySQL不支持,则使用
ER_UNIT_NOT_FOUND
发生错误。如果指定了一个支持的线性单元,并且SRID为0,则
ER_GEOMETRY_IN_UNKNOWN_LENGTH_UNIT
发生错误。如果指定了一个支持的线性单元,并且SRID不为0,则结果将在该单元中。
如果没有指定单位,则结果以几何的SRS为单位,无论是笛卡尔坐标还是地理坐标。目前,所有MySQL sss都用米表示。
中找到的单元表示支持
INFORMATION_SCHEMA
ST_UNITS_OF_MEASURE
表格看到第26.3.37节,“INFORMATION_SCHEMA ST_UNITS_OF_MEASURE表”.mysql> SET @ls = ST_GeomFromText('LineString(1 1,2 2,3 3)');mysql >选择ST_Length (@ls);+--------------------+ | ST_Length (@ls ) | +--------------------+ | 2.8284271247461903 | +--------------------+ mysql >设置@mls = ST_GeomFromText (MultiLineString((1 1 2 2 3 3),(4 4、5 5)');mysql >选择ST_Length (@mls);+-------------------+ | ST_Length (@mls ) | +-------------------+ | 4.242640687119286 | +-------------------+ mysql >设置@ls = ST_GeomFromText(“LineString(1 1 2 2 3 3)”,4326年);mysql >选择ST_Length (@ls);+-------------------+ | ST_Length (@ls ) | +-------------------+ | 313701.9623204328 | +-------------------+ mysql >选择ST_Length (@ls,“米”);+-------------------------+ | ST_Length (@ls,”米 ') | +-------------------------+ | 313701.9623204328 | +-------------------------+ mysql >选择ST_Length (@ls,“脚”);+------------------------+ | ST_Length (@ls的脚 ') | +------------------------+ | 1029205.9131247795 | +------------------------+
返回
点
中的对象LineString
价值ls
.ST_NumPoints ()
如本节介绍中所述处理其参数。mysql> SET @ls = 'LineString(1 1,2 2,3 3)';mysql >选择ST_NumPoints (ST_GeomFromText (@ls));+------------------------------------+ | ST_NumPoints (ST_GeomFromText (@ls )) | +------------------------------------+ | 3 | +------------------------------------+
返回
N
th点
在Linestring
价值ls
.点从1开始编号。ST_PointN ()
如本节介绍中所述处理其参数。mysql> SET @ls = 'LineString(1 1,2 2,3 3)';mysql >选择ST_AsText (ST_PointN (ST_GeomFromText (@ls), 2));+----------------------------------------------+ | ST_AsText (ST_PointN (ST_GeomFromText (@ls), 2 )) | +----------------------------------------------+ | 点(2 2 ) | +----------------------------------------------+
返回
点
这是LineString
价值ls
.ST_StartPoint ()
如本节介绍中所述处理其参数。mysql> SET @ls = 'LineString(1 1,2 2,3 3)';mysql >选择ST_AsText (ST_StartPoint (ST_GeomFromText (@ls)));+------------------------------------------------+ | ST_AsText (ST_StartPoint (ST_GeomFromText (@ls ))) | +------------------------------------------------+ | 点(1 1 ) | +------------------------------------------------+