GPS関連のプログラムではハードの面ではM5Stackを使うとして、主にArduinoを使うわけですが、取得してきたログデータなどの整理とプロットなどはPythonがやはり便利に使えると思いますので、Pythonでも一応GPS専用の仮想環境を作って整えておこうと思います。
今回は、M5F9PなどのGNSSモジュールから取得したGPSデータをPythonで解析・可視化するためのライブラリを一挙に紹介します。
この記事では、RTK測位やNMEAログの処理に特化したPythonライブラリと、それらをJupyterLab上で対話的に扱うためのセットアップ方法を、実践的に解説。
🧭 なぜPythonなのか?GPSデータ処理との相性
GNSSやRTK測位のデータは、主に「NMEA形式」「UBX形式」「RTCMバイナリ」などで出力されます。これらはすべてテキストまたはバイナリ形式の時系列データ。
Pythonは次のような理由で最適です:
- 豊富なGPS関連ライブラリ
- データ処理(pandas)との相性抜群
- 地図描画・可視化も簡単(folium)
- Jupyter Notebookでの対話処理が可能
⚙️ 仮想環境の準備(Miniconda推奨)
まずは、以下のコマンドでGPS専用の仮想環境を作成します。
conda create -n gps python=3.11
基本的にはMinicondaが軽量で使いやすいかなと思うわけですが、Python環境それ自体は好みの問題なのでなんでもいいでしょう。
また、今回はわかりやすくgpsとしていますが、好きな名前をつけてください。
使用する時は仮想環境をアクティベートしてから使ってください。
以降は必ずアクティベートしてからライブラリなどをインストール。
そうしないとどの環境にどのライブラリを入れたっけ?などぐちゃぐちゃになってしまいます。
筆者はファイナンス系、GPS系、オーディオ系、写真&映像系で4つの仮想環境を使い分けています。
conda activate gps
ちなみにアクティベート後は次のようにアクション可能です。
アクション | コマンド |
---|---|
仮想環境を有効にする | conda activate gps |
無効化する(元に戻す) | conda deactivate |
環境一覧を確認する | conda env list |
やりたいこと | コマンド |
---|---|
環境一覧を確認 | conda env list |
現在のPythonの場所確認 | which python |
環境を終了(deactivate) | conda deactivate |
環境を削除(全消し) | conda remove -n gps --all |
以下のコマンドをそのまま実行すれば、この先で紹介する主要ライブラリが一括で導入できます!
conda create -n gps python=3.11 -c conda-forge \
jupyterlab ipywidgets ipykernel \
pandas numpy matplotlib folium pynmea2 pyproj shapely \
geopandas geopy requests tqdm
conda activate gps
python -m ipykernel install --user --name gps --display-name "Python (gps)"
JupyterLab でこの環境を使えるように登録
python -m ipykernel install --user --name gps --display-name "Python (gps)"
JupyterLab はいつでも起動できます。
jupyter lab
🛰️ GPS・RTK測位に使えるPythonライブラリ一覧
ここからは、GPS・RTK処理において特に実用的なライブラリを目的別に紹介します。
1. pynmea2:NMEAセンテンスの解析
$GPGGA
,$GPRMC
などを簡単にパース- NMEA形式のログをオブジェクト化して扱える
import pynmea2
sentence = pynmea2.parse('$GPGGA,081446.00,4314.199290,N,14333.039155,E,1,8,3.9,94.521,M,27.549,M,,0000*62')
print(sentence.latitude, sentence.longitude)
2. folium:GPS座標を地図上に描画
- OpenStreetMapベースのWeb地図をPythonで操作
- 測位点や軌跡の描写に最適
import folium
map = folium.Map(location=[43.2366, 143.5506], zoom_start=16)
folium.Marker([43.2366, 143.5506], popup="測位ポイント").add_to(map)
map.save("map.html")
3. pyproj:座標系の変換(WGS84 ↔ UTM など)
- 緯度経度から平面直角座標へ変換
- RTK測位での相対位置計算に必須
4. geopandas / shapely:地理情報付きのDataFrame操作
- 地図データのベクトル処理
- 面積・距離・ポリゴンの重なり判定などに強い
5. geopy:緯度経度から距離や方位を計算
from geopy.distance import geodesic
a = (43.2366, 143.5506)
b = (43.2367, 143.5507)
print(geodesic(a, b).meters) # 約14m
6. jupyterlab + ipywidgets:対話型でGNSS処理
- データの確認・可視化・ステップ解析に最適
- GUIスライダーやマップ選択ボタンも可能
📦 その他おすすめライブラリ(pipで導入可)
ライブラリ | 用途 | 備考 |
---|---|---|
pyubx2 | u-blox UBX形式の解析 | UBXファイル処理 |
rtcm3-decoder | RTCMバイナリのデコード | pipで導入 |
gpxpy | GPX形式の読み書き | GPSログ交換用 |
ipyleaflet | Jupyter上の動的地図描画 | foliumより高機能 |
🔚 まとめ:GPS測位 × Pythonの最強コンビ
Pythonには、GPS・RTK測位に必要なライブラリが豊富にそろっており、データの取得・解析・可視化までを一貫して行うことができます。
JupyterLabと組み合わせれば、作業効率も劇的に向上します。
GPSモジュールとPythonを組み合わせたプロジェクトを進める方は、まずはこの記事で紹介したライブラリから使い始めてみてください。
このブログ記事は、筆者が実際に M5F9P + M5Stack + RTK基準局 を用いて行ったGNSS測位実験に基づいています。
リアルなGPSログをPythonで処理・可視化する中で得た知見をもとに、実用性の高いライブラリ群をご紹介しました。
次回は、実際のGPSログをfoliumで可視化するNotebookテンプレートを公開予定です。お楽しみに!

音楽家:朝比奈幸太郎
神戸生まれ。2025 年、40 年近く住んだ神戸を離れ北海道・十勝へ移住。
録音エンジニア五島昭彦氏より金田式バランス電流伝送 DC 録音技術を承継し、
ヴィンテージ機材で高品位録音を実践。
ヒーリング音響ブランド「Curanz Sounds」でソルフェジオ周波数音源を配信。
“音の文化を未来へ”届ける活動を展開中。