作りかけているGPSロガーですが、ちょっと持ち歩いてみた感じ、どうやら動いていそうなので、ログを見てみたいと思います。
保存されている、GPS.LOGを開いて、一行抜き出してみると(詳細は隠しています)、こんな感じ。
2020/12/2,9:44:17,43.xxxxxx,141.xxxxxx,39.60
1行がカンマで区切られたCSVで、
日付 , 時間, 緯度, 経度, 高度
となっています。ひとまず、緯度と経度をプロットしてみたいと思います。python でサクッとできるとスマートなのかなとも思いますが、使い慣れてないのでやめたい。Processing なのか、openFrameworks なのか、実は使い慣れている Objective-C++ とOpenGLでやるのが最終的に速い気がするのですが、環境としてはマイナーなのでやめた方がよいかもしれないですね…
せっかくなので、Python でやってみることにします。
ちょっと調べてみると、csv周りは pandas 、グラフ周りは matplotlib がよさそうなので、これらをpipでインストールしてみました。pipが古いと言われましたが放置して、デスクトップにおいた先ほどの “GPS.LOG” を、”gps.csv”にリネーム。(あとで確認したら、そのままでも読めました…)
とりあえず、Terminal から Python3 を立ち上げて、読み込み&コラムに適当な名前を放り込んでダンプしてみると、
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> df = pd.read_csv('/Users/h/Desktop/gps.csv', names=['date', 'time', 'lat', 'lng', 'alt'])
>>> print(df)
date time lat lng alt
0 2000/0/0 23:59:42 0.000000 0.00000 0.0
1 2000/0/0 23:59:43 0.000000 0.00000 0.0
2 2000/0/0 23:59:44 0.000000 0.00000 0.0
3 2000/0/0 23:59:45 0.000000 0.00000 0.0
4 2000/0/0 23:59:46 0.000000 0.00000 0.0
... ... ... ... ... ...
19114 2020/12/2 9:44:37 43.xxxxxx 141.xxxxx 40.6
19115 2020/12/2 9:44:37 43.xxxxxx 141.xxxxx 40.6
19116 2020/12/2 9:44:38 43.xxxxxx 141.xxxxx 40.6
19117 2020/12/2 9:44:38 43.xxxxxx 141.xxxxx 40.6
19118 2020/12/2 9:44:39 43.xxxxxx 141.xxxxx 40.7
[19119 rows x 5 columns]
という感じで読み込めました。次は、lat, lng を xy でプロットしたいので、しばし検索したところ、scatter という関数をみつけました。
plt.scatter(df['lng'],df['lat'])
リターン。何も起きず。
plt.show()
リターンすると、ウィンドウが開きました。こんな感じ。
なんとなく緯度経度でプロットされてそうな気配。簡単すぎて拍子抜けしていると、丁寧にUIがついている!ことに気づきました。ルーペを使って拡大すると、
きれいに録れてます。よかった。
コードをまとめると、
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('/Users/h/Desktop/1202_tesetGPS.LOG', names=['date', 'time', 'lat', 'lng', 'alt'])
plt.scatter(df['lng'],df['lat'])
plt.show()
たったこれだけでした。Pythonユーザが多いのも納得できます。
簡単なので、気になっていることを確認してみます。というのも、高度情報の精度がかなり怪しい気がしていて、何かのタイミングで確認しないといけないと思ってたところでした。
単なる折れ線グラフはこれで書けます。
plt.plot(df['alt'])
リターンして、show()すると、
!!!
これは怪しいというか、全然あてにならない?準天頂衛星のみちびき対応のモジュールなのでちょっと期待してたのですが。。。ライブラリのバグ?の可能性は検索する限り報告されてなさそうですし、、、ただ、前半の値が安定している部分以外は、部屋に置いていた時間である可能性もなくはないので、もうちょっと詳細に検証が必要です。今は時間がないのですが、いずれ検証したいと思います。