例えば、東京駅八重洲南口の座標は、
35.680101,139.768678です。
しかし、GPSロガー等の機器の生の出力では、10進法ではなく度,分が使われている場合があります。
例えば、私の所有するGPSロガーの出力は以下の通りで、
$GPRMC,045511.000,A,3542.8956,N,13945.6317,E,0.21,53.71,030813,,,A*5B $GPGGA,045511.000,3542.8956,N,13945.6317,E,1,06,3.0,37.9,M,39.4,M,,0000*65 $GPGSA,A,3,19,27,03,06,18,16,,,,,,,4.1,3.0,2.8*38 $GPGSV,4,1,15,01,20,203,08,03,63,024,46,06,47,048,42,07,39,302,12*70 $GPGSV,4,2,15,08,14,322,,09,08,324,20,11,42,217,,13,08,247,*7A $GPGSV,4,3,15,16,46,099,34,18,08,055,21,19,69,319,32,21,01,038,*7E $GPGSV,4,4,15,22,16,087,14,23,00,223,,27,56,034,41*46 $GPRMC,045512.000,A,3542.8957,N,13945.6315,E,0.17,53.71,030813,,,A*5E ...
そこから、GPGGAのみを抜き出してみます。
$GPGGA,045510.000,3540.8061,N,13946.1207,E,1,06,3.0,38.0,M,39.4,M,,0000*6Eここで、 3540.8061,N,13946.1207,E, は、北緯35度40.8061分、東経139度46.1207分 を表しています。
したがって、この値を100で割っただけの値をGoogle Mapでプロットしようとすると、おかしな位置になってしまいます。
まさかの藤沢市。
こんな時は、以下の変換式に当てはめる。
GPSロガーの出力(度,分)をGoogle Map(10進数)に変換する
Google Mapの緯度 = (GPSロガーの緯度 ÷ 100.0)の整数部分 + (GPSロガーの緯度 ÷ 100)の小数部分÷60.0×100.0
Google Mapの経度 = (GPSロガーの経度 ÷ 100.0)の整数部分 + (GPSロガーの経度 ÷ 100)の小数部分÷60.0×100.0
例えば、Pythonで緯度を変換する場合は、以下の通り。
>>> import math >>> logger_latitude = 3540.8061 >>> decimal, integer = math.modf(logger_latitude/100.0) >>> gps_latitude = integer + decimal / 60.0 * 100.0 >>> gps_latitude 35.68010166666666確かに、東京駅の10進数緯度35.680101になっています。
ちなみに、以下のページから、度分秒と10進数の座標の相互変換を行うことが出来ます。
新しい Google マップで緯度と経度を使用する
0 件のコメント:
コメントを投稿