NMEA フォーマット中の経緯度表記を Google Map で扱える形式に変換する

NMEA フォーマットにおける経緯度表記

GNSS 受信機が測位結果を出力する際のデータ形式の一つとして NMEA フォーマットが広く用いられています.NMEA フォーマットでは,提供する情報の種類に応じて,いくつかのセンテンスが定義されています.

例えば,GGA センテンスには,測位結果の緯軽度情報が含まれます.以下は GGA センテンスの例です.

$GPGGA,234840.000,3923.6330,N,14004.4555,E,1,03,12.42,51.8,M,37.1,M,,*67

カンマで区切られた項目のうち,3 番目が緯度,4 番目が緯度の南北(S or N),5 番目が経度,6 番目が経度の東西(E or W)を表します.

3 番目の項目は ddmm.mmmm というフォーマットで,度 (dd の部分) と分  (mm.mmmm の部分) の組み合わせとなっています.上記の例は,3 番目が 3923.6330 となっているので,(北緯) 39 度 23.6330 分を表しています.

5 番目の項目は dddmm.mmmm というフォーマットになります.上記の例は,5 番目が 14004.4555 となっているので,(東経) 140 度 4.4555 分を表しています.

Google Map における経緯度表記

Google Map では,座標を指定することで,指定座標周辺の地図を表示することができます.例えば,前期の例の経緯度を,以下のように URL 中に埋め込めば,指定座標を中心にした地図を表示できます.
`https://www.google.co.jp/maps/@39.3938833,140.0742583,15z`

このときの経緯度は,dd.ddddddd というフォーマットです.このフォーマットは,単純に何度なのかを 10 進数で表しています.上記例の URL は,北緯 39.3938833 度,東経 140.0742583 度の地点を中心にした地図を表示します.

Google Map を例にしましたが,OpenStreetMap や国土地理院地図でも,この形式での経緯度表記が用いられています.
`https://openstreetmap.org/#map=15/39.3938833/140.0742583`
`https://maps.gsi.go.jp/#15/39.3938833/140.0742583`

ネット上の他の記事を読むと,この記法は十進経緯度と呼ぶようです.以降この呼び方を使います.

度分表記から十進経緯度への変換

NMEA フォーマットにおける経緯度表記(度分表記)から十進経緯度への変換は,以下のようにします.

def convert( val ):
    degree = val // 100 # 100 で割った商の整数部分 (度) を計算
    minutes = val % 100 # 100 で割った余り (分) を計算
    return degree + minutes / 60 # 分の部分を度に変換

上記の関数の入力 val には,NMEA フォーマットにおける経緯度表記の値をそのまま 10 進数だと解釈した値を入れておきます (Float 型).この関数を使うことで十進経緯度に変換できます.

この記事が気に入ったらサポートをしてみませんか?