Rで宇部市の町丁字別の人口密度を塗り分ける(making a choropleth map)
久々にRの話をする。
今回はRを使った地図の塗り分け(階級区分図,コロプレス図,choropleth map)を行う話。
実はだいぶ前にも同じ話題を取り扱った(「Rでカンボジアの塗り分け地図を作る」2011年11月28日)が,今回は自作コード(青木繁伸先生作成のコードを改造したもの)を利用するのではなく,Rのパッケージ"foreign","maptools","sp"を利用する。
準備
コロプレス図を作成するためのデータを,あらかじめ政府統計の総合窓口にて入手するところから始める。
政府統計の総合窓口/地図で見る統計(統計GIS):
http://e-stat.go.jp/SG2/eStatGIS/page/download.html
- 「Step1:統計調査(集計)を選択」の中から「平成22年国勢調査(小地域)2010/10/01」を選択する。
- 「Step2:統計表を選択」の中から,人口密度が求められそうなデータを選ぶ。「男女別人口総数及び世帯総数」がいいだろう
- 「統計表各種データダウンロードへ」をクリック
ここまで進むとまた新たなページ「統計表各種データダウンロード」に移動する。
- 「Step3:地域選択」で都道府県と市区町村を選択する。今回は山口県,35202宇部市の組み合わせで選択
- 「検索」ボタンを押すと統計データと境界データが表示される
- 境界データには町丁字の境界データ(形状データ,ポリゴン)と国勢調査による町丁字別人口,世帯数などのデータがまとめて入っている。どんなデータが含まれているのかは「定義書」をちゃんと読むこと
- 今回は「日本測地系緯度経度・Shape形式」の「宇部市(620KB)」を選択(クリック)してzipファイルをダウンロードする
zipファイルをダウンロードしたら,解凍して適当なところに保存する。
小生の場合はRによる作業のディレクトリとして"c:/rtemp/"というフォルダを使っているので,"c:/rtemp/JapanGIS/"というフォルダを作って,解凍したものを保存している。
正確に言うと,"c:/rtemp/JapanGIS/A002005212010DDSJC35202/"というのが宇部市のshapeデータを含むファイル群が保存されているフォルダとなる。
ここからがRでの作業になる。
あらかじめRのパッケージ"foreign","maptools","sp"を入手しておくこと。
そうしたら以下のコマンドを打ち込んでいく。
いよいよ宇部市のshapeデータの取り込みである。
するとこういう図が登場するはず(↓)
困ったことに海面まで含まれている。「定義書」を読むとこれを削るためのヒントが得られる。
今作ったデータセット"maptemp"には"HCODE"という陸地と水面とを区別する変数が入っているので,これを利用すれば海面を取り除くことができる。HCODE=8154が水面調査区であるから,
とやれば,海面が消えたことがわかるだろう。
次にデータセットmaptemp1に人口密度のデータを加える。「定義書」によれば,変数"AREA"が町丁字の面積[m^2],変数"JINKO"が町丁字別人口を表しているから,新たに人口密度を表す変数"DENS"を作って,データセットmaptemp1に加えてやればよい:
ここで,"* 1000000"としたのは人口密度の単位を[人/km^2]にするため。
さて,ついに町丁字別人口密度の塗り分けを行う。
・・・なんかうまくいっていませんね。色の違いが判らない。全面的に真っ赤。
これは極端に人口密度が高い場所が生じているため。思い切って,表示する人口密度の上限を10000人/km^2とする処理を加えてみる。
はい。ましになりました。
このあと,塗り分けのカラーパレットをいろいろと変えてみる。
"terrain.colors"を使ってみた結果は次のようになる(↓):
小生としては"terrain.colors"の方が"heat.colors"よりも気に入っている。
というわけで,結構楽にコロプレス図が書けることがわかった。
| 固定リンク
「R」カテゴリの記事
- 統計実務の好著が出た:朝野煕彦『入門 多変量解析の実際』(2018.06.04)
- タグクラウドもしくはワードクラウドの練習(続)(2018.05.17)
- タグクラウドもしくはワードクラウドの練習(2018.05.16)
- Rでネパールのdistrict別人口密度の塗分け地図を作る(2018.04.06)
- Rで雨温図(Hythergraph)を書く(その3)(2017.04.25)
コメント