緯度経度などのデータファイルから,マーカーとイメージポップアップ付きの OpenStreetMap 地図プログラムを生成
緯度経度の入ったデータファイル (CSVファイル形式)と folium を使って、OpenStreetMap 地図プログラムを生成します
先人に感謝
前準備
Python のインストールと必要なPythonライブラリのインストール(Windows上)
- Python のインストール
注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.
winget(Windowsパッケージマネージャー)を使用してインストールを行う
- Windowsで,コマンドプロンプトを管理者権限で起動する(手順:Windowsキーまたはスタートメニュー,「cmd」と入力,右クリックメニューなどで「管理者として実行」を選択)
- winget(Windowsパッケージマネージャー)が利用可能か確認する:
winget --version
- Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f REM Python をシステム領域にインストール winget install --scope machine --id Python.Python.3.12 --id Python.Launcher -e --silent REM Python のパス set "INSTALL_PATH=C:\Program Files\Python312" echo %PATH% | find /i "%INSTALL_PATH%" >nul if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%" /M >nul echo %PATH% | find /i "%INSTALL_PATH%\Scripts" >nul if errorlevel 1 setx PATH "%PATH%;%INSTALL_PATH%\Scripts" /M >nul
- 必要なPythonライブラリのインストール
【関連する外部ページ】
【サイト内の関連ページ】
手順
次のような,緯度経度を含むデータファイルと、画像ファイルを使う(ここでは、緯度経度を含むデータファイルと、画像ファイルをダウンロードして使うことにする)

Python プログラムの実行
- Windows では python (Python ランチャーは py)
- Ubuntu では python3
【サイト内の関連ページ】 Python のまとめ: 別ページ »
- 次の Python プログラムを実行
import os print(os.getcwd())
- 緯度経度を含むデータファイルの準備
- Web ブラウザを開き,次の URL からデータファイルをダウンロード
- 先ほど調べた「カレントディレクトリ」に、このファイルを置く
* 自前で「緯度経度を含むデータファイルの準備」を行うときは、その文字コードを UTF-8 に変換しておくこと
- 画像ファイルの準備
- Web ブラウザを開き,次の URL を開く
- このディレクトリに .zip ファイルがある..zip ファイルをダウンロードして展開(解凍)
これは、複数の画像ファイルが入った .zip ファイルである
- 先ほど調べた「カレントディレクトリ」の下に「photo」というサブディレクトリを作る.
そのディレクトリに画像ファイルを置く
- 確認のため、地図表示だけを行ってみる
import pandas as pd import folium datafile = "hoge.csv" lat, lon = 34.4586, 133.2295 zoom_start = 18 webfile_name = "c.html" m = folium.Map(location=[lat, lon], zoom_start=zoom_start) m.save(webfile_name)
- 先ほど調べた「カレントディレクトリ」に HTML ファイルc.htmlができている
- できたファイル c.html を Web ブラウザで開いてみる.地図が表示されれば OK.
- 次は、データファイルの緯度経度などを使っての表示
import pandas as pd import folium datafile = "hoge.csv" lat, lon = 34.4586, 133.2295 zoom_start = 18 webfile_name = "c2.html" m = folium.Map(location=[lat, lon], zoom_start=zoom_start) X = pd.read_csv(datafile) for index, r in X.iterrows(): p = '<a href="https://maps.google.com/maps?q=&layer=c&cbll=%f, %f&cbp=11,0,0,0,0">%s <br/><img width="60" src="%s"></a>' % (r.lat, r.lon, r.building, r.imfile) folium.Marker([r.lat, r.lon], popup=p).add_to(m) m.save(webfile_name)
- 先ほど調べた「カレントディレクトリ」に c2.html ファイルができるので Web ブラウザで開いてみる.マーカー付きの地図が表示されれば OK.
マーカーをクリックすると、情報が表示される
以上の操作でできたファイルは、こちらで確認できる: c2.html をクリック