全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:ST_MAKELINE

更新时间:Aug 26, 2026

ST_MAKELINE函数通过指定的端点来构造LineString类型的地理对象。

命令格式

ST_MAKELINE函数支持以下两种签名格式,请根据不同的使用需求选择不同的函数签名。

  • 签名1:通过指定两个端点来构造一个LineString类型的地理对象。

    GEOGRAPHY ST_MAKELINE(GEOGRAPHY <point1>, GEOGRAPHY <point2>)
  • 签名2:通过ARRAY类型的一个或者多个端点来构造LineString类型的地理对象。

    GEOGRAPHY ST_MAKELINE(ARRAY<GEOGRAPHY> <points>)

参数说明

  • point1、point2:必填。POINT类型的地理对象。可根据需求使用ST_GEOGPOINTST_GEOGFROMWKBST_GEOGFROMTEXT函数来构造POINT类型的地理对象。

  • points:必填。ARRAY类型,ARRAY中的每一个元素都必须是POINT类型的地理对象,并且ARRAY中至少要有一个元素。 可根据需求使用ST_GEOGPOINTST_GEOGFROMWKBST_GEOGFROMTEXT函数来构造POINT类型的地理对象。

返回值说明

返回一个LineString类型的地理对象。返回规则如下:

  • 若输入的GEOGRAPHY为NULL输入的ARRAY或ARRAY中的任何元素为NULL,则返回NULL。

  • 在某些特定的场景下(如输入两个相同的点、ARRAY中只有一个元素),返回结果可能会退化为一个Point点。

  • 由于S2地理库的精度问题的影响,输入和输出可能有非常微小的差异。

使用示例

  • 示例1:通过指定两个端点来构造一个LineString类型的地理对象。

    -- 输入两个不同的端点,返回一个LineString
    SELECT ST_MAKELINE(ST_GEOGPOINT(270, 0), ST_GEOGPOINT(1, 1));
    -- 返回结果:
    +-------------------------+
    | _c0                     |
    +-------------------------+
    | LINESTRING (-90 0, 1 1) |
    +-------------------------+
    
    -- 输入两个相同的端点,返回值退化成一个点
    SELECT ST_MAKELINE(ST_GEOGPOINT(1, 1), ST_GEOGPOINT(1, 1));
    -- 返回结果:
    +-------------+
    | _c0         |
    +-------------+
    | POINT (1 1) |
    +-------------+
  • 示例2:通过ARRAY类型的1个或者多个端点来构造LineString类型地理对象。

    -- 输入一个array,返回一个LineString
    SELECT ST_MAKELINE(ARRAY(ST_GEOGPOINT(0, 0), ST_GEOGPOINT(1, 1), ST_GEOGPOINT(2, 2)));
    -- 返回结果:
    +----------------------------+
    | _c0                        |
    +----------------------------+
    | LINESTRING (0 0, 1 1, 2 2) |
    +----------------------------+
    
    -- 输入一个array,array中只有一个元素,返回值退化成1个点
    SELECT ST_MAKELINE(ARRAY(ST_GEOGPOINT(0, 0)));
    -- 返回结果:
    +-------------+
    | _c0         |
    +-------------+
    | POINT (0 0) |
    +-------------+

相关文档