このトピックでは、ST_DHithin関数について説明します。 この関数は、2つのオブジェクトが互いに指定された距離内にあるかどうかをチェックします。 2つのオブジェクトが互いに指定された距離内にある場合、この関数はTrueを返します。 それ以外の場合、この関数はFalseを返します。
構文
boolean ST_DWithin (ジオメトリg1、ジオメトリg2、倍精度distanceOfSrid);
ブールST_DNithin (geography gg1、geography gg2、倍精度distanceMeters);
ブールST_DNithin (geography gg1、geography gg2、倍精度distanceMeters、ブールuseSpheroid);
パラメーター
パラメーター | 説明 |
g1 | 指定する最初のジオメトリオブジェクト。 |
g2 | 指定する2番目のジオメトリオブジェクト。 |
distanceOfSrid | 指定する距離。 距離は、ジオメトリオブジェクトの空間参照系で指定された単位で測定されます。 |
gg1 | 指定する最初のgeographyオブジェクト。 |
gg2 | 指定する2番目のgeographyオブジェクト。 |
distanceMeters | 指定する距離。 単位: メートル。 |
usesSpheroid | 楕円体参照システムを使用するかどうかを指定します。 楕円体参照システムを使用する場合、この関数はより正確な結果を返しますが、速度はわずかに遅くなります。 |
説明
- 2つのジオメトリオブジェクトを指定する場合、ジオメトリオブジェクトは同じ空間参照識別子 (SRID) を持つ必要があります。
- デフォルトでは、2つの地理オブジェクトを指定した場合、距離はメートル単位で測定されます。
- この関数は、指定したジオメトリオブジェクトの境界ボックスを、ジオメトリオブジェクトで使用可能なすべてのインデックスを使用して自動的に比較します。
- 2つの3Dオブジェクトが互いに指定された距離内にあるかどうかを確認するには、ST_3DDWithin関数を使用します。
例
次の例は、ST_DHinth関数とST_DFullyWithin関数の違いを示しています。
SELECT ST_DFullyWithin(g1,g2,2), ST_DHinth (g1,g2,2) from (SELECT 'LINESTRING(0 1,1 1)'::geometry as g1,
'LINESTRING(0 0,0 -1)'::geometry as g2) as test;
st_dfullywithin | st_dwithin
----------------- ------------
f | t
(1行)