YouTube | Facebook | X(Twitter) | RSS

極角と方位角の相互変換

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上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング
-, ,