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_GEOGPOINT、ST_GEOGFROMWKB、ST_GEOGFROMTEXT函数来构造POINT类型的地理对象。
points:必填。ARRAY类型,ARRAY中的每一个元素都必须是POINT类型的地理对象,并且ARRAY中至少要有一个元素。 可根据需求使用ST_GEOGPOINT、ST_GEOGFROMWKB、ST_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) | +-------------+