|=| — AトラジェクトリとBトラジェクトリとの最接近する時の距離を返します。
double precision |=|(
geometry A , geometry B )
;
|=|
演算子は二つのトラジェクトリの3次元距離を返します (ST_IsValidTrajectoryを参照して下さい)。これは、ST_DistanceCPAと同じですが、N次元インデクスを使った近傍探索 (PostgreSQL 9.5.0以上)で使われる演算子です。
この演算子は、ジオメトリで使用可能なND GiST (n次元GiST)インデクスを使用します。他の空間インデクスを使う演算子と違い、ORDER BY句でのみ空間インデクスを使います。 |
ジオメトリのひとつが定数となる (副問い合わせ/共通テーブル式にない)場合 (a.geomでなく'SRID=3005;LINESTRINGM(0 0 0,0 0 1)'::geometry等となる場合)には、インデクスが有効になるだけです。 |
Availability:: 2.2.0 インデクス対応はPostgreSQL 9.5以上でのみ有効です。
-- psql変数にリテラルクエリのトラジェクトリを保存 \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; track_id dist ----------+------------------- 395 | 0.576496831518066 380 | 5.06797130410151 390 | 7.72262293958322 385 | 9.8004461358071 405 | 10.9534397988433 (5 rows)