カテゴリ:

地理空間関数

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> )
Copy

引数

geography_expression_for_origin

原点(オブザーバーの場所)を表すポイントである GEOGRAPHY オブジェクト。

geography_expression_for_target

方位角を計算するポイントである GEOGRAPHY オブジェクト。

geometry_expression_for_origin

原点(オブザーバーの場所)を表すポイントである GEOMETRY オブジェクト。

geometry_expression_for_target

方位角を計算するポイントである GEOMETRY オブジェクト。

戻り値

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

使用上の注意

  • 入力地理空間オブジェクトの1つがポイントでない場合、関数はエラーを報告します。

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

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 |
+---------------------------------+
Copy

次の例では、原点の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 |
+---------------------------------+
Copy

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                                                      |
+------------------------------------------------------------------+
Copy

次の例では、原点の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                                                            |
+-------------------------------------------------------------------------+
Copy