Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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 类型

使用说明

  1. 此函数计算 2D 中的点,如果存在Z 和 M 值,则执行 Z 和 M 插值计算,而 ST_3DLineInterpolatePoint 计算 3D 中的点,然后仅对 M 值进行插值。
  2. 这个函数支持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) |
+------------+