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