名前

<#> — 2ジオメトリのバウンディングボックス間の距離を返します。ポイントの場合は、距離とほとんど同じ(バウンディングボックスは単精度であり、ジオメトリは倍精度なので異なる)かを調べます。KNN GiST機能を使った距離による並べ替えと近傍の制限とに使えます。

概要

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

説明

KNN GiST 演算子<#>は、空間インデクスが有効な場合に、2つの浮動小数点数による、空間インデクスから読まれるバウンディングボックス間の距離を返します。近傍の概ねの距離による並び替えに使います。

[注記]

これの被演算子はジオメトリで利用できるインデクスを使用します。他の演算子との相違点は、ORDER BY節でのみインデクスが使用される点です。

[注記]

ジオメトリのひとつがg1.geom <#>と違ってORDER BY (ST_GeomFromText('POINT(1 2)') <#> geom)といった定数である場合には、インデクスが有効になるだけです。

初出: 2.0.0 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, <->