カテゴリ:

地理空間関数

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