LoginSignup
0
1

More than 3 years have passed since last update.

【Python】foliumで中野区の0歳人口を可視化(+geoJSONの整形)

Last updated at Posted at 2020-11-27

保育園の立地ミスマッチが気になったので、子どもが多いエリアを可視化しようとしたところ、Excelでは可視化できなかったのでPythonに挑戦してみました。境界データの整形が一番苦労しました。非エンジニア(Word、Excel、Powerpointしか使ったことがない)の初心者です。

中野区_0歳児の数.jpg

Pythonのコード

まず、最終的に記述したコードです。初心者なので間違いもあるかと思いますがご容赦ください。

tizu_code.jpg

※作業環境はWindows7です。
※Anacondaをインストールして、Jyupter Notebook上で作業しました。
※geoJSONはget(URL)でGitHubから読み込みたかったのですが、URLが分からず、自分のパソコンから読みこむかたちになっています。

コードで記述した内容のイメージ

cholo_setumei.jpg

境界データの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」なるものを発見!ここに記述すると上手くいくことが分かりました。

感想

時間はかかりましたが、念願のコロプレス図を作成することができました。保育園の立地ミスマッチを防ぐ等活用していただきたいです。
子育て中の親としては児童館も残してほしいです!今後も色々なオープンデータを可視化したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1