名稱

|=| — 傳回軌跡 A 和 B 在它們最接近的接觸點之間的距離。

概要

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)'::geometry 而不是 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)