極角と方位角の相互変換

2016/9/1 (木)

極角(polar angle)から方位角(azimuth angle)、もしくはその逆を計算する方法です。極角と方位角は 1つの式で求めることができます。

  1. 元の値を負にして90を加算し、さらに360を加算
  2. その値を360で除算した剰余が極角/方位角を相互変換した値

この方法で角度が0度未満や360度より大でも 0 =< result < 360 の値を返すことができます。極角・方位角についてはこちらの記事をご覧ください。

result = (90 - value + 360) % 360 
result = (90 - value + 360) % 360    'もしくは
result = (90 - value + 360) Mod 360
'角度の相互変換
'esriDirectionType
'   esriDTNorthAzimuth      :北方位角(北から時計回りの角度)
'   esriDTSouthAzimuth      :南方位角(南から時計回りの角度)
'   esriDTPolar             :極座標角(東から反時計回りの角度)
'   esriDTQuadrantBearing   :四分円方位角(指定した四方位から指定方位に向いた角度[eg,S 45 E])
Private Function GetAzimuthalToGeneral(ByVal Value As Variant, _
                                        Optional ByVal InputType As esriDirectionType = esriDTNorthAzimuth, _
                                        Optional ByVal OutputType As esriDirectionType = esriDTPolar, _
                                        Optional ByVal Precision As Long = 0) As Variant
 
    Dim pAngularConverter As IAngularConverter
    Set pAngularConverter = New AngularConverter
     
    pAngularConverter.SetString Value, InputType, esriDUDecimalDegrees
     
    Select Case OutputType
    Case esriDTQuadrantBearing
        GetAzimuthalToGeneral = pAngularConverter.GetString(OutputType, esriDUDecimalDegrees, Precision)
         
    Case Else
        GetAzimuthalToGeneral = pAngularConverter.GetAngle(OutputType, esriDUDecimalDegrees)
         
    End Select
          
End Function

関連記事

  • この記事を書いた人

羽田 康祐

伊達と酔狂でエクストリーム スポーツに挑む GIS エンジニア。 GIS、IT、趣味に関して日々の出来事で学んだ記憶を記録するためにブログを書いています。同じ問題に出会った方の参考になっていただければ幸いです。GIS を使った自己紹介はこちら

-プログラミング
-, ,

Copyright© WINGFIELD since1981 , 2019 All Rights Reserved.