全部產品
Search
文件中心

ApsaraDB RDS:ST_LineInterpolatePoints

更新時間:Feb 28, 2024

在LineString上指定位置插入一個或多個點,並返回插入的點。

文法

geometry  ST_LineInterpolatePoints(geometry  aLinestring , float8  aFraction , boolean  repeat);
geography  ST_LineInterpolatePoints(geography  aLinestring , float8  aFraction , boolean  repeat);

參數

參數名稱

描述

aLinestring

目標LineString對象。

aFraction

插入點位於該線段的百分比。是一個從0到1的浮點值。

repeat

是否重複插入,預設為true。

描述

  • 如果repeat設為true。將會每隔指定的距離就建立一個點。

  • 如果結果為0個或1個點,則作為Point返回,否則以MultiPoint形式返回。

  • 該函數支援3D對象,並且不會刪除Z座標。

  • 該函數支援M座標。

  • 使用地理座標系時會根據球面距離進行計算。

樣本

  • 計算給定線段上指定比例位置處的點座標:

    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)', 0.20));
                st_astext
    ---------------------------------
     MULTIPOINT(0 1,0 2,0 3,0 4,0 5)
    (1 row)
    
    -- gepgraphy
    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)'::geography, 0.20));
                                                   st_astext                                               
    -------------------------------------------------------------------------------------------------------
     MULTIPOINT((0 1.00002443285827),(0 2.00004274948544),(0 3.00004884128919),(0 4.00003661494431),(0 5))
  • 不重複插入:

    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)', 0.20, false));
     st_astext
    ------------
     POINT(0 1)
    (1 row)
    
    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)'::geography, 0.20, false));
             st_astext         
    ---------------------------
     POINT(0 1.00002443285827)
    (1 row)