Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_CLOSESTPOINTOFAPPROACH

📄字数 900
👁️阅读量 加载中...

功能描述

返回沿着给定轨迹插值的点之间距离最短的最小测量值(M 值)。

语法格式

sql
DOUBLE ST_CLOSESTPOINTOFAPPROACH(GEOMETRY track1, GEOMETRY track2);

参数说明

  • track1:第一个目标轨迹对象。
  • track2:第二个目标轨迹对象。

函数返回类型

DOUBLE 类型

使用说明

  1. 输入必须是经 ST_IsValidTrajectory 检查的有效轨迹。
  2. 如果轨迹在其 M 范围内不重叠,则返回 Null。
  3. 要获取计算得到的度量值上的实际点,请使用 ST_LocateAlong。
  4. 该函数支持 3d 并且不会丢失 z-index。

示例

sql
-- Return the time in which two objects moving between 10:00 and 11:00
-- are closest to each other and their distance at that point
SQL> WITH inp AS ( SELECT
            ST_AddMeasure('LINESTRING Z (0 0 0, 10 0 5)'::geometry,
              UNIX_TIMESTAMP('2015-05-26 10:00'),
              UNIX_TIMESTAMP('2015-05-26 11:00')
            ) a,
            ST_AddMeasure('LINESTRING Z (0 2 10, 12 1 2)'::geometry,
              UNIX_TIMESTAMP('2015-05-26 10:00'),
              UNIX_TIMESTAMP('2015-05-26 11:00')
            ) b
          ), cpa AS (
            SELECT ST_ClosestPointOfApproach(a,b) m FROM inp
          ), points AS (
            SELECT ST_GeometryN(ST_LocateAlong(a,m),1) pa,
                   ST_GeometryN(ST_LocateAlong(b,m),1) pb
            FROM inp, cpa
          )
          SELECT FROM_UNIXTIME(m) t,
                 ST_Distance(pa,pb) distance,
                 TO_CHAR(ST_AsText(pa, 2)) AS pa, TO_CHAR(ST_AsText(pb, 2)) AS pb
          FROM points, cpa;

+--------------------------+--------------+--------------------------------------+----------------------------------------+
|            T             |   DISTANCE   |                  PA                  |                   PB                   |
+--------------------------+--------------+--------------------------------------+----------------------------------------+
| 2015-05-26 10:45:31.034  | 1.960368e+00 | POINT ZM (7.59 0 3.79 1432637131.03) | POINT ZM (9.1 1.24 3.93 1432637131.03) |
+--------------------------+--------------+--------------------------------------+----------------------------------------+