foliumをインストールしてPythonだけで地図アプリを作成する

foliumをインストールしてPythonだけで地図アプリを作成する プログラミング

「地図上にデータ分析の結果を表現したい」
「Webのスキルはないけど、Webで地図アプリを作成したい」

この記事は、上記のような人々に参考となります。
foliumを使えば、やりたいことがPythonだけで実現できます。

本記事の内容

  • foliumとは?
  • foliumのシステム要件
  • foliumのインストール
  • foliumの動作確認

それでは、上記に沿って解説していきます。

foliumとは?

foliumとは、地図上にデータを表示するためのPythonライブラリです
そして、その際に利用するのはGoogle MapではなくOpenStreetMapとなります。

OpenStreetMapは、商用・非商用を問わずに自由に利用・再配布が可能です。
地図のオープンソースと言えば、わかりやすいかもしれません。

foliumの具体的な仕組みを説明します。
実際のところは、そんなにややこしいものではありません。

まず、地図の表示について確認しておきます。
Webで地図を表示するには、JavaScriptが必要になります。
そして、Web地図ライブラリと言えば、Leafletが存在します。

Leaflet
https://leafletjs.com/

foliumは、このLeafletを利用しています。
ここからが、仕組みの本題となります。

foliumは、Leafletを利用するためのコーディングを自動で行います。
具体的には、以下のようなコーディングです。

Leafletの読み込み(jQueryなど含む)

地図を表示するjsコーディング

まとめ

foliumは、簡単に言うとhtmlファイルを作成します。
そのhtmlには、Leafletを利用するための記述があります。

通常なら、HTML・CSS・JSの知識がないと、Webで地図を表示することは難しいです。
しかし、Pythonの知識だけで、その地図を表示することが可能になります。

それを可能にするのが、foliumということです。
JupyterLabと組み合わせれば、地図を使ったプレゼンも簡単に行えます。

JupyterLabについては、次の記事で解説しています。

もちろん、Webでそのまま公開もできます。
この記事の最後に、foliumで作成した地図を公開しています。

以上、foliumについての説明でした。
次は、foliumのシステム要件を確認します。

foliumのシステム要件

現時点(2021年5月)でのfoliumの最新バージョンは、0.12.1となります。
この最新バージョンは、2021年1月19日にリリースされています。

foliumのシステム要件は、次の3つがポイントになります。

  • OS
  • Pythonバージョン
  • 依存パッケージ

下記でそれぞれを説明します。

OS

サポートOSに関しては、特に記載がありません。
こういう場合は、以下を含むクロスプラットフォーム対応になることがほとんどです。

  • Windows
  • macOS
  • Linux

そして、コードを見る限りOS依存の処理はありません。
実際、WindowsとLinuxで動作は確認済です。

Pythonバージョン

サポート対象となるPythonのバージョンは、以下。

  • Python 3.5
  • Python 3.6
  • Python 3.7

Python 3.8やPython 3.9が、記載されていません。
単純に記載漏れ、未検証なだけだと思います。

setup.pyを見ると、Python 3.5未満だとエラーとなります。

if sys.version_info < (3, 5):
    error = """
    folium 0.9+ supports Python 3.5 and above.
    When using Python 2.7, please install folium 0.8.*.
    See folium `README.rst` file for more information:
    https://github.com/python-visualization/folium/blob/master/README.rst
    Python {py} detected.
    Try upgrading pip and retry.
    """.format(py='.'.join([str(v) for v in sys.version_info[:3]]))
    print(error, file=sys.stderr)
    sys.exit(1)

したがって、Python 3.5以降だと問題はないはずです。
私は、以下のバージョンで検証しています。

>python -V
Python 3.9.4

上記バージョンで、foliumは問題なく動いています。

依存パッケージ

公式サイトでは、以下のモノが必要なパッケージだと記載されています。

そして、requirements.txtには次のモノが記載されています。

branca>=0.3.0
jinja2>=2.9
numpy
requests

Jinja2が必要なのは、意外です。
Jinja2については、次の記事で解説しています。

なお、これらについては自分でインストールする必要はありません。
foliumをインストールする際に、自動的にインストールされます。
それが、PyPI(pipコマンド)を使ってインストールするメリットですからね。

まとめ

foliumに関しては、Pythonのバージョンだけ注意すればOKと言えそうです。
Python 3.5以降であれば、これと言った問題はないでしょう。

以上、foliumのシステム要件の説明でした。
次は、foliumをインストールしていきます。

foliumのインストール

最初に、現状のインストール済みパッケージを確認しておきます。

>pip list
Package    Version
---------- -------
pip        21.1.1
setuptools 56.2.0

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、foliumインストールです。
foliumのインストールは、以下のコマンドとなります。

pip install folium

インストールには、少しだけ時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package    Version
---------- ---------
branca     0.4.2
certifi    2020.12.5
chardet    4.0.0
folium     0.12.1
idna       2.10
Jinja2     3.0.1
MarkupSafe 2.0.1
numpy      1.20.3
pip        21.1.1
requests   2.25.1
setuptools 56.2.0
urllib3    1.26.4

多くのパッケージが、インストールされました。
これだけ依存関係が多いと、既存環境へのインストールは容易とは言えませんね。

以上、foliumのインストールを説明しました。
最後に、foliumの動作確認を行います。

foliumの動作確認

東京タワーを表示する地図を作成します。
正確には、地図を表示するhtmlファイルを作成することになります。

import folium

m = folium.Map(location=[35.658584, 139.7454316],
               zoom_start=14)

tooltip = "クリック!"

folium.Marker(
    [35.658584, 139.7454316], popup='<span style="white-space: nowrap;">東京タワー</span>', tooltip=tooltip
).add_to(m)

m.save("map.html")

上記コードを実行すると、map.htmlが作成されます。
実際に作成した地図は、以下。

本当に、Webの知識を使わずに地図アプリケーションを作成できました。
まあ、今回はアプリケーションというほどの代物ではありませんけどね。

以上、foliumの動作確認を説明しました。

タイトルとURLをコピーしました