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

Python のライブラリである folium を用いることで,Leaflet ベースの地図上にマーカを効率的に配置できる。

folium は Python から Leaflet を直接扱えるため,Web 地図の可視化を簡便に実現できる。

本稿では,山手線の駅データを例に,folium を用いた地図描画の基本的な手順を示す。

Leaflet とは

本稿で用いた Leaflet とは,広く利用されている Web 地図のための JavaScript ライブラリである。

2011 年にリリースされ,モバイルとデスクトップの双方に対応し,HTML5 と CSS3 にも対応している。

軽量で扱いやすく,インタラクティブな地図アプリケーションの構築に適している。

プログラムの概要

本稿では,マーカに付与する駅名,緯度,経度を csv ファイルから読み込む。

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

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

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

csv データを効率的に取り扱うため,pandas ライブラリを併用する。

本稿で用いた Python とライブラリのバージョンを以下に示す。

  • Python 3.7.4
  • folium 0.14.0
  • pandas 1.3.5

東京駅を中心にした地図の生成

まず,東京駅の緯度・経度を中心に地図を生成する。location には中心座標を指定し,zoom_start には地図の拡大倍率を指定する。

次に,csv で読み込んだ駅データを for 文で走査し,マーカをプロットする。location には緯度・経度,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 は Leaflet を内部で利用しており,Python から Web 地図を扱える点が大きな利点である。

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

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日 本文を加除修正
  • 2026年7月24日 本文を加除修正

folium で地図上にマーカを配置” に対して1件のコメントがあります。

コメントを残す

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