行政データのプロット
今回は国土数値情報の行政区域データを使う
https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_3.html
これは市区町村の境界が表示できる
今回は東京都の平成29年のものを使う
N03-170101_13_GML.zip
をダウンロード
ダブルクリックで解凍し
mv ~/Downloads/N03-170101_13_GML .
で移動
この中にあるシェープファイルを使う
N03-17_13_170101.shp
を使う
拡張子 .shpがシェープファイル
まずはこのファイルの読み込み
gyosei = gpd.read_file('./N03-170101_13_GML/N03-17_13_170101.shp')
gyosei
で
N03_001 N03_002 N03_003 N03_004 N03_007 geometry 0 東京都 None 千代田区 None 13101 POLYGON ((139.77287 35.7037, 139.77279 35.7031... 1 東京都 None 中央区 None 13102 POLYGON ((139.78341 35.69645, 139.78459 35.696... 2 東京都 None 港区 None 13103 POLYGON ((139.77129 35.62841, 139.77128 35.628... 3 東京都 None 港区 None 13103 POLYGON ((139.76689 35.62774, 139.76718 35.627... 4 東京都 None 港区 None 13103 POLYGON ((139.77022 35.63199, 139.77046 35.631... ... ... ... ... ... ... ... 6205 東京都 None None 所属未定地 None POLYGON ((139.8413 35.64702, 139.84131 35.6471... 6206 東京都 None None 所属未定地 None POLYGON ((139.80438 35.60061, 139.80399 35.600... 6207 東京都 None None 所属未定地 None POLYGON ((139.81937 35.60899, 139.81923 35.608... 6208 東京都 None None 所属未定地 None POLYGON ((139.81009 35.61355, 139.81069 35.613... 6209 東京都 None None 所属未定地 None POLYGON ((139.82664 35.5976, 139.827 35.59703,... 6210 rows × 6 columns
となる
次にこの中から品川区のデータに絞るため
まずは区のみに絞る
そのためにまずはNoneのあるデータを除く
gyosei_tmp = gyosei.dropna(subset=['N03_003']) gyosei_tmp
これで
N03_001 N03_002 N03_003 N03_004 N03_007 geometry 0 東京都 None 千代田区 None 13101 POLYGON ((139.77287 35.7037, 139.77279 35.7031... 1 東京都 None 中央区 None 13102 POLYGON ((139.78341 35.69645, 139.78459 35.696... 2 東京都 None 港区 None 13103 POLYGON ((139.77129 35.62841, 139.77128 35.628... 3 東京都 None 港区 None 13103 POLYGON ((139.76689 35.62774, 139.76718 35.627... 4 東京都 None 港区 None 13103 POLYGON ((139.77022 35.63199, 139.77046 35.631... ... ... ... ... ... ... ... 140 東京都 None 西多摩郡 瑞穂町 13303 POLYGON ((139.35786 35.74464, 139.35776 35.744... 141 東京都 None 西多摩郡 瑞穂町 13303 POLYGON ((139.35 35.79414, 139.35016 35.79364,... 142 東京都 None 西多摩郡 日の出町 13305 POLYGON ((139.19302 35.78875, 139.19307 35.788... 143 東京都 None 西多摩郡 檜原村 13307 POLYGON ((139.10611 35.77867, 139.10644 35.778... 144 東京都 None 西多摩郡 奥多摩町 13308 POLYGON ((139.01912 35.89826, 139.01941 35.898...
となる
次にこのデータから区を含むものだけに絞り込む
gyosei_ku = gyosei_tmp['N03_003'].str.contains('区')
gyosei_ku
とすれば
0 True
1 True
2 True
3 True
4 True
...
140 False
141 False
142 False
143 False
144 False
Name: N03_003, Length: 117, dtype: bool
となって判別できるので
この条件式を使って
gyosei_ku = gyosei_tmp[gyosei_tmp['N03_003'].str.contains('区')]
gyosei_ku
とすれば
N03_001 N03_002 N03_003 N03_004 N03_007 geometry 0 東京都 None 千代田区 None 13101 POLYGON ((139.77287 35.7037, 139.77279 35.7031... 1 東京都 None 中央区 None 13102 POLYGON ((139.78341 35.69645, 139.78459 35.696... 2 東京都 None 港区 None 13103 POLYGON ((139.77129 35.62841, 139.77128 35.628... 3 東京都 None 港区 None 13103 POLYGON ((139.76689 35.62774, 139.76718 35.627... 4 東京都 None 港区 None 13103 POLYGON ((139.77022 35.63199, 139.77046 35.631... ... ... ... ... ... ... ... 107 東京都 None 葛飾区 None 13122 POLYGON ((139.87626 35.79479, 139.87661 35.793... 108 東京都 None 江戸川区 None 13123 POLYGON ((139.86285 35.63532, 139.86299 35.635... 109 東京都 None 江戸川区 None 13123 POLYGON ((139.8638 35.63722, 139.86391 35.6371... 110 東京都 None 江戸川区 None 13123 POLYGON ((139.8556 35.63856, 139.85563 35.6385... 111 東京都 None 江戸川区 None 13123 POLYGON ((139.89018 35.75055, 139.89044 35.750... 112 rows × 6 columns
というように区のみにできる
これで東京23区の表示をする
gyosei_ku.plot()
これで区の区切りが白い線になっているのがわかる
次に品川区のみ色を変更する
ax = gyosei_ku.plot() gdf.plot(ax=ax,color='orange',markersize=1) ax = gyosei_ku.plot() gdf.plot(ax=ax,color='orange',markersize=1)
次に品川のみに絞り込む
shinagawa = gyosei[gyosei['N03_003']=='品川区'] shinagawa
これで
N03_001 N03_002 N03_003 N03_004 N03_007 geometry 87 東京都 None 品川区 None 13109 POLYGON ((139.75501 35.61771, 139.75507 35.617... 88 東京都 None 品川区 None 13109 POLYGON ((139.77231 35.62188, 139.77302 35.621... 89 東京都 None 品川区 None 13109 POLYGON ((139.75953 35.625, 139.75966 35.6216,... 90 東京都 None 品川区 None 13109 POLYGON ((139.71943 35.64167, 139.71953 35.641...
となる
次に品川区のみ表示する
ax = shinagawa.plot() gdf.plot(ax=ax,color='orange',markersize=2)