- カテゴリ:
ST_DISTANCE¶
2つの GEOGRAPHY オブジェクト間の最小測地線距離、または2つの GEOMETRY オブジェクト間の最小ユークリッド距離を返します。
構文¶
ST_DISTANCE( <geography_or_geometry_expression_1> , <geography_or_geometry_expression_2> )
引数¶
geography_or_geometry_expression_1
引数の型は GEOGRAPHY または GEOMETRY にする必要があります。
geography_or_geometry_expression_2
引数の型は GEOGRAPHY または GEOMETRY にする必要があります。
戻り値¶
距離を表す FLOAT 値、または NULL を返します。
GEOGRAPHY 入力値の場合、距離はメートル単位です。
GEOMETRY 入力値の場合、距離は、入力座標の定義に使用されたのと同じ単位で計算されます。
1つ以上の入力ポイントが NULL の場合は NULL を返します。
使用上の注意¶
GEOMETRY オブジェクトの場合、2つの入力 GEOMETRY オブジェクトの SRIDs が異なると、関数はエラーを報告します。
例¶
以下の例では、 ST_DISTANCE 関数を使用しています。
GEOGRAPHY 例¶
赤道に沿って1度離れた2点間の距離をメートルで示します(約111キロメートルまたは69マイル)。
WITH d AS
( ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(1, 0)) )
SELECT d / 1000 AS kilometers, d / 1609 AS miles;
+---------------+--------------+
| KILOMETERS | MILES |
|---------------+--------------|
| 111.195101177 | 69.108204585 |
+---------------+--------------+
1つ以上の入力値が NULL の場合は、 ST_DISTANCE 関数の出力を表示します。
SELECT ST_DISTANCE(ST_MAKEPOINT(0, 0), ST_MAKEPOINT(NULL, NULL)) AS null_input;
+------------+
| NULL_INPUT |
|------------|
| NULL |
+------------+
GEOMETRY 例¶
次の例では、 GEOGRAPHY と GEOMETRY の入力オブジェクトに対して計算された距離を比較します。
SELECT ST_DISTANCE(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(1 1)')) AS geometry_distance,
ST_DISTANCE(TO_GEOGRAPHY('POINT(0 0)'), TO_GEOGRAPHY('POINT(1 1)')) AS geography_distance;
+-------------------+--------------------+
| GEOMETRY_DISTANCE | GEOGRAPHY_DISTANCE |
|-------------------+--------------------|
| 1.414213562 | 157249.628092508 |
+-------------------+--------------------+
その他の例については、 GEOGRAPHY と GEOMETRY のデータ型を比較する例 をご参照ください。