十進経緯度の相互変換

      2015/07/24

地図でよく使われる座標として緯度経度があります。たとえば東京タワーの場所はこのような緯度経度になります。

東経139度44分43.559秒 北緯35度39分30.888秒(WGS84)

座標は「度(°)」「分(′)」「秒(″)」で表されますが、「度」は十進数で「分」と「秒」は六十進数です。このような異なる位取り記数法をコンピュータで計算するのは困難です。そのため GIS の世界では一般的に「分」と「秒」を「度」に換算した「十進経緯度(十進度)」を用います。

十進経緯度 = 度 + (分 / 60) + (秒 / 3600)

度は東経や北緯で正の値、西経や南緯で負の値が使用されます。値が負の場合は以下となります。

十進経緯度 = -度 - (分 / 60) - (秒 / 3600)

この計算式で東京タワーの十進経緯度を XY 座標で求めると以下になります。

X:139.745433,Y:35.65858

また、十進経緯度から度分秒を求める方法は以下となります。「度」は整数部分、「分」は小数点以下と 60 の積の整数部分、「秒」は分の小数点以下と 60 の積となります。Pythonで関数化したものがこちら。

def GetDMS(DecimalDegree):
    degree = int(DecimalDegree)
    minute = int((DecimalDegree - degree) * 60)
    second = ((DecimalDegree - degree) * 60 - minute) * 60
    return str(degree) + "度" + str(minute) + "分" + str(second) + "秒"

print GetDMS(135.5902778)

ArcObjects を使えばもっと簡単で、ILatLonFormat::GetDMS メソッドで一発取得できます。

 - GIS, プログラミング, 基礎知識