Python

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

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

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

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

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

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

データサイエンティストとして3年間で3社経験した僕の転職体験談まとめ

こんにちわ、サトシです。33歳です。 今回は、データサイエンティストの3年間に3社で働いた僕が、データサイエンティストとしての転職活動についてまとめて書きたいと思います。 これまでSE→博士研究員→ポ ...

 

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を使います。

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

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

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

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

データサイエンティスト経験3年の僕がフリーランスとして独立するまでの体験談

こんにちわ、サトシです。 今回は、企業でデータサイエンティストとして働いていた僕が、フリーランスとしてどのような手順で独立していったかについて書いていきたいと思います。 僕はSIer SE→博士過程→ ...

 

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

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

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

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

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

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

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

 


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

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

 

PythonによるGISデータ分析の勉強法

PythonでGISデータの分析手法を学びたい方はUdemyのコースがおすすめです。日本語の書籍は全然ないです。。。

【Udemy】PythonによるGISデータの分析と可視化

(追記)
2024/9/20にこんなのが出るそうです。読んでみたいですね!

おすすめ記事

1

こんにちわ、サトシです。33歳です。 今回は、データサイエンティストの3年間に3社で働いた僕が、データサイエンティストとしての転職活動についてまとめて書きたいと思います。 これまでSE→博士研究員→ポ ...

2

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

3

こんにちわ、サトシです。 今回は、企業でデータサイエンティストとして働いていた僕が、フリーランスとしてどのような手順で独立していったかについて書いていきたいと思います。 僕はSIer SE→博士過程→ ...

-Python

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