名稱

<#> — 返回 A 和 B 邊界框之間的 2D 距離。

概要

double precision <#>( geometry A , geometry B );

描述

<#> 運算子返回兩個浮點數邊界框之間的距離,可能會從空間索引中讀取 (需要 PostgreSQL 9.1+)。適用於執行最近鄰近似距離排序。

[Note]

此運算元會使用幾何體上可能存在的任何索引。它與其他使用空間索引的運算子不同,在於空間索引僅在運算子位於 ORDER BY 子句中時才會被使用。

[Note]

只有當其中一個幾何體是常數時,索引才會生效,例如 ORDER BY (ST_GeomFromText('POINT(1 2)') <#> geom) 而不是 g1.geom <#>。

可用性:2.0.0 -- KNN 僅適用於 PostgreSQL 9.1+

範例

SELECT *
FROM (
SELECT b.tlid, b.mtfcc,
	b.geom <#> ST_GeomFromText('LINESTRING(746149 2948672,745954 2948576,
		745787 2948499,745740 2948468,745712 2948438,
		745690 2948384,745677 2948319)',2249) As b_dist,
		ST_Distance(b.geom, ST_GeomFromText('LINESTRING(746149 2948672,745954 2948576,
		745787 2948499,745740 2948468,745712 2948438,
		745690 2948384,745677 2948319)',2249)) As act_dist
    FROM bos_roads As b
    ORDER BY b_dist, b.tlid
    LIMIT 100) As foo
    ORDER BY act_dist, tlid LIMIT 10;

   tlid    | mtfcc |      b_dist      |     act_dist
-----------+-------+------------------+------------------
  85732027 | S1400 |                0 |                0
  85732029 | S1400 |                0 |                0
  85732031 | S1400 |                0 |                0
  85734335 | S1400 |                0 |                0
  85736037 | S1400 |                0 |                0
 624683742 | S1400 |                0 | 128.528874268666
  85719343 | S1400 | 260.839270432962 | 260.839270432962
  85741826 | S1400 | 164.759294123275 | 260.839270432962
  85732032 | S1400 |           277.75 | 311.830282365264
  85735592 | S1400 |           222.25 | 311.830282365264
(10 rows)

另請參閱

ST_DWithin, ST_Distance, <->