これなに
PyData.Tokyo Meetup #9 -「地理情報データ」で紹介されていた geopandas をStatsFragments を参考に試してみました。
インストール
Anaconda入れて、Anaconda cloud の conda-forge 使えば簡単。下記のコマンド一発1。
conda install -y geopandas -c conda-forge
Dockerイメージtsutomu7/geopandasも用意しました。下記のようにすればできるはず。(Jupyterサーバー起動後にブラウザを更新してください)
firefox http://localhost:8888 &
docker run -it --rm -p 8888:8888 tsutomu7/geopandas sh -c "jupyter notebook --ip=*"
Jupyterで試してみる
準備。flattenは、配列の配列を配列にするもの。
%matplotlib inline
import numpy as np, pandas as pd, geopandas as gpd
from bokeh.plotting import output_notebook, show, figure
output_notebook()
flatten = lambda i: [a for b in i for a in (flatten(b) if hasattr(b,'__iter__') else (b,))]
geopandas のバージョンは、0.2.1 で現時点で最新。
gpd.__version__
>>>
'0.2.1'
東京のデータを地球地図日本からダウンロード。
!wget --no-check-certificate https://github.com/dataofjapan/land/raw/master/tokyo.geojson
最初の3行を見てみる。
df = gpd.read_file('tokyo.geojson')
df[:3]
|area_en|area_ja|code|geometry|ward_en|ward_ja
:--|:--|:--|:--|:--|:--|:--
0|Tokubu|都区部|131211.0|POLYGON ((139.821051 35.815077, 139.821684 35....|Adachi Ku|足立区
1|Tokubu|都区部|131059.0|POLYGON ((139.760933 35.732206, 139.761002 35....|Bunkyo Ku|文京区
2|Tokubu|都区部|131016.0|POLYGON ((139.770135 35.705352, 139.770172 35....|Chiyoda Ku|千代田区
geometry にポリゴンデータが入っています。
matplotlib で描画。
df[df['area_en'] == 'Tokubu'].plot();
今度は、bokehで描画。
geometryのポリゴンは、shapely.geometry.polygon.Polygon と shapely.geometry.multipolygon.MultiPolygon が混じっているので、flattenでPolygonの配列にします。
xy = [i.exterior.coords.xy for i in flatten(df[df.area_en == 'Tokubu'].geometry)]
p = figure(plot_width=400, plot_height=300)
p.patches([tuple(i[0]) for i in xy], [tuple(i[1]) for i in xy],
fill_color='white', line_color="black", line_width=0.5)
show(p);
Geocodingはうまくいきませんでした。
参考リンク
- Python geopandas + Bokeh で地理情報をプロットしたい
- GeoPandas Doc
- GeoPandas PyPI
- PythonとQGISを使って地理空間を可視化する – UFO目撃情報でのケーススタディ
- PyData.Tokyo Meetup #9 -「地理情報データ」
- Anaconda cloud
- Pythonで地理情報をプロットする
- 地球地図日本
- AnacondaのJupyter notebookでnbextensionsを使う
- tsutomu7/geopandas/
以上
-
"conda install -y pyproj shapely fiona; pip install geopandas" でもできました。 ↩