线性函数参考¶
ST_LineInterpolatePoint¶
ST_LineInterpolatePoint — 返回在一个LINESTRING对象上面在指定位置上插入(获取)的一个点的几何对象。
参数¶
a_linestring
geometry类型。必须为LINESTRING类型。
a_fraction
float类型。参数范围是0到1内的float8类型,表示被插入的点在整个LINESTRING的位置。
示例¶
select ST_AsText(ST_LineInterpolatePoint('LINESTRING(0 0, 1 1)', 0));
ST_ASTEXT(text) |
---------------------
POINT(0 0) |
总数目:1
select ST_AsText(ST_LineInterpolatePoint('LINESTRING(0 0 10, 1 1 5)', 0.5));
ST_ASTEXT(text) |
---------------------
POINT Z (0.5 0.5 7.5)|
总数目:1
select ST_AsText(ST_LineInterpolatePoint('MULTILINESTRING((0 0, 10 0), (5 -5, 5 5))', 0.5));
ERROR, line_interpolate_point: 1st arg isn't a line
ST_LineInterpolatePoints¶
ST_LineInterpolatePoints — 返回沿直线插值的一个或多个点。
参数¶
a_linestring
geometry类型。必须为LINESTRING类型。
a_fraction
float类型。参数范围是0到1内的float8类型,表示点之间的间距占整个字符串长度的一小部分。
repeat
boolean类型。如果参数为false,则最多会构造一个点(该函数将等效于ST_LineInterpolatePoint。)默认值为true。
示例¶
select ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0, 1 1)', 0.7));
ST_ASTEXT(text) |
---------------------
POINT(0.7 0.7) |
总数目:1
select ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0, 1 1)', 0.3));
ST_ASTEXT(text) |
---------------------
MULTIPOINT(0.3 0.3,0.|
6 0.6,0.9 0.9) |
总数目:1
select ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0, 1 1)', 0.3, false));
ST_ASTEXT(text) |
---------------------
POINT(0.3 0.3) |
总数目:1
ST_LineLocatePoint¶
ST_LineLocatePoint — 根据输入的点和LINESTRING,返回这个点在LINESTRING上的位置(如果点不在这个LINESTRING上,就返回最近的)。
返回值¶
返回值为float8类型。
示例¶
SELECT ST_LineLocatePoint(ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)'), ST_GeomFromText('POINT(4 3)'));
ST_LINELOCATEPOINT(double precision) |
------------------------------------------
0.4 |
总数目:1
ST_LineSubstring¶
ST_LineSubstring — 从一个LINESTRING中返回一个从输入的LINESTRING提取指定起点和终点的片段。
参数¶
a_linestring
geometry类型。必须为LINESTRING类型。
startfraction
float类型。值范围在0到1。
endfraction
float类型。值范围在0到1。
返回值¶
返回值为geometry类型。
该函数只适用于LINESTRING类型对象,如果想对连续的MULTILINESTRING类型对象使用,需要与函数ST_LineMerge一起使用。如果参数的起始点和终点一样,那么返回值和ST_LineInterpolatePoint返回值一样。
示例¶
SELECT ST_AsText(ST_Line_SubString(ST_GeomFromText('LINESTRING(25 50, 100 125, 150 190)'), 0.333, 0.666));
ST_ASTEXT(text) |
---------------------
LINESTRING(69.2846934|
853974 94.2846934853|
974,100 125,111.7003|
56260683 140.2104631|
38888) |
总数目:1
ST_LocateAlong¶
ST_LocateAlong — 返回几何对象的M值与给定的M值一样的几何对象,目前不支持多边形类的几何对象。
参数¶
ageom_with_measure
geometry类型。
a_measure
float类型。
offset
float类型。如果已经提供了偏移单位,根据提供的偏移单位,在输入的LINESTRING上向左或向右偏移。偏移值为正,则向左偏移,偏移值为负,则向右偏移。
示例¶
select ST_AsText(ST_LocateAlong('POINTM(1 2 3)', 3));
ST_ASTEXT(text) |
---------------------
MULTIPOINT M (1 2 3) |
总数目:1
select ST_AsText(ST_LocateBetween('POINTM(1 2 3)', 2, 3));
ST_ASTEXT(text) |
---------------------
MULTIPOINT M (1 2 3) |
总数目:1
ST_LocateBetween¶
ST_LocateBetween — 根据指定的测量值范围,返回一个在输入几何对象的M坐标能匹配的的geometry collection 对象,不支持Polygon对象。
参数¶
geomA
geometry类型。
measure_start
float类型。
measure_end
float类型。
offset
float类型。如果已经提供了偏移单位,根据提供的偏移单位,在输入的LINESTRING上向左或向右偏移。偏移值为正,则向左偏移,偏移值为负,则向右偏移。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(the_geom)
FROM (SELECT ST_LocateBetween(ST_GeomFromText('MULTILINESTRING M ((1 2 3, 3 4 2, 9 4 3),(1 2 3, 5 4 5))'),1.5, 3) As the_geom) As foo;
ST_ASTEXT(text) |
---------------------
GEOMETRYCOLLECTION M |
(LINESTRING M (1 2 3|
,3 4 2,9 4 3),POINT |
M (1 2 3)) |
总数目:1
SELECT ST_AsText(the_geom)
FROM (SELECT ST_LocateBetween(ST_GeomFromText('MULTILINESTRING M ((1 2 3, 3 4 2, 9 4 3),(1 2 3, 5 4 5))'),1.5, 3, 0.1) As the_geom) As foo;
ST_ASTEXT(text) |
---------------------
MULTILINESTRING((0.92|
9289321881345 2.0707|
1067811865,2.9292893|
2188135 4.0707106781|
1865,2.9444429766980|
4 4.08314696123025,2|
.96173165676349 4.09|
238795325113,2.98049|
096779839 4.09807852|
804032,3 4.1,9 4.1)) |
总数目:1
ST_LocateBetweenElevations¶
ST_LocateBetweenElevations — 返回高度值在指定范围内的几何对象(collection)。目前只支持 3D, 4D LINESTRINGS 和 MULTILINESTRINGS。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsEWKT(ST_LocateBetweenElevations(
ST_GeomFromEWKT('LINESTRING(1 2 3, 4 5 6)'),2,4)) As ewelev;
EWELEV(text) |
------------------
MULTILINESTRING((1|
2 3,2 3 4)) |
总数目:1
SELECT ST_AsEWKT((ST_Dump(the_geom)).geom)
FROM
(SELECT ST_LocateBetweenElevations(
ST_GeomFromEWKT('LINESTRING(1 2 6, 4 5 -1, 7 8 9)'),6,9) As the_geom) As foo;
ST_ASEWKT(text) |
---------------------
POINT(1 2 6) |
---------------------
LINESTRING(6.1 7.1 6,|
7 8 9) |
总数目:2
ST_InterpolatePoint¶
ST_InterpolatePoint — 根据提供的点,返回输入几何对象离提供的点最近的点的M值。
返回值¶
返回值为float类型。
示例¶
SELECT ST_InterpolatePoint('LINESTRING M (0 0 0, 10 0 20)', 'POINT(5 5)');
ST_INTERPOLATEPOINT(double precision) |
-------------------------------------------
10 |
总数目:1
ST_AddMeasure¶
ST_AddMeasure — 返回在起点和终点之间线性插值测量元素的衍生几何体。
示例¶
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('LINESTRING(1 0, 2 0, 4 0)'),1,4)) As ewelev;
EWELEV(text) |
------------------
LINESTRING M (1 0 |
1,2 0 2,4 0 4) |
总数目:1
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('LINESTRING(1 0 4, 2 0 4, 4 0 4)'),10,40)) As ewelev;
EWELEV(text) |
------------------
LINESTRING ZM (1 0|
4 10,2 0 4 20,4 |
0 4 40) |
总数目:1