Pythonライブラリを活用すれば地理情報データが簡単に扱える!?
仙石さん曰く、地理情報データの解析では昔はベンダーが提供するツールが主に使われてきたのですが、ここ数年でその流れが急激に変わり、最近ではオープンソースのツールやライブラリが一気に整備され始めてきました。特に最近は地理情報データを利用するためのPython製のツールが数多く作られてきており、一通りの地理情報データ解析がPythonの環境で実行できるようになってきているとのことです。
講演では、Python製のツールとしてGeoPandasやpyprojなどを紹介していただきました。
GeoPandasとは、Pythonのデータ操作のライブラリであるPandasを拡張し、地理情報データを扱えるようにしたライブラリです。地理情報データ特有の処理をPandasの機能を利用して高速に操作できます。また、Jupyter Notebook上でGeoPandasを利用すれば、foliumなどの地図描画ライブラリと連携して地図上に地理情報データの可視化を簡単に実行できます。
例えば、以下の図は品川区のAEDの設置場所をGeoPandasを利用して可視化したものです。
まず、下記のコードでは上記のデモで利用するライブラリである、PandasとGeoPandasを呼び出した上で、Pandasを利用してCSVファイルを読み込んでいます。
次にpandas.DataFrameのデータ形式をgeopandas.GeoDataFrame形式に変換します。具体的には緯度、経度カラムの値をGeoDataFrameのgeometoryに変換しています。
最後にデータの可視化をします。今回可視化では、foliumライブラリを利用します。同ライブラリはLeaflet.jsのPythonラッパーであり、Leaflet.jsで作成される地図をPythonから制御できます。
下記のコードは、先ほど変換したGeoDataFrameデータを用いてfoliumオブジェクトを生成し、地図データとして可視化する、という処理をしています。
ここで注目すべき点としては、上記のことを実施するにあたって、必要なソースコードの量がわずか11行だけであるという点です。これだけの短いコードを実行するだけで地図データの読み込み、地図データの加工および地図データの描画までできてしまいます。
この例からも分かる通り、Pythonは地理情報解析を扱う際に大変優れた環境であることが分かります。