名前

= — ジオメトリー/ジオグラフィ A の座標と座標の並び順がジオメトリー/ジオグラフィ B と同じ場合にTRUEを返します。

概要

boolean =( geometry A , geometry B );

boolean =( geography A , geography B );

説明

=演算子は、ジオメトリー/ジオグラフィ A の座標と座標の並び順がジオメトリー/ジオグラフィ B と同じ場合にTRUEを返します。PostgreSQL は、ジオメトリーの内部の順位付けと比較 (GROUP BY や ORDER BY 節などで使います) のために、ジオメトリー用に定義されている=, <および> 演算子を使います。

[注記]

この演算子は、同じ座標値と並び順である、全ての点で確実に同じジオメトリー/ジオグラフィだけを同じと考えます。「空間的に等価」、つまり、並び順は無視し、異なる表現でも同じ空間領域を占めるかどうかをテストするには、ST_OrderingEqualsまたはST_Equalsを使います。

[注意]

この演算子は、ジオメトリーで有効なインデックスを一切*使いません*。インデックスを使った確実な等価性試験を行うには、=と&&を併用します。

Changed: 2.4.0, 以前の版では、ジオメトリー自体の等価性でなくバウンディングボックスが等価かどうかを見ていました。バウンディングボックスが等価かどうかを知る必要がある場合には、替わりに~=を使います。

このメソッドは曲線ストリングと曲線に対応しています。

この関数は多面体サーフェスに対応しています。

コード
SELECT 'LINESTRING(0 0,0 1,1 0)'::geometry = 'LINESTRING(1 1,0 0)'::geometry;
出力
 ?column?
----------
 f
(1 row)
Geometry figure for visual-st-geometry-eq-01
コード
SELECT column1
FROM ( VALUES
    ('LINESTRING(0 0, 1 1)'::geometry),
    ('LINESTRING(1 1, 0 0)'::geometry)) AS foo;
出力
          st_astext
---------------------
 LINESTRING(0 0,1 1)
 LINESTRING(1 1,0 0)
(2 rows)
Geometry figure for visual-st-geometry-eq-02

ご注意: GROUP BY はジオメトリーの同等性を比較するために "=" を使います。

コード
SELECT column1
FROM ( VALUES
    ('LINESTRING(0 0, 1 1)'::geometry),
    ('LINESTRING(1 1, 0 0)'::geometry)) AS foo
GROUP BY column1;
出力
      st_astext
---------------------
 LINESTRING(0 0,1 1)
 LINESTRING(1 1,0 0)
(2 rows)
Geometry figure for visual-st-geometry-eq-03

2.0より前ではこれは TRUE を返していました。

コード
SELECT 'POINT(1707296.37 4820536.77)'::geometry =
   'POINT(1707296.27 4820536.87)'::geometry As pt_intersect;
出力
 pt_intersect
--------------
 f
(1 row)

関連情報

ST_Equals, ST_OrderingEquals, ~=