Python

PythonとFoliumでOpenStreetMapの地図上にヒートマップを作ろう

PythonでGISデータを可視化するときにはFoliumを使うのが便利です。

FoliumはJavaScriptのleafletをもとにしたPythonエコシステムで、緯度経度などからなるGISファイルを簡単にインタラクティブにOpenStreetMatなどの地図上に可視化できます。

Pythonだとあまり可視化ツールがないように思う人もいるかもしれませんが、GISデータをPythonで可視化となったらFoliumを使うのが絶対におすすめなので、ぜひ機会があれば使ってみて欲しいです。

さて、この回はFoliumを使ってオープンデータのCSVファイルを読み込んで、地図上にヒートマップを作ってみたいと思います。

CSVファイルには緯度・経度のカラムがあるので、それらを使って地図上にプロットしていくという手順になります。

 

Foliumのインストール

Foliumはpipやcondaでインストールができます。

or

ただし公式WEBサイトによると、依存パッケージで以下のようなパッケージが必要になることがあるので注意しましょう。
"branca, jinja2 and requests"

まぁ、僕の考えでは、Foliumを単体で使うことはほぼなく、GeoPandasでGISデータをいい感じに処理して、その結果を地図上で可視化するんだと思っています。

conda-forgeでGeoPandasをインストールすれば、Foliumもインストールされますので、それで一緒に使えるようになります。

こちらの記事でGeoPandasの環境構築の記事を書きましたので、参考にしてみてください。

 

オープンデータのダウンロード

試しに今回使うデータは、品川区オープンデータのWEBページから、公共施設のデータを使います。
https://www.city.shinagawa.tokyo.jp/PC/kuseizyoho/kuseizyoho-opendate/index.html

こちらのCSVをダウンロードして、Pythonでデータフレームで読み込むとこのような形式になっています。

ジオデータフレームへの変換

データフレームに変換する事ができたので、こちらをそのまま使ってもいいのですが、多めのデータを点でプロットしたい場合は、Choroplethという関数を使いたいので、ジオデータフレームにさらに変換したいと思います。

ジオデータフレームを作る際にはgeometry列が必要になるので、データフレームの緯度・経度列を使って、Pointのgeometryを作ります。

はい、このようにしてgeometryにPointを加えたジオデータフレームができました。

座標系も設定しておきます。

ちなみにcrs=6668は、日本周辺を単位:度で正確に表した座標系です。

この座標系(EPSGコードと呼ばれます)の詳細は割愛します。

FoliumでOpenStreetMap上に点プロット作成

ジオデータフレームができましたので、こちらをOpenStreetMap上に点でプロットします。

この点はデフォルト設定のマーカーとし、地図の中心は品川駅とします。

これで地図ができました。

まだデータがプロットされていないので、こちらにプロットを追加していきます。

プロットにはChoroplethを使います。

これでプロットができました。

たくさんの点がマーカーでプロットされていますね。

でもこれだと点が多いので、よくわからないのが正直なところだと思います。

なので次に点ではなくヒートマップで可視化してみましょう。

 

FoliumでOpenStreetMap上にヒートマップ作成

Foliumでヒートマップを作るにはfolium.pluginからHeatMapをimportして使います。

まずは地図自体を作ります。

例によって地図の中心は品川駅とします。

プロットする地図ができたら、そこにヒートマップを加えます。

ヒートマップを作るには、まず点(緯度, 経度)をデータ数分並べたリストを作成し、HeatMap関数に渡します。

このとき、リストの中の緯度経度は(経度, 緯度)の順番ではなく(緯度, 経度)の順番にしましょう。

 


これでヒートマップができました!

radiusやblurなどを変えるとヒートマップの感じも変わりますので、いろいろ試してみてください!

おすすめ記事

1

お疲れさまです! 久しぶりの更新になってしまいましたが、僕が未経験からデータサイエンティストになるまでの転職活動の全記録を書き残しておきたいと思います。 僕は博士号を取得後に研究員として仕事をしていま ...

2

こんにちわ、さとしです! 気がつけばこのデータサイエンティスト転職から、1年が経とうとしています。 今はご時世的に外にも出られず、変化があまりない生活を送ったせいもあってか、なんかあっという間に1年が ...

3

データサイエンティストに転職して1年が経ち、いろいろな業務を経験させてもらいつつ、自分でもある程度本を読んできました。 仕事の話は下記の記事で書きましたが、自分で読んだ本については書いていないのでこの ...

-Python

Copyright© さとぶろぐ , 2023 All Rights Reserved Powered by AFFINGER5.