本日はfoliumについて書いてみたいと思います。
foliumとは
WEBマップを作成するためのライブラリです。Leafletというjavascriptのライブラリーがベースになっているようです。WEBサイトに以下のように簡単にインタラクティブなマップを組み込むことができます。
インストール
pip install foliumですね
環境
Python2.7.3
jupyter notebook
Windows10
ベースとなる地図について
foliumでは色々な地図タイルを指定することができます
https://github.com/python-visualization/folium/tree/master/folium/templates/tiles
- mapboxbright
- cartodbdark_matter
- cartodbpositron
- cloudmade
- mapbox
- mapboxcontrolroom
- openstreetmap
- stamenterrain
- stamentoner
- stamenwatercolor
今回はOpenStreetMap をタイルに指定してみようと思います。OpenStreetMapって何?という方は以下のエントリーを読んでみてください。
サンプルコード
import folium m = folium.Map( location=[-31.950527,115.860457], tiles='OpenStreetMap', zoom_start=10 ) m
たったこれだけですね。本当に簡単です。
緯度経度とマップ読み込み時のズームレベルは任意で指定できます。今回はオーストラリアのパースの地図を表示させてみました。
ただ、これだけだと面白くないので、このマップにポイントをプロットしたいと思います。使用するデータは以下エントリーで作成した西オーストラリアのAirbnbのShapeファイルです。
サンプルコード
import folium import geopandas m = folium.Map( location=[-31.950527,115.860457], tiles='OpenStreetMap', zoom_start=10 ) data = geopandas.GeoDataFrame.from_file(r"D:\gis-py\geopandas\airbnb\accommodation.shp") gjson = data[1:100].to_json() # 数が多すぎるのでデータをしぼる points = folium.features.GeoJson(gjson) m.add_child(points) m
Shapeの全データをプロットするとメモリエラーを起こしてしまったので、データを100件にしぼりましたが、ばっちりですね。
WEBマップの作成がこんなに簡単にできるなんて一昔前は考えられなかったですね。GIS系のPythonライブラリが年々充実してきている気がします。本当に便利なので、ぜひ使ってみてください。