Namn

|=| — Returnerar avståndet mellan A- och B-banorna vid deras närmaste inflygningspunkt.

Synopsis

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

Beskrivning

Operatorn |=| returnerar 3D-avståndet mellan två banor (se ST_IsValidTrajectory). Detta är samma sak som ST_DistanceCPA, men som operator kan den användas för sökningar efter närmaste granne med ett N-dimensionellt index.

[Notera]

Denna operand använder ND GiST-index som kan finnas tillgängliga på geometrierna. Den skiljer sig från andra operatorer som använder spatiala index genom att det spatiala indexet endast används när operatorn är i ORDER BY-satsen.

[Notera]

Index startar bara om en av geometrierna är en konstant (inte i en underfråga/cte). t.ex. 'SRID=3005;LINESTRINGM(0 0 0,0 0 1)'::geometry istället för a.geom

Tillgänglighet: 2.2.0.

Exempel

Det här exemplet sorterar lagrade banor efter deras avstånd från en literal frågebana.

Kod
\set qt 'ST_AddMeasure(ST_MakeLine(ST_MakePointM(-350, 300, 0), ST_MakePointM(-410, 490, 0)), 10, 20)'

SELECT track_id, dist FROM (
  SELECT track_id,
    ST_DistanceCPA(tr, :qt) dist
  FROM trajectories
  ORDER BY tr |=| :qt
  LIMIT 5
) foo;
Utdata
track_id        dist
----------+-------------------
      395 | 0.576496831518066
      380 |  5.06797130410151
      390 |  7.72262293958322
      385 |   9.8004461358071
      405 |  10.9534397988433
(5 rows)