LineString 和 MultiLineString 属性函数
LineString由Point值组成。您可以提取a的特定点LineString,计算其包含的点数,或获取其长度。
本节中的某些功能也适用于MultiLineString值。
除非另有说明,否则本节中的函数将按以下方式处理其参数:
- 如果任何自变量为NULL或任何几何自变量为空几何,则返回值为NULL。
- 如果任何几何参数都不是语法上格式正确的几何,ER_GIS_INVALID_DATA则会发生错误。
- 如果任何几何参数的SRID值都引用未定义的空间参考系统(SRS),ER_SRS_NOT_FOUND则会发生错误。
- 否则,返回值为non-NULL。
这些函数可用于获取线串属性:
- ST_EndPoint(ls)- 返回 - Point作为- LineString值端点的- ls。- ST_EndPoint()按照本节简介中所述处理其参数。- mysql> - SET @ls = 'LineString(1 1,2 2,3 3)'; mysql>- SELECT ST_AsText(ST_EndPoint(ST_GeomFromText(@ls))); +---------------------------------------------- + | ST_AsText(ST_EndPoint(ST_GeomFromText(@ls))) | +---------------------------------------------- + | POINT(3 3) | +---------------------------------------------- +
- ST_IsClosed(ls)- 对于 - LineStringvalue- ls,- ST_IsClosed()如果- ls关闭则返回1 (即,其- ST_StartPoint()和- ST_EndPoint()值相同)。- 对于 - MultiLineStringvalue- ls,- ST_IsClosed()如果- ls关闭则返回1 (即in中的- ST_StartPoint()和- ST_EndPoint()值相同)。- LineString- ls- ST_IsClosed()返回0,如果- ls不是封闭的,而- NULL如果- ls是- NULL。- 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>- SELECT ST_IsClosed(ST_GeomFromText(@ls1)); +------------------------------------ + | ST_IsClosed(ST_GeomFromText(@ls1)) | +------------------------------------ + | 0 | +------------------------------------ + mysql>- SELECT ST_IsClosed(ST_GeomFromText(@ls2)); +------------------------------------ + | ST_IsClosed(ST_GeomFromText(@ls2)) | +------------------------------------ + | 1 | +------------------------------------ + mysql>- SET @ls3 = 'MultiLineString((1 1,2 2,3 3),(4 4,5 5))'; mysql>- SELECT ST_IsClosed(ST_GeomFromText(@ls3)); +------------------------------------ + | ST_IsClosed(ST_GeomFromText(@ls3)) | +------------------------------------ + | 0 | +------------------------------------ +
- 如果几何图形具有用于地理空间参考系统(SRS)的SRID值,
- ST_Length(ls[,unit])- 返回一个双精度数字,该数字指示其关联的空间参考系统中 - LineStringor- MultiLineString值的长度- ls。- MultiLineString值的长度等于其元素长度的总和。- ST_Length()计算结果如下:- 如果几何LineString在笛卡尔SRS中有效,则返回值为几何的笛卡尔长度。
- 如果几何MultiLineString在笛卡尔SRS中有效,则返回值为其元素笛卡尔长度的总和。
- 如果几何LineString在地理SRS中有效,则返回值是该SRS中几何的大地长度(以米为单位)。
- 如果几何MultiLineString在地理SRS中有效,则返回值为该SRS中其元素的大地长度的总和,以米为单位。
 - ST_Length()如本节简介中所述处理其参数,但以下情况除外:- 如果几何不是a LineString或MultiLineString,则返回值为NULL。
- 如果几何在几何上是无效的,则结果是未定义的长度(即,可以是任何数字),或者发生错误。
- 如果长度计算结果为+inf,ER_DATA_OUT_OF_RANGE则会发生错误。
- 如果几何图形的经度或纬度超出范围,则将发生错误: - 如果任何经度参数不在范围内(-180,180],ER_LONGITUDE_OUT_OF_RANGE则会发生错误。
- 如果任何纬度参数不在[-90,90]范围内,ER_LATITUDE_OUT_OF_RANGE则会发生错误。
 - 显示的范围以度为单位。精确的范围限制由于浮点运算而略有不同。 
- 如果任何经度参数不在范围内(-180,180],
 - 从MySQL 8.0.16开始, - ST_Length()允许使用可选- unit参数,该参数为返回的长度值指定线性单位。这些规则适用:- 如果指定了单位但MySQL不支持该单位,ER_UNIT_NOT_FOUND则会发生错误。
- 如果指定了支持的线性单位且SRID为0,ER_GEOMETRY_IN_UNKNOWN_LENGTH_UNIT则会发生错误。
- 如果指定了受支持的线性单位且SRID不为0,则结果以该单位为单位。
- 如果未指定单位,则结果以几何的SRS单位(无论是笛卡尔坐标还是地理坐标)为单位。当前,所有MySQL SRS均以米表示。
 - 如果在 - INFORMATION_SCHEMA- ST_UNITS_OF_MEASURE表中找到了单位,则该单位受支持。请参见“ INFORMATION_SCHEMA ST_UNITS_OF_MEASURE表”。- mysql> - SET @ls = ST_GeomFromText('LineString(1 1,2 2,3 3)'); mysql>- SELECT ST_Length(@ls); +-------------------- + | ST_Length(@ls) | +-------------------- + | 2.8284271247461903 | +-------------------- + mysql>- SET @mls = ST_GeomFromText('MultiLineString((1 1,2 2,3 3),(4 4,5 5))'); mysql>- SELECT ST_Length(@mls); +------------------- + | ST_Length(@mls) | +------------------- + | 4.242640687119286 | +------------------- + mysql>- SET @ls = ST_GeomFromText('LineString(1 1,2 2,3 3)', 4326); mysql>- SELECT ST_Length(@ls); +------------------- + | ST_Length(@ls) | +------------------- + | 313701.9623204328 | +------------------- + mysql>- SELECT ST_Length(@ls, 'metre'); +------------------------- + | ST_Length(@ls, 'metre') | +------------------------- + | 313701.9623204328 | +------------------------- + mysql>- SELECT ST_Length(@ls, 'foot'); +------------------------ + | ST_Length(@ls, 'foot') | +------------------------ + | 1029205.9131247795 | +------------------------ +
- 如果几何
- ST_NumPoints(ls)- 返回的数量 - Point中的对象- LineString值- ls。- ST_NumPoints()按照本节简介中所述处理其参数。- mysql> - SET @ls = 'LineString(1 1,2 2,3 3)'; mysql>- SELECT ST_NumPoints(ST_GeomFromText(@ls)); +------------------------------------ + | ST_NumPoints(ST_GeomFromText(@ls)) | +------------------------------------ + | 3 | +------------------------------------ +
- ST_PointN(ls,N)- 返回 - N个- Point中- Linestring值- ls。点从1开始编号。- ST_PointN()按照本节简介中所述处理其参数。- mysql> - SET @ls = 'LineString(1 1,2 2,3 3)'; mysql>- SELECT ST_AsText(ST_PointN(ST_GeomFromText(@ls),2)); +---------------------------------------------- + | ST_AsText(ST_PointN(ST_GeomFromText(@ls),2)) | +---------------------------------------------- + | POINT(2 2) | +---------------------------------------------- +
- ST_StartPoint(ls)- 返回 - Point作为- LineString值起点的- ls。- ST_StartPoint()按照本节简介中所述处理其参数。- mysql> - SET @ls = 'LineString(1 1,2 2,3 3)'; mysql>- SELECT ST_AsText(ST_StartPoint(ST_GeomFromText(@ls))); +------------------------------------------------ + | ST_AsText(ST_StartPoint(ST_GeomFromText(@ls))) | +------------------------------------------------ + | POINT(1 1) | +------------------------------------------------ +
