foliumで地図作成!Pythonエンジニアなら知っておくべき使い方・利点・サンプルコード8選

Pythonでインタラクティブな地図を作りたいと思ったことはありませんか?もしその答えが「YES」なら、foliumは必見のライブラリです。本記事では、シンプルで強力なfoliumの使い方から実践的な活用例まで、Pythonエンジニア必須の知識を幅広く紹介します。コードサンプルを交えながら、foliumでできることの可能性を探っていきましょう。

この記事を読んだらわかること
  • foliumの基本的な使い方
  • foliumを使うメリット
  • 実践的なコード例8選
  • foliumと他のライブラリの使い分け方
  • Pythonエンジニアにとってのfoliumの重要性
  • foliumスキル向上のための学習ヒント

はじめに

foliumは、Pythonでインタラクティブな地図を作成するためのライブラリです。leaflet.jsをベースにしており、シンプルなAPIを使って美しい地図を描画できます。データビジュアライゼーションやWebマッピングの分野で広く活用されています。

この記事では、Pythonエンジニアを対象に、foliumの基本的な使い方から実践的なサンプルコードまでを幅広く紹介します。foliumを使いこなせば、地理空間データを魅力的に可視化し、ユーザーを引き付けるWebマップを作成できるでしょう。

まずは、foliumを使った地図作成の基本から見ていきましょう。以下のコードは、foliumで最もシンプルな地図を描画する例です。

import folium

# 地図を作成
m = folium.Map(location=[35.6828387, 139.7594549], zoom_start=14)

# 地図をHTMLファイルとして保存
m.save("simple_map.html")

このコードを実行すると、東京タワー周辺を表示した地図がHTMLファイルとして生成されます。わずか数行のコードで、Web上で表示可能なインタラクティブな地図が作れるのは魅力的ですね。

foliumの大きな特徴は、シンプルなAPIとPythonのデータ処理ライブラリとの親和性の高さです。例えば、pandasやgeopandasと組み合わせれば、CSVファイルやシェープファイルから直接地図を生成できます。以下は、CSVファイルから地図を作成する例です。

import pandas as pd
import folium

# データを読み込む
df = pd.read_csv("locations.csv")

# 地図を作成
m = folium.Map(location=[35.6828387, 139.7594549], zoom_start=14)

# データからマーカーを追加
for idx, row in df.iterrows():
    folium.Marker(
        location=[row["latitude"], row["longitude"]], 
        popup=row["name"]
    ).add_to(m)

# 地図をHTMLファイルとして保存
m.save("markers_from_csv.html")

このように、foliumとPythonの他のライブラリを組み合わせれば、データに基づく柔軟な地図作成が可能になります。

また、foliumはカスタマイズ性も高く、多彩な地図表現を実現できます。マーカーやポップアップ、ヒートマップ、コロプレス地図など、さまざまな視覚化手法をサポートしています。HTML、CSS、JavaScriptの知識がなくても、美しく表現力豊かな地図を作成できるのは大きなメリットと言えるでしょう。

以降の章では、foliumのより実践的な使い方を紹介していきます。サンプルコードを参考に、インタラクティブな地図をどんどん作っていきましょう。Pythonでの地図作成スキルを磨けば、Webアプリやデータ分析の現場で、大いに役立つはずです。

foliumの基本的な使い方

foliumは、Pythonでインタラクティブな地図を作成するためのライブラリです。以下では、foliumの基本的な使い方を説明します。

インストール

foliumを使うには、まずPythonの環境にインストールする必要があります。以下のコマンドを実行して、foliumをインストールしましょう。

pip install folium

地図の作成

foliumで地図を作成するには、folium.Map()関数を使います。以下は、基本的な地図の作成例です。

import folium

# 地図を作成
m = folium.Map(location=[35.6828387, 139.7594549], zoom_start=14)

# 地図をHTMLファイルとして保存
m.save("basic_map.html")
  • folium.Map()関数で新しい地図オブジェクトを作成します。
  • locationパラメータで地図の中心座標を指定します。ここでは、東京タワーの緯度と経度を指定しています。
  • zoom_startパラメータで初期ズームレベルを指定します。値が大きいほど、地図が拡大された状態で表示されます。

save()メソッドを使って、作成した地図をHTMLファイルとして保存できます。HTMLファイルをWebブラウザで開くと、インタラクティブな地図が表示されます。

マーカーの追加

地図上に特定の地点をマークするには、folium.Marker()関数を使います。以下は、マーカーを追加する例です。

import folium

# 地図を作成
m = folium.Map(location=[35.6828387, 139.7594549], zoom_start=14)

# マーカーを追加
folium.Marker(
    location=[35.6828387, 139.7594549],
    popup="東京タワー",
    icon=folium.Icon(icon="star", color="red")
).add_to(m)

# 地図をHTMLファイルとして保存
m.save("marker_map.html")
  • folium.Marker()関数でマーカーオブジェクトを作成し、add_to()メソッドで地図に追加します。
  • locationパラメータでマーカーの座標を指定します。
  • popupパラメータでマーカーをクリックした際に表示されるポップアップの内容を指定します。
  • iconパラメータでマーカーのアイコンをカスタマイズできます。ここでは、赤い星形のアイコンを指定しています。

円の追加

地図上に円を描画するには、folium.CircleMarker()関数を使います。以下は、円を追加する例です。

import folium

# 地図を作成
m = folium.Map(location=[35.6828387, 139.7594549], zoom_start=14)

# 円を追加
folium.CircleMarker(
    location=[35.6828387, 139.7594549],
    radius=100,
    popup="半径100mの円",
    color="blue",
    fill=True,
    fill_color="lightblue"
).add_to(m)

# 地図をHTMLファイルとして保存
m.save("circle_map.html")
  • folium.CircleMarker()関数で円オブジェクトを作成し、add_to()メソッドで地図に追加します。
  • locationパラメータで円の中心座標を指定します。
  • radiusパラメータで円の半径をメートル単位で指定します。
  • popupパラメータでポップアップの内容を指定します。
  • colorパラメータで円の線の色、fillfill_colorパラメータで円の塗りつぶしの有無と色を指定します。

以上が、foliumの基本的な使い方の概要です。マーカーや円を追加することで、地図上に重要なポイントを視覚的に表現できます。
これらの基本機能を組み合わせるだけでも、多様な地図表現が可能です。
次の章では、より実践的なfoliumの使い方を見ていきましょう。

foliumを使うメリット

foliumは、Pythonでインタラクティブな地図を作成するためのライブラリです。以下では、Pythonエンジニアにとってのfoliumの主なメリットを紹介します。

シンプルで扱いやすいPythonライブラリ

foliumは、シンプルで直感的なAPIを提供しているため、Pythonの基本的な知識があれば、すぐに使い始められます。コードの記述量が少なくて済むので、生産性が高いのも大きな利点です。

例えば、以下のコードは、東京を中心とした地図にマーカーを追加する例です。

import folium

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)
folium.Marker(location=[35.6895, 139.6917], popup="東京").add_to(m)
m.save("tokyo.html")

わずか数行のコードで、地図の作成からマーカーの追加、HTMLファイルの出力までを行えます。foliumのシンプルなAPIにより、Pythonエンジニアは地図の作成に集中できます。

インタラクティブな地図がお手軽に作れる

foliumは、インタラクティブな地図の作成に特化したライブラリです。マーカーやポップアップ、レイヤ制御など、インタラクティブな機能を簡単に追加できます。これにより、ユーザーが地図を操作できるようになるので、エンゲージメントの高いコンテンツが作れます。

以下は、複数のマーカーを追加し、レイヤ制御機能を有効にする例です。

import folium

m = folium.Map(location=[35.6895, 139.6917], zoom_start=6)

folium.Marker(location=[35.6895, 139.6917], popup="東京").add_to(m)
folium.Marker(location=[34.6937, 135.5023], popup="大阪").add_to(m)
folium.Marker(location=[33.5902, 130.4017], popup="福岡").add_to(m)

folium.LayerControl().add_to(m)

m.save("interactive_map.html")

このコードでは、東京、大阪、福岡にマーカーを追加し、レイヤ制御機能を有効にしています。ユーザーは、地図上のマーカーをクリックしてポップアップを表示したり、レイヤの表示/非表示を切り替えたりできます。

このように、foliumを使えば、インタラクティブな地図をお手軽に作成できます。Pythonエンジニアにとって、魅力的な地図コンテンツを短時間で開発できることは大きなメリットと言えるでしょう。

Webサイトへの埋め込みも簡単

foliumは、地図をHTMLファイルとして出力できます。生成されたHTMLファイルは、そのままWebサイトに埋め込むことができるため、Web開発との親和性が高いです。

Pythonでデータ処理や地図の生成を行い、Web開発フレームワークと組み合わせることで、効率的にWebマッピングアプリケーションが開発できます。

以下は、foliumで生成した地図をHTMLに埋め込む例です。

<!DOCTYPE html>
<html>
<head>
    <title>Folium Map</title>
</head>
<body>
    <h1>日本の主要都市</h1>
    <iframe src="interactive_map.html" width="100%" height="400px"></iframe>
</body>
</html>

HTMLの<iframe>タグを使って、foliumで生成した地図を埋め込んでいます。これにより、Webサイト上に地図を表示できます。

Pythonエンジニアにとって、データ処理の結果をWeb上で可視化する際に、foliumは強力なツールになります。シームレスにデータ分析とWeb開発を結びつけられる点が、大きなメリットだと言えるでしょう。

以上が、foliumを使うメリットの概要です。シンプルさ、インタラクティブ性、Web連携の容易さは、Pythonエンジニアの生産性を大きく向上させてくれます。
次の章では、より実践的なfoliumの使用例を見ていきましょう。

foliumの実践的なサンプルコード8選

ここでは、foliumを使った実践的なコード例を8つ紹介します。これらのサンプルコードを参考に、より高度な地図表現にチャレンジしてみましょう。

1. マーカークラスタリングで大量のマーカーを見やすく表示

大量のマーカーを一度に表示する際に、マーカークラスタリングを使うことで見やすくなります。

import folium
from folium.plugins import MarkerCluster

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

marker_cluster = MarkerCluster().add_to(m)

for i in range(100):
    folium.Marker(location=[35.6895 + i*0.001, 139.6917 + i*0.001]).add_to(marker_cluster)

m.save("marker_clustering.html")

MarkerClusterプラグインを使うことで、近接するマーカーをグループ化し、クリックで拡大・縮小できるようになります。

2. ヒートマップで人気エリアを可視化

ヒートマップを使うことで、地点の密度や人気度を視覚的に表現できます。

import folium
from folium.plugins import HeatMap

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

data = [[35.6895, 139.6917, 0.5], [35.6896, 139.6918, 0.8], [35.6897, 139.6919, 0.3]]

HeatMap(data).add_to(m)

m.save("heatmap.html")

HeatMapプラグインに緯度、経度、値の3つ組のリストを渡すことで、ヒートマップを作成できます。

3. 行政区域の境界線を追加して地図をカスタマイズ

GeoJSONデータを読み込んで、行政区域の境界線を地図に追加できます。

import folium
import geopandas as gpd

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

tokyo_geo = gpd.read_file("tokyo.geojson")
folium.GeoJson(tokyo_geo).add_to(m)

m.save("tokyo_area.html")

geopandasライブラリを使ってGeoJSONファイルを読み込み、folium.GeoJsonで地図に追加します。

4. 2つの地点間の最短経路を表示

AntPathプラグインを使って、2つの地点間の最短経路を表示できます。

import folium
from folium.plugins import AntPath

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

locations = [[35.6895, 139.6917], [35.6896, 139.6918], [35.6897, 139.6919]]

AntPath(locations=locations).add_to(m)

m.save("shortest_path.html")

AntPathプラグインに経路上の地点のリストを渡すことで、最短経路を表示します。

5. CSVデータから地図を作成

CSVファイルからデータを読み込んで、地図上にマーカーを追加できます。

import folium
import pandas as pd

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

df = pd.read_csv("locations.csv")

for index, row in df.iterrows():
    folium.Marker(location=[row["latitude"], row["longitude"]], popup=row["name"]).add_to(m)

m.save("csv_map.html")

pandasライブラリを使ってCSVファイルを読み込み、各行のデータを元にマーカーを追加します。

6. 標高タイルを追加して立体的な地図を作成

標高タイルを追加することで、立体的な地図表現が可能になります。

import folium

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

folium.TileLayer("https://tile.opentopomap.org/{z}/{x}/{y}.png", attr="OpenTopoMap").add_to(m)

m.save("elevation_map.html")

folium.TileLayerを使って、標高タイルのURLを指定し、地図に追加します。

7. 他の地図タイルを使って地図をカスタマイズ

tilesパラメータを変更することで、様々な地図タイルを使ってデザインをカスタマイズできます。

import folium

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12, tiles="Stamen Toner")

m.save("custom_tile_map.html")

folium.Maptilesパラメータに、使用したい地図タイルの名前を指定します。

8. 自分のWebサイトにfolium地図を埋め込む

HTMLの<iframe>タグを使って、foliumで作成した地図をWebサイトに埋め込むことができます。

<!DOCTYPE html>
<html>
<head>
    <title>Folium Map</title>
</head>
<body>
    <h1>My Map</h1>
    <iframe src="tokyo.html" width="100%" height="400px"></iframe>
</body>
</html>

<iframe>タグのsrc属性に、foliumで作成した地図のHTMLファイルのパスを指定します。

以上が、foliumの実践的な使用例を示す8つのサンプルコードです。マーカークラスタリングやヒートマップ、行政区域の追加など、foliumの高度な機能を活用することで、より表現力豊かな地図を作成できます。
また、CSVデータとの連携やWebサイトへの埋め込みなど、実務でのニーズに合わせた活用方法も示しました。
Pythonエンジニアの皆さんは、これらのサンプルコードを出発点に、自分の業務や interests に合わせてfoliumを活用してみてください。

次は、foliumと他の主要なデータ可視化ライブラリとの使い分けについて説明していきます。

foliumと他のライブラリの使い分け

PythonにはデータやGIS(地理情報システム)を扱う様々なライブラリがあります。ここでは、foliumと他の主要なライブラリの使い分けについて説明します。

foliumとmatplotlibの違い

  • matplotlib: 静的な図の作成に適しています。グラフやチャートの作成によく使われますが、地図作成の機能は限定的です。
  • folium: インタラクティブな地図の作成に特化しています。Web地図の作成に適していますが、グラフやチャートの作成には不向きです。

matplotlibはデータ可視化の分野で広く使われているライブラリですが、インタラクティブ性や地図作成の点ではfoliumに分があります。使用目的に応じて適切なライブラリを選択しましょう。

foliumとgeopandasの使い分け

  • geopandas: 地理空間データの処理や分析に特化しています。シェープファイルやGeoJSONの読み書きが得意ですが、地図の作成は他のライブラリと組み合わせることが多いです。
  • folium: インタラクティブな地図の作成に特化しています。geopandasとの連携が容易ですが、地理空間データの処理や分析には不向きです。

geopandasとfoliumは相互補完的な関係にあります。以下は、geopandasで読み込んだデータをfoliumで可視化する例です。

import geopandas as gpd
import folium

# GeoJSONファイルを読み込む
gdf = gpd.read_file("tokyo.geojson")

# 地図を作成
m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

# geopandasのデータをfoliumで可視化
folium.GeoJson(gdf).add_to(m)

m.save("tokyo_map.html")

このようにgeopandasとfoliumを組み合わせることで、地理空間データの処理と可視化を効率的に行えます。

foliumとbokehの棲み分け

  • bokeh: インタラクティブなグラフやダッシュボードの作成に適しています。Webアプリへの組み込みが容易ですが、地図の作成機能は限定的です。
  • folium: インタラクティブな地図の作成に特化しています。グラフやダッシュボードの作成には不向きですが、地図をWebページに埋め込むのが容易です。

bokehはデータ可視化とダッシュボード作成の強力なツールですが、地図の作成はfoliumの方が得意です。用途に応じて使い分けることが大切です。

以上がfoliumと他のライブラリの使い分けについての説明です。
ポイントは以下の通りです。

  • 静的な図の作成にはmatplotlibを使う
  • 地理空間データの処理と分析にはgeopandasを使う
  • インタラクティブな地図の作成にはfoliumを使う
  • インタラクティブなグラフやダッシュボードにはbokehを使う

ただし、これらのライブラリは排他的ではなく、組み合わせて使うことも多いです。目的に応じて適切なライブラリを選択し、必要であれば複数のライブラリを連携させることが重要です。

Pythonデータ可視化のエコシステムについて理解を深めると、プロジェクトに最適なツールを選べるようになります。本記事で紹介したライブラリを組み合わせて使いこなせば、説得力のある可視化結果を生み出せるでしょう。

次は記事のまとめに移ります。foliumの基本的な使い方から実践的な事例までを振り返り、より良い地図作成のためのヒントを整理します。

まとめ

本記事では、Pythonのライブラリであるfoliumの使い方と利点を詳しく解説しました。ここでは、記事の内容を振り返り、ポイントを整理しましょう。

foliumは、Webマッピングに特化したPythonのライブラリであり、シンプルで直感的なAPIを提供しています。コードの記述量を抑えつつ、インタラクティブな地図を作成できるのが大きな魅力です。
foliumを使えば、マーカー、ポップアップ、レイヤ制御などの機能を簡単に実装できます。

foliumの基本的な使い方は、以下のようなコードで表現できます。

import folium

m = folium.Map(location=[35.6895, 139.6917], zoom_start=12)

folium.Marker(
    location=[35.6895, 139.6917],
    popup="東京タワー",
    icon=folium.Icon(icon="star", color="red")
).add_to(m)

m.save("tokyo_tower.html")

このコードは、東京タワーの位置にマーカーを表示し、インタラクティブな地図をHTMLファイルとして出力します。
foliumはデータ処理ライブラリ(pandas、geopandas)とも連携しやすいため、地理空間データの可視化に最適です。

Pythonエンジニアにとって、foliumは重要なスキルの1つと言えるでしょう。
データ可視化の領域で活躍するために、foliumを使いこなせることは大きなアドバンテージになります。
特にWebマッピングのプロジェクトでは、foliumの知識が不可欠です。
データ分析の結果をインタラクティブな地図で表現することで、ステークホルダーを巻き込み、説得力のあるプレゼンテーションが可能になるのです。

本記事で紹介した内容は、foliumを使い始めるためのごく一部です。
より高度な活用を目指すなら、以下のようなステップで学習を進めると良いでしょう。

  • 公式ドキュメントを読み込み、foliumの高度な機能を探求する
  • Jupyter Notebookを活用し、サンプルコードを実行しながらfoliumの使い方を体得する
  • Githubのfoliumリポジトリを参照し、最新の活用事例やTipsを学ぶ
  • 地理空間データ処理の基礎知識を身につけ、foliumとの組み合わせ方を習得する

foliumは、Pythonエンジニアにとって強力な武器になり得るライブラリです。
本記事を通じて、foliumの魅力が伝わり、活用への意欲が高まったのであれば幸いです。
今後のキャリアの中で、foliumを使いこなすスキルを身につけ、データ可視化の分野で活躍されることを願っています。

Happy mapping with folium!