2024年9月23日月曜日

SIMCOM SIM7600のCGPSINFOの緯度経度情報DMM形式(度分.分)を変換してgoogle mapで表示


背景

仕事で利用しているSIM7600というLTEモジュールで取得できる位置情報がgoogle mapに値を渡しても位置表示してくれない形式で困ったので、方式名と変換方法を備忘録として記事に残します。

CGPSINFOの緯度経度はDMM形式

SIM7600のATコマンドマニュアルに緯度経度(latitude、longitude)が「dddmm.mmmmmm」形式であると表記されていました。

SIM7600 AT command manual V3.00
17.2.2 AT+CGPSINFO Get GPS fixed position information 参照

その形式で検索したとこと下記のページの解説でDMM形式と分かりました。
緯度・軽度 Supportメンテナンス

DMM形式(度分.分)を度分秒に変換するには、分の小数点に60をかけて秒に変換

DMM形式を紹介していたページに変換方法も解説されていました。
緯度・軽度 Supportメンテナンス

具体的としてDMM形式の下記の経度を度分秒に変換します。
13917.575255

小数点の左側2桁が分で、それより左の桁が度です。
13917.575255
^^^^^
DDDMM

度の小数点に60をかけると秒を算出できます。
13917.575255
^^^^^^
0.575255 * 60 = 34.5153

よってDMM形式の「13917.575255」は「139度17分34.52秒」です。

DMM形式を小数点形式に変換するには、分を60で割って度に加算

google mapの座標として渡しやすい小数点形式は、DMM形式の分から度の小数点以下の値を算出すれば良かったです。
13917.575255
^^^^^^^^^
139 + 17.575255 / 60 = 139.292920917

小数点形式ならgoogle mapへの受け渡しが容易

SIM7600がら取得した下記の緯度経度をgoogle mapに変換するには、小数点形式に変換した値をsearchのパスに渡すと位置を地図上に表示できます。
+CGPSINFO: 3610.559870,N,13917.575255,E,230824,220202.0,48.7,0.0,253.0

緯度
3610.559870
36 + 10.559870 / 60 = 36.175997833
経度
13917.575255
139 + 17.575255 / 60 = 139.292920917

小数点形式の緯度経度情報は「36.175997833,139.292920917」なので、それをgoogle mapのsearchパスに渡すと位置情報を表示できます。

https://www.google.com/maps/search/36.17606245,139.292920917

おわり

SIMCOMのSIM7600で取得できる位置情報がDMM形式と把握してそれを小数点形式に変換してgoogle mapに渡すことで、会社の駐車場に置いている装置の位置を期待通りに表示できました。
この記事を書くまで意味が分からなかった位置情報の度より下の分や秒を小数点形式に変換する方法は、時間と同様の考えの四則演算で可能と分かりました。

理解も深まり、期待通りに図示できて良かったです。

参考

SIM7600 AT command manual V3.00
緯度・軽度 Supportメンテナンス

0 件のコメント :