ST_AZIMUTH
原点(オブザーバーの位置)を表すポイントと特定のポイントを指定すると、方位角がラジアンで返されます。両方のポイントは GEOGRAPHY または GEOMETRY オブジェクトのいずれかでなければなりません。
方位角 は、原点にあるオブザーバーが北(GEOGRAPHY オブジェクトの場合)またはY軸(GEOMETRY オブジェクトの場合)を向いているときの2つのポイント間の角度です。角度は時計回りに正で、次のとおりです。
北を指す線分は0。
東を指す線分はπ/2。
南を指す線分はπ。
西を指す線分は3π/2。
2つのポイントが同じ場所である場合、関数は NULL を返します。
GEOGRAPHY オブジェクトの場合、球体の地球では こちらで説明する式 を使用して方位角を決定します。
構文
ST_AZIMUTH( <geography_expression_for_origin> , <geography_expression_for_target> )
ST_AZIMUTH( <geometry_expression_for_origin> , <geometry_expression_for_target> )
引数
geography_expression_for_origin原点(オブザーバーの場所)を表すポイントである GEOGRAPHY オブジェクト。
geography_expression_for_target方位角を計算するポイントである GEOGRAPHY オブジェクト。
geometry_expression_for_origin原点(オブザーバーの場所)を表すポイントである GEOMETRY オブジェクト。
geometry_expression_for_target方位角を計算するポイントである GEOMETRY オブジェクト。
戻り値
ラジアン単位の方位角であるタイプ REAL の値を返します。
例
GEOGRAPHY 例
次の例では、原点のPoint (0, 1)とターゲットのPoint (0, 0)の方位角をラジアンで返します。
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 |
+---------------------------------+
次の例では、原点のPoint (0, 1)とターゲットのPoint (1、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 |
+---------------------------------+
GEOMETRY 例
次の例では、原点のPoint (0, 1)とターゲットのPoint (0, 0)の方位角をラジアンで返します。
SELECT ST_AZIMUTH(
TO_GEOMETRY('POINT(0 1)', TO_GEOMETRY('POINT(0 0)')
);
+------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 1)'), TO_GEOMETRY('POINT(0 0)')) |
|------------------------------------------------------------------|
| 3.141592654 |
+------------------------------------------------------------------+
次の例では、原点のPoint (0, 1)とターゲットのPoint (0.707, 0.707)の方位角を度単位で返します。
SELECT ST_AZIMUTH(
TO_GEOMETRY('POINT(0 0)', TO_GEOMETRY(0.707 0.707')
);
+-------------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(0.707 0.707')) |
|-------------------------------------------------------------------------|
| 0.7853981634 |
+-------------------------------------------------------------------------+