見出し画像

foriumとshpファイルを使って地図化

はじめに

前回 geopandasを使って shpファイルを地図化しましたが、成果物が静的なマップだったので、今回は foliumというライブラリを使って動的なマップを作成します。今回も Pythonを使っていきます。

完成イメージ(東京都がshpファイル)

準備するもの

今回は必要なものは3つです。全部無料です。
①Python利用環境(Anaconda)
こちらからダウンロードして下さい。

②必要ライブラリ(2点)
ⅰ)GeoPandas
GeoPandasを使って地図表示|RYO|note
ⅱ)Folium
condaコマンドかpipコマンドでインストールして下さい。例えばこんな感じのコマンドです。

pip install folium

③日本の境界ポリゴン
こちらからダウンロードして下さい。

サンプルコード

以下がサンプルコードです。Jupyter Notebookで実行してください。

import geopandas as gpd
import folium

# 日本地図を読み込み
japan = gpd.GeoDataFrame.from_file("sample/japan_ver84.shp")

# 地図を作成
m = folium.Map(location=[35.7, 139.7], tiles="https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png",attr='国土地理院', zoom_start=6)

# 東京都を抽出
ken = japan[japan["KEN"]=="東京都"]

# shpファイルをGeoJSON化
gjson = ken.to_json()

# GeoJSONをマップに追加
folium.features.GeoJson(gjson, name="東京都").add_to(m)

# 地図を表示
m

ざっくりコードを解説すると、FoliumはLeafletを使って地図を表示するため、バイナリファイルであるshpは読み込むことができません。したがってshpファイルを加工する必要があります。(今回はGeoJSON形式に変換)

・まずはshpファイルをGeoPandasで読み込み
・shpファイルは全国分のデータにつき、東京都だけを抽出
・抽出データをGeoJSON化
・GeoJSON化したファイルをマップに追加

の流れになります。

この記事が気に入ったらサポートをしてみませんか?