ST_Distance — 2 つのジオメトリ値またはジオグラフィ値間の距離を返します。
構文
float ST_Distance(geometry g1, geometry g2);
float ST_Distance(geography gg1, geography gg2);
float ST_Distance(geography gg1, geography gg2, boolean useSpheroid);パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
g1 | geometry | 最初のジオメトリ オブジェクトです。 |
g2 | geometry | 2 番目のジオメトリ オブジェクトです。 |
gg1 | geography | 最初のジオグラフィ オブジェクトです。 |
gg2 | geography | 2 番目のジオグラフィ オブジェクトです。 |
useSpheroid | boolean | 距離計算に楕円体を使用するかどうかを指定します。デフォルト値は true です。false を指定すると、より高速な球面計算が使用されます。 |
説明
geometry 型の場合、2 つのジオメトリ オブジェクト間の最小 2D ユークリッド距離を、その座標参照系(CRS)の単位で返します。
geography 型の場合、ジオグラフィ オブジェクト間の最小球面距離(メートル単位)を返します。useSpheroid が false の場合、代わりにより高速な球面計算が使用されます。
この関数は、円弧文字列(circular strings)および曲線(curves)をサポートします。
例
ジオメトリと3D 距離の比較
以下の例では、ST_Distance と ST_3DDistance の違いを示しています。3D ポイント (0,0,0) から (1,1,1) までの距離について、ST_Distance は 2D 平面上の距離を計算するのに対し、ST_3DDistance はすべての 3 つの次元を考慮します。
SELECT ST_Distance(g1, g2), ST_3DDistance(g1, g2)
FROM (
SELECT 'POINT(0 0 0)'::geometry AS g1,
'POINT(1 1 1)'::geometry AS g2
) AS test;出力結果:
st_distance | st_3ddistance
-----------------+------------------
1.4142135623731 | 1.73205080756888
(1 行)