保育園の立地ミスマッチが気になったので、子どもが多いエリアを可視化しようとしたところ、Excelでは可視化できなかったのでPythonに挑戦してみました。境界データの整形が一番苦労しました。非エンジニア(Word、Excel、Powerpointしか使ったことがない)の初心者です。
Pythonのコード
まず、最終的に記述したコードです。初心者なので間違いもあるかと思いますがご容赦ください。
![tizu_code.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/777340/a70256b4-1264-1d64-be56-2494363cdc53.jpeg)※作業環境はWindows7です。
※Anacondaをインストールして、Jyupter Notebook上で作業しました。
※geoJSONはget(URL)でGitHubから読み込みたかったのですが、URLが分からず、自分のパソコンから読みこむかたちになっています。
コードで記述した内容のイメージ
![cholo_setumei.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/777340/2e90ef75-af2e-b461-8b4c-f73764692a8a.jpeg)境界データのJSONデータ
中野区町丁別の境界データのファイルはGitHubで公開しましたので、そちらを参照ください。(データ出典元のe-StatにはGitHubに載せる旨問い合わせ済) https://github.com/RefletsDansLeau/GeojsonJSONデータの整形の体験談
JSONファイルが完成するまで長い道のりでした。ご興味がある方はお読みください。
①「地図で見る統計(統計GIS)」でShapeファイルをダウンロード
まず、中野区町丁別の境界データのjsonファイルを「地図で見る統計(統計GIS)」サイトで探しましたが、Shapeファイルしか見つかりませんでした。 Shapeファイルは4つに分かれており、そのままだとPythonでコロプレス図が書けなかったので、自分で整形することにしました。②phtyonのPyShpライブラリで4つのファイルを一つに統合
PythonのPyShpライブラリでShapeファイルを読み込むことができ、jsonデータ風の文字列が表示されたので、この文字列を保存しました。③細かい整形
しかし、上記の状態ではPythonで読み込めなかったので、知人に相談したところ「文法エラー」とのことでした。そして、括弧の種類を()→[]へ、また余分な,(カンマ)を修正してくださりました。「Code for 中野」の皆様、アドバイスありがとうございました。
この段階でPythonで読み込もうとしたところ、エラー(UnicodeDecodeError)が出てきてしまいました。余分なデータが含まれているのかもしれないと思い「geojson.io」のサイトで不要な列をガンガン削除し、「Right Hand Rule GeoJSON Fixer」というサイトで修正し、Geojson ファイルチェッカーにかけたところ、無事に境界線が描写されました。
しかし、まだPythonでコロプレス図が書けません。そこで「Visual Studio Code」を使って「JSONで保存」としてみたり、町丁名を日本語→英語表記に変えたところ、ついにPythonでコロプレス図が描写できるようになりました。
最後に、描写したコロプレス図ですが、なぜか、色が塗れている区画と灰色の区画が混じっていました。そこで、Visual Studio Codeを開いて色が塗れる区画と塗れない区画を比較したところ、行政コードの数字をダブルクオテーションで囲うか囲わないかの違いがあることに気づき、ダブルクオテーション無しで統一しました。すると、すべての区画で無事に色が塗れるようになりました。かくして悲願のJSONファイルが完成しました。
プログラミング初心者の私がつまづいた点
①Anacondaの閉じ方
Anacondaの使い方については色々なサイトで説明をしておりますが、検索してもなかなか分からなかったのが「Anacondaの閉じ方」です。「Ctrl+Cでターミナルを閉じる。」と説明があるのですが、そもそも「ターミナル」が分かりませんでした。→「ターミナル」とは、どうやら「Anaconda Prompt」と書いてある画面だと気づくまでかなり時間がかかりました…。