緯度経度などのデータファイルから,マーカーとイメージポップアップ付きの OpenStreetMap 地図を生成
問題定義
提案技術
期待される効果 簡易に構築運用可能な地図サービスシステム構築 ●こんなことでお困りではありませんか? ・モバイル端末等で日々データを収集している。地図に表示させたいが。何とか素早く、確実に、安価にできないものか? ・自ら(エンドユーザ)で、地図システムの中身を掌握しながら開発を進めたい.従来型システム開発(提案→仕様策定→実装→テスト)では間に合わず、よりクイックに開発したい ●こんなことができる、こんな用途が考えられます モバイル端末(GPS付きも可能)で集めた緯度・経度付きの情報を、即時に、地図に一括表示. 地図に基づくあらゆる情報で、パーソナル、特定業務用途の性質をもつもの ・ヒアリハット地図 ・道路等の検査、調査結果(交通状況、道路付帯施設状況など) ・団体行動などの把握 ●システム構成 ●使用している既存の技術 拡張可能です:密度表示、住所やゲオコードとの変換 簡易なデモページ:
前準備
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())
AjinKuriakose/UK-Road-Accident-Data-Analysis のデータ
- GitHub の AjinKuriakose/UK-Road-Accident-Data-Analysis の Web ページを開く
https://github.com/AjinKuriakose/UK-Road-Accident-Data-Analysis
- 「clean_data.csv」をダウンロードしたいので、クリック.
- 画面が変わる.「Download」をクリック
- 先ほど調べた「カレントディレクトリ」に
ダウンロードロードしたファイルを置く
* ファイルの先頭部分は次のようになっている
データファイルの緯度経度などを使っての表示
import pandas as pd
import folium
datafile = "clean_data.csv"
lat, lon = 53.44, -2.24
zoom_start = 16
webfile_name = "d.html"
m = folium.Map(location=[lat, lon], zoom_start=zoom_start)
X = pd.read_csv(datafile)
for index, r in X.iterrows():
if index < 100:
p = '<a href="https://maps.google.com/maps?q=&layer=c&cbll=%f, %f&cbp=11,0,0,0,0">%s <br/></a>' % (r.latitude, r.longitude, r.date)
folium.Marker([r.latitude, r.longitude], popup=p).add_to(m)
m.save(webfile_name)


ズームアウトして確認

マーカーはクリッカブル
