category: データベース
DATE : 2007/09/19 (Wed)
DATE : 2007/09/19 (Wed)
PostGIS では、幾何(geometry)オブジェクト同士の等しさを比較するための演算子が2種類用意されています。
- ~=
- 幾何オブジェクト同士が厳密に等しいかどうかを比較する。
- =
- 幾何オブジェクト同士の境界(boundary box)が等しいかどうかを比較する。
データベースに格納済の幾何オブジェクト同士を直接比較するには、なるべく「~=」演算子を使います。例えば、点(POINT)オブジェクトを考えてみます。点が密集しているところでは、それらの境界は同じとみなされることがあります。ある精度以上で密集していると、それらの境界はある程度で丸められてしまうようです。そのため、点が密集しているところで「=」演算子を使用すると、厳密には座標の異なる点オブジェクトまで等しい点オブジェクトと見なされることがあります。
ただし、データベースから特定の座標をテキスト情報(Well-Known Text など)で取り出して比較する場合には「=」を使う必要があります。テキストでの座標表現は特定の精度で丸められているため、データベース内のバイナリ形式で格納された座標と一致しません。そのため、データベースから取り出した情報から厳密な比較を行うには、テキスト情報ではなくバイナリ情報(Well-Known Binary など)で取り出す必要があります。
PR
忍者ブログ [PR]