GeoPandasを入れてみた
ちょっと必要に迫られてGeoPandasってのを試してる。インストールはこちら[GIS奮闘記] を参考にオプション含め、下のようにインストールを行いました。python3 -m venv venv を走らせたプロジェクトフォルダ内で作業してます。
[venv] [mac:pathToPrj] userName% pip3 install numpy (略) Installing collected packages: numpy Successfully installed numpy-1.18.2 [venv] [mac:pathToPrj] userName% pip3 install pandas (略) Successfully installed pandas-1.0.3 python-dateutil-2.8.1 pytz-2019.3 six-1.14.0 [venv] [mac:pathToPrj] userName% pip3 install shapely (略) Successfully installed shapely-1.7.0 [venv] [mac:pathToPrj] userName% pip3 install fiona (略) Successfully installed attrs-19.3.0 click-7.1.1 click-plugins-1.1.1 cligj-0.5.0 fiona-1.8.13.post1 munch-2.5.0 [venv] [mac:pathToPrj] userName% pip3 install six Requirement already satisfied: six in ./venv/lib/python3.7/site-packages (1.14.0) [venv] [mac:pathToPrj] userName% pip3 install pyproj (略) Successfully installed pyproj-2.6.0 [venv] [mac:pathToPrj] userName% pip3 install descartes (略) Successfully installed cycler-0.10.0 descartes-1.1.0 kiwisolver-1.2.0 matplotlib-3.2.1 pyparsing-2.4.7 [venv] [mac:pathToPrj] userName% pip3 install matplotlib Requirement already satisfied: matplotlib in ./venv/lib/python3.7/site-packages (3.2.1) (略) Requirement already satisfied: six in ./venv/lib/python3.7/site-packages (from cycler>=0.10->matplotlib) (1.14.0) [venv] [mac:pathToPrj] userName% pip3 install geopy (略) Successfully installed geographiclib-1.50 geopy-1.21.0 [venv] [mac:pathToPrj] userName% pip3 install geopandas (略) Successfully installed geopandas-0.7.0 [venv] [mac:pathToPrj] userName%
実際に書いてみたところ、Spatialindexってのが足りなかったんで、これはbrewで入れてやりました。
brew install Spatialindex
空間インデックスって概念のものを取り扱うライブラリってことでしょか。
これで国土地理院国土数値情報の行政区域データから日本列島とか千葉県とかそんな塊の形状を出したかったわけです。
行政区域データは市区町村の形状が入っているために、千葉県の形が欲しい場合とかに市区町村境界部分が無駄なのです。じゃぁIllustratorでマージすればいいじゃんって思うのですけど、Illustratorは一つの形状が32000ポイントを超えることができないため、形状をマージしていく過程でそれの数を超えてしまう事が多々ありどうにもならない。それ以上のポイントを取り扱えるAfinity Designerだと、きれいにマージしてくれない(境界線部分にゴミが残ることが多い)のです。だからPythonで処理できないかなと、形状をマージすることができる何かを探して、GeoPandasに行き当たりました。
というわけで、各所参考に組んでみたのがこちら。(合成部分はこちらを参考にしました。)
import os import matplotlib.pyplot as plt import geopandas from shapely.ops import cascaded_union f = 'pathTo/N03-190101_GML/N03-19_190101.shp' #行政地域データの日本全土のもの src = geopandas.read_file( f , encoding="SHIFT-JIS", ) polys = src.geometry polygons = [ poly for poly in polys ] boundary = geopandas.GeoSeries(cascaded_union(polygons)) boundary.plot(color = 'red') plt.savefig('out.svg')
みた感じ、割といい感じの結果が出たような気がします。
上は全体、下は犬吠埼あたりを拡大したもの。
これ、図法変換をうまく行うことができれば、以前やってた市区町村区切りを持った形の日本地図を出す場合でも、以前よりだいぶシンプルに処理できるかもしれないと期待が高まってきております。
コメント |
コメントはありません。 |
![]() |
コメントを投稿する |
![]() |
ブログ作成者から承認されるまでコメントは反映されません |