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