カテゴリ:

地理空間関数

ST_AZIMUTH

2つのポイントを指定すると、2つのポイントによって形成される線分の方位角(ラジアン)を返します。

方位角は、北から線分までの角度です。角度は時計回りに正で、次のとおりです。

  • 北を指す線分は0。

  • 東を指す線分はπ/2。

  • 南を指す線分はπ。

  • 西を指す線分は3π/2。

2つのポイントが同じ場所である場合、関数は NULL を返します。

球形地球では、 こちら で説明する式を使用して方位角を決定します。

ご用心

楕円の地球モデルを使用するシステムは、 方位角 に対してより複雑なアルゴリズムを使用します。これにより、時として著しく異なる結果が得られます。

構文

ST_AZIMUTH( <geography_expression_1> , <geography_expression_2> )

引数

地理式1

ポイントである GEOGRAPHY オブジェクト。

地理式2

ポイントである GEOGRAPHY オブジェクト。

戻り値

ラジアン単位の方位角であるタイプ REAL の値を返します。

使用上の注意

  • 1つまたは両方のの入力ポイントが NULL の場合は NULL を返します。

次の例では、南を指す線分を形成する2つの点の方位角をラジアンで返します。

SELECT ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(0 0)')
);
+---------------------------------+
|                     ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(0 0)') |
|                               ) |
|---------------------------------|
|                     3.141592654 |
+---------------------------------+

次の例では、北東を指す線分を形成する2つの点の方位角を度数で返します。

SELECT DEGREES(ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(1 2)')
));
+---------------------------------+
|             DEGREES(ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(1 2)') |
|                              )) |
|---------------------------------|
|                    44.978182941 |
+---------------------------------+