[StatsFragments](http: // sinhrks) au lieu de ** geopandas ** introduit dans PyData.Tokyo Meetup # 9- "Geographic Information Data" Je l'ai essayé en référence à .hatenablog.com / entry / 2015/07/18/215951).
C'est facile si vous mettez Anaconda et utilisez conda-forge de Anaconda cloud. Une commande sous [^ 1].
bash
conda install -y geopandas -c conda-forge
Nous avons également préparé une image Docker tsutomu7 / geopandas. Vous devriez pouvoir le faire comme suit. (Veuillez actualiser votre navigateur après le démarrage du serveur Jupyter)
bash
firefox http://localhost:8888 &
docker run -it --rm -p 8888:8888 tsutomu7/geopandas sh -c "jupyter notebook --ip=*"
Préparation. flatten est un tableau de tableaux.
python3
%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,))]
La version de geopandas est la 0.2.1, qui est la dernière en ce moment.
python3
gpd.__version__
>>>
'0.2.1'
Téléchargez les données de Tokyo sur Earth Map Japan.
python3
!wget --no-check-certificate https://github.com/dataofjapan/land/raw/master/tokyo.geojson
Jetez un œil aux trois premières lignes.
python3
df = gpd.read_file('tokyo.geojson')
df[:3]
area_en | area_ja | code | geometry | ward_en | ward_ja |
---|---|---|---|---|---|
0 | Tokubu | Zone métropolitaine | 131211.0 | POLYGON ((139.821051 35.815077, 139.821684 35.... | Adachi Ku |
1 | Tokubu | Zone métropolitaine | 131059.0 | POLYGON ((139.760933 35.732206, 139.761002 35.... | Bunkyo Ku |
2 | Tokubu | Zone métropolitaine | 131016.0 | POLYGON ((139.770135 35.705352, 139.770172 35.... | Chiyoda Ku |
La géométrie contient des données de polygone. Dessinez avec matplotlib.
python3
df[df['area_en'] == 'Tokubu'].plot();
Cette fois, dessinez avec bokeh. Le polygone de géométrie est un mélange de shapely.geometry.polygon.Polygon et de shapely.geometry.multipolygon.MultiPolygon, donc aplatissez-le dans un tableau Polygon.
python3
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);
Le géocodage n'a pas fonctionné.
Lien de référence
[^ 1]: Vous pouvez aussi le faire avec "conda install -y pyproj shapely fiona; pip install geopandas".
c'est tout
Recommended Posts