ST_LINEINTERPOLATEPOINT
📄字数 838
👁️阅读量 加载中...
功能描述
返回沿线在百分比指示位置的插值点。
语法格式
sql
GEOMETRY ST_LINEINTERPOLATEPOINT(GEOMETRY a_linestring, DOUBLE a_fraction);
GEOGRAPHY ST_LINEINTERPOLATEPOINT(GEOGRAPHY a_linestring, DOUBLE a_fraction, BOOLEAN use_spheroid = TRUE);参数说明
- a_linestring: 目标 GEOMETRY/GEOGRAPHY 线串对象。
- a_fraction:点的位置与线长度的比率,范围:[0,1]。
- use_spheroid:距离测量是否使用椭球体,可选,默认:TRUE。
- TRUE:使用椭球体。
- FALSE:在球面上进行测量,计算更快。
函数返回类型
GEOMETRY/GEOGRAPHY 类型
使用说明
- 此函数计算 2D 中的点,如果存在Z 和 M 值,则执行 Z 和 M 插值计算,而 ST_3DLineInterpolatePoint 计算 3D 中的点,然后仅对 M 值进行插值。
- 这个函数支持3D且不会降低z-index。
示例
插值点位于 20% 位置 (0.20) 的线串:
sql
SQL> SELECT TO_CHAR(ST_AsEWKT( ST_LineInterpolatePoint(
'LINESTRING(25 50, 100 125, 150 190)',
0.2 )));
+------------------------------------------+
| EXPR1 |
+------------------------------------------+
| POINT(51.5974135047432 76.5974135047432) |
+------------------------------------------+3D 线的中点:
sql
SQL> SELECT TO_CHAR(ST_AsEWKT( ST_LineInterpolatePoint('
LINESTRING(1 2 3, 4 5 6, 6 7 8)',
0.5 )));
+--------------------+
| EXPR1 |
+--------------------+
| POINT(3.5 4.5 5.5) |
+--------------------+直线上距离某点最近的点:
sql
SQL> SELECT TO_CHAR(ST_AsText( ST_LineInterpolatePoint( line.geom,
ST_LineLocatePoint( line.geom, 'POINT(4 3)'))))
FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)') As geom) AS line;
+------------+
| EXPR1 |
+------------+
| POINT(3 4) |
+------------+