folium で地図上にマーカを配置

Python のライブラリ folium を使って,Leaflet の地図上にマーカを配置する。folium を使えば,地図上への可視化が効率的に行える。

Leaflet とは

本稿で用いた Leaflet とは,広く使われている Web 地図のための JavaScript ライブラリである。2011 年にリリースされ,モバイルとデスクトップのプラットフォームにほとんど対応し,HTML5 と CSS3 にも対応している。

プログラムの概要

マーカにつける名前,緯度,経度の csv ファイル(サンプルプログラムでは hoge.csv)を読み込む。

例として,山手線の駅名,緯度,経度を記載した csv ファイルの例を示す。

駅名,緯度,経度
東京,35.681382,139.766084
有楽町,35.675069,139.763328
新橋,35.665498,139.75964
浜松町,35.655646,139.756749
田町,35.645736,139.747575

Python,ライブラリのバージョン

本稿で用いた Python とライブラリのバージョンを以下に示す。csv で読み込んだデータを効率的に取り扱うため,pandas ライブラリを用いている。

  • Python 3.7.4
  • folium 0.14.0
  • pandas 1.3.5

東京駅を中心にした地図

次に,東京駅を中心に地図を生成する。location には,東京駅の緯度と経度,zoom_start は地図の拡大倍率を示す。

for 文でマーカをプロットする。location には csv で読み込んだ緯度,経度,popup には駅名を代入する。

最後に html 形式で地図を保存する。

import folium
import pandas as pd

# csvからのデータ読み込み(必要なカラムだけを抽出)
df = pd.read_csv('hoge.csv', usecols = ['駅名','緯度','経度'], encoding='utf-8')

# 地図生成(東京駅を中心に)
folium_map = folium.Map(location=[35.6809591,139.7673068],zoom_start=13)

# マーカプロット
for i, row in df.iterrows():
    folium.Marker(
        location=[row['緯度'], row['経度']],
        popup=row['駅名'],
        icon=folium.Icon(color='red')
    ).add_to(folium_map)    

# 地図保存
folium_map.save('hoge.html')

作成した山手線の駅を示す地図

山手線の駅を地図上にマーカでプロットしてみた。

図 folium でプロットした山手線の駅

マーカ以外にも,サークルマーカ(folium.CircleMarker)も利用できる。

# サークルマーカープロット(外径色は赤,内径色は青)
folium.CircleMarker(
    location=[row['緯度'], row['経度']],
    radius=40,
    color='#ff0000',
    fill_color='#0000ff'
).add_to(folium_map)

radius でサークルマーカの範囲を指定し,color パラメータでサークル枠線色を指定する。fill_color パラメータでサークル内の色を指定する。

参考文献

更新履歴

  • 2023年1月2日 新規作成
  • 2023年1月10日 サークルマーカの説明を追加
  • 2024年1月22日 本文を加除修正

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です