PostGISの近接検索のST_DWithinとST_Distanceの違いは何ですか?


14

緯度と経度の座標がジオメトリフィールドに格納されたテーブルにレコードが格納されています。ユーザーが指定した参照ポイントの近くにあるすべてのレコードを検索したい。「近く」とは、おそらく100km未満(さらに小さい場合もある)を意味します。

私が見るほとんどの例はを使用していますST_DWithin。使用できない理由はありますST_Distanceか?使用しての違いは何であるST_DWithinST_Distanceこれを行うには?

例えば:

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1)

SELECT name, ST_AsText(coords)
FROM places
WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

回答:


15

ST_Distanceは、すべての行で実行および評価する必要がある計算です。ST_DWithinはインデックスを使用できるため、かなり高速になる可能性があります。


4
:また、ほとんど同じこと言っている、これを見つけることができたpostgis.net/2013/08/26/tip_ST_DWithin
ユーザー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.