Python × FoliumでGPSデータを地図上に表示する方法|リアルタイム可視化は?

Pythonを使ってGPSの緯度・経度データを地図上に可視化したいと考えたことはありませんか?

実際M5F9PでGPSログを取得後、さて、どーするのか?
そんなときに非常に便利なのが、今回ご紹介する 「Folium(フォリウム)」 というライブラリです。

この記事では、Foliumを使ってGPSデータを可視化する方法や、リアルタイムで地図表示が可能かどうかまで、初心者にもわかりやすく解説します。

できれば仮想環境で使用するのが望ましいですね。
筆者はminicondaにて仮想環境を構築しています。

pip install folium

Foliumとは?

Foliumは、PythonでWebベースのインタラクティブ地図を作成できるオープンソースの可視化ライブラリです。

中身はLeaflet.jsという軽量なJavaScript地図エンジンで動いており、Pythonユーザーでも簡単に地図を生成できます。

主な用途:

  • GPSログの地図可視化(CSVやリアルタイムデータ)
  • Web上で旅ルートや追跡情報の表示
  • 地図付きのブログ記事や教育資料の作成
  • センサー情報やIoT位置データの表示

HTML形式で出力されるため、地図をそのままブラウザで開けるのも大きな特徴です。

最大の特徴はオープンソースなので、Google MAPと違い、取り扱いやシェアがしやすいこと。

Folium サンプルコード集(GPSデータ可視化)

座標を入れるだけでプロットできます。

"""
Foliumで基本の地図を表示するサンプル
"""
import folium

# 地図の中心座標(例:北海道足寄町)と初期ズーム
m = folium.Map(location=[43.2431, 143.5642], zoom_start=13)

# 地図をHTMLファイルに保存
m.save("basic_map.html")

また、次のサンプルコードではGPSログ(CSV)をルートとして描画できます。

"""
CSVから読み込んだGPSログをルート線として描画するサンプル
"""

import pandas as pd
import folium

# CSVファイル読み込み(列順:時刻, 緯度, 経度)
df = pd.read_csv("gps_log.csv", names=["time", "lat", "lon"])

# 最初の位置を地図の中心に
m = folium.Map(location=[df.lat[0], df.lon[0]], zoom_start=14)

# ルート線(緯度経度のペア)を描画
folium.PolyLine(df[["lat", "lon"]].values, color='blue', weight=4).add_to(m)

# スタート地点と終了地点にマーカー追加
folium.Marker([df.lat[0], df.lon[0]], popup="Start", icon=folium.Icon(color="green")).add_to(m)
folium.Marker([df.lat.iloc[-1], df.lon.iloc[-1]], popup="End", icon=folium.Icon(color="red")).add_to(m)

# 地図を保存
m.save("gps_route.html")

Foliumのメリット

  • ✅ 無料で使える(オープンソース)
  • ✅ Google Maps APIキーが不要
  • ✅ Pythonだけで操作可能(JavaScript不要)
  • ✅ Jupyter NotebookやFlaskと組み合わせやすい
  • ✅ マーカー、ルート線、ポップアップ、ゾーン描画など機能が豊富

Foliumでできること(GPS用途編)

Foliumは単に地図を表示するだけでなく、GPSトラッカーから得た緯度・経度のログデータを地図に載せるのに最適です。

たとえば:

  • イベント現場での移動ルートをあとから確認
  • 機材や人の位置ログを視覚的に表示
  • 位置ごとのセンサーデータ(温度、音圧など)を地図に埋め込む

といった使い方ができます。

リアルタイム表示はできる?

Folium自体は 静的なHTML地図を生成するため、単体ではリアルタイム更新はできません。
しかし、以下のような方法を組み合わせれば、リアルタイム風の追跡システムも構築可能です。

✅ 例:リアルタイムGPS可視化システム

  1. GPS位置情報をESP32などからHTTP POSTで送信
  2. Flask(Python)でデータを受信し、CSVなどに保存
  3. Foliumで定期的に地図を再生成(5秒おきなど)
  4. ブラウザで地図ファイルを更新表示

または、Plotly DashやStreamlitと連携することで、よりインタラクティブなリアルタイム地図UIも実装できます。

まとめ

Foliumは、Pythonだけで美しいインタラクティブ地図を作成できる非常に優秀なライブラリです。
GPSデータとの相性も抜群で、静的な記録の可視化から、リアルタイム追跡まで対応可能。

初心者でもインストールしてすぐに動かせるため、まずはCSVに記録したGPSログを地図上に表示してみることから始めてみましょう。

朝比奈幸太郎

音楽家:朝比奈幸太郎

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