# 12.17.7.3 LineString 和 MultiLineString 属性函数

一种线串由组成观点价值观。您可以提取特定点线串,计算它包含的点数,或获取它的长度。

本节中的某些功能也适用于多行字符串价值观。

除非另有说明,本节中的函数按如下方式处理其几何参数:

  • 如果有任何论据空值或任何几何参数是空几何,返回值为空值.

  • 如果任何几何参数不是语法上格式良好的几何,则ER_GIS_INVALID_DATA (opens new window)发生错误。

  • 如果任何几何参数是未定义的空间参考系统 (SRS) 中的语法结构良好的几何,则ER_SRS_NOT_FOUND (opens new window)发生错误。

  • 否则,返回值为非空值.

    这些函数可用于获取线串属性:

  • ST_EndPoint(*ls*)

    返回观点那是终点线串价值*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*)

    为一个线串价值*ls, ST_IsClosed()如果返回 1ls*是封闭的(也就是说,它的ST_StartPoint()ST_EndPoint()值相同)。

    为一个多行字符串价值*ls, ST_IsClosed()如果返回 1ls是关闭的(也就是说,ST_StartPoint()ST_EndPoint()每个值都相同线串ls*)。

    ST_IsClosed()如果返回 0*ls没有关闭,并且空值如果ls*是空值.

    ST_IsClosed()如本节介绍中所述处理其参数,但有以下例外:

    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 |
    +------------------------------------+
    
  • ST_长度(*ls* [, *单元*])

    返回一个表示长度的双精度数线串要么多行字符串价值*ls*在其相关的空间参考系中。一个长度多行字符串value 等于其元素长度的总和。

    ST_长度()计算结果如下:

    • 如果几何是有效的线串在笛卡尔 SRS 中,返回值是几何的笛卡尔长度。

    • 如果几何是有效的多行字符串在笛卡尔 SRS 中,返回值是其元素的笛卡尔长度之和。

    • 如果几何是有效的线串在地理 SRS 中,返回值是该 SRS 中几何的大地测量长度,以米为单位。

    • 如果几何是有效的多行字符串在地理 SRS 中,返回值是该 SRS 中其元素的大地长度之和,以米为单位。

    ST_长度()如本节介绍中所述处理其参数,但有以下例外:

    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*)

    返回数量观点中的对象线串价值*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*, *ñ*)

    返回*ñ-th观点在里面线串价值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_起点(*ls*)

    返回观点那是的起点线串价值*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)                                     |
    +------------------------------------------------+