保育園の立地ミスマッチが気になったので、子どもが多いエリアを可視化しようとしたところ、Excelでは可視化できなかったのでPythonに挑戦してみました。境界データの整形が一番苦労しました。非エンジニア(Word、Excel、Powerpointしか使ったことがない)の初心者です。
Pythonのコード
まず、最終的に記述したコードです。初心者なので間違いもあるかと思いますがご容赦ください。
※作業環境はWindows7です。
※Anacondaをインストールして、Jyupter Notebook上で作業しました。
※geoJSONはget(URL)でGitHubから読み込みたかったのですが、URLが分からず、自分のパソコンから読みこむかたちになっています。
コードで記述した内容のイメージ
境界データのJSONデータ
中野区町丁別の境界データのファイルはGitHubで公開しましたので、そちらを参照ください。(データ出典元のe-StatにはGitHubに載せる旨問い合わせ済)
https://github.com/RefletsDansLeau/Geojson
JSONデータの整形の体験談
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」と書いてある画面だと気づくまでかなり時間がかかりました…。
②Pythonライブラリのインストール
始めは、Jupyter Notebookのセルに「import folium」と記述しても何も起こりませんでした。
色々検索すると、ライブラリを使う時に、まずはじめに「pip install folium」などと記述する必要がある、と分かりましたが、どこに記述するのか分かりませんでした。
色々いじってみて「Anaconda Prompt」なるものを発見!ここに記述すると上手くいくことが分かりました。
感想
時間はかかりましたが、念願のコロプレス図を作成することができました。保育園の立地ミスマッチを防ぐ等活用していただきたいです。
子育て中の親としては児童館も残してほしいです!今後も色々なオープンデータを可視化したいと思います。