さて、今回はgeopandasですね!以前から気になっていたライブラリなので、これを機に使ってみようと思います。
geopandasとは
geopandasはpandasの拡張で、地理データを含むデータをpandasのように表形式で扱うことができるpythonのライブラリです。こんな便利なものを作っていただけるとはなんともありがたい話ですね。
ちなみにこちらのエントリーでより詳しくgeopandasについて紹介していますので、興味のある方はぜひ読んでみてください。
www.gis-py.com
インストール
公式サイトによるとhttp://geopandas.org/install.html、GeoPandasをインストールする前に以下ライブラリをインストールする必要があるそうです。その後、pip install geopandas ですね!
- numpy
- pandas (version 0.15.2 or later)
- shapely
- fiona
- six
- pyproj
- descartes
あとは必須ではないですが、オプションとして以下も入れておくといいと思います。
- matplotlib
- geopy
もしpipでエラーが出るようなことがありましたらこのサイトhttps://www.lfd.uci.edu/~gohlke/pythonlibs/からWheelをダウンロードしてインストールしてみてください。
実行環境
Windows7 64bit
ArcGIS10.4.1
Python2.7.3
データ
geopandasをインストールすると自動的にサンプルデータもついてくるみたいです。今回はそれを使用してみます。データの内容は以下です。
- 世界地図
- 世界の都市
また、今回はjupyterを使用してデータを展開してみようと思います。
■データの取得
import geopandas world = geopandas.datasets.get_path('naturalearth_lowres') #世界地図 cities = geopandas.datasets.get_path('naturalearth_cities') #都市
これだけでOKです。簡単ですね。
■データの読み込み
df_world = geopandas.read_file(world) df_cities = geopandas.read_file(cities)
こちらも簡単。取得したデータをデータフレーム化するだけですね。
片方のデータフレームの中身を確認します。
df_world.head()
ちゃんとデータが入っていることが確認できました。
■データのプロット
公式ドキュメントによるとdataflameに対して.plot()を使用することで、matplotlibが走るようです。
base = df_world.plot(color='white', edgecolor='black') df_cities.plot(ax=base, marker='o', color='red', markersize=5);
おぉー素晴らしい。サンプルデータが描画されました。
サンプルコード
上記をまとめたものを記載します。
# -*- coding: utf-8 -*- import geopandas world = geopandas.datasets.get_path('naturalearth_lowres') #世界地図 cities = geopandas.datasets.get_path('naturalearth_cities') #都市 df_world = geopandas.read_file(world) df_cities = geopandas.read_file(cities) base = df_world.plot(color='white', edgecolor='black') df_cities.plot(ax=base, marker='o', color='red', markersize=5);
このgeopandasですが、かなり面白いライブラリですね。今回は基礎的なことしか触れなかったのですが、geopandasでShapeファイルを作成するエントリーもありますので、よかったら読んでみてください。
www.gis-py.com
年々GISデータの重要性が高まる中、こういった便利なライブラリがもっと登場してくれるといいですね。
以上、「geopandasを使ってみよう!」でした。