Name

|=| — 返回A和B轨迹在其最近的接近点处的距离。

Synopsis

double precision |=|( geometry A , geometry B );

描述

这个 |=| 运算符返回两个轨迹之间的3D距离(请参见 ST_IsValidTrajectory )。这与 ST_DistanceCPA 但作为运算符,它可以用于使用N维索引执行最近邻居搜索(需要PostgreSQL 9.5.0或更高版本)。

[Note]

该操作数将使用几何图形上可用的ND Gist索引。它与其他使用空间索引的运算符的不同之处在于,仅当运算符位于ORDER BY子句中时才使用空间索引。

[Note]

仅当其中一个几何图形是常量(不在子查询/CTE中)时,索引才起作用。例如:‘SRID=3005;LINESTRINGM(0 0 0,0 0 1)’::几何图形而不是a.geom

可用性:2.2.0。索引支持仅适用于PostgreSQL 9.5+

示例

-- Save a literal query trajectory in a psql variable...
\set qt 'ST_AddMeasure(ST_MakeLine(ST_MakePointM(-350,300,0),ST_MakePointM(-410,490,0)),10,20)'
-- Run the query !
SELECT track_id, dist FROM (
  SELECT track_id, ST_DistanceCPA(tr,:qt) dist
  FROM trajectories
  ORDER BY tr |=| :qt
  LIMIT 5
) foo;
 track_id        dist
----------+-------------------
      395 | 0.576496831518066
      380 |  5.06797130410151
      390 |  7.72262293958322
      385 |   9.8004461358071
      405 |  10.9534397988433
(5 rows)

另请参阅

ST_DistanceCPA, ST_ClosestPointOfApproach, ST_IsValidTrajectory