« 林田憲明『火山島の神話』を読む | トップページ | わらの犬:「天地不仁,以萬物為芻狗。聖人不仁,以百姓為芻狗」について考えてみる »

2014.10.21

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データの取り込みである。

するとこういう図が登場するはず(↓)

Ube01

困ったことに海面まで含まれている。「定義書」を読むとこれを削るためのヒントが得られる。

今作ったデータセット"maptemp"には"HCODE"という陸地と水面とを区別する変数が入っているので,これを利用すれば海面を取り除くことができる。HCODE=8154が水面調査区であるから,

とやれば,海面が消えたことがわかるだろう。

Ube02

次にデータセットmaptemp1に人口密度のデータを加える。「定義書」によれば,変数"AREA"が町丁字の面積[m^2],変数"JINKO"が町丁字別人口を表しているから,新たに人口密度を表す変数"DENS"を作って,データセットmaptemp1に加えてやればよい:

ここで,"* 1000000"としたのは人口密度の単位を[人/km^2]にするため。

さて,ついに町丁字別人口密度の塗り分けを行う。

Ube03

・・・なんかうまくいっていませんね。色の違いが判らない。全面的に真っ赤。

これは極端に人口密度が高い場所が生じているため。思い切って,表示する人口密度の上限を10000人/km^2とする処理を加えてみる。

Ube04

はい。ましになりました。

このあと,塗り分けのカラーパレットをいろいろと変えてみる。

"terrain.colors"を使ってみた結果は次のようになる(↓):

Ube05

小生としては"terrain.colors"の方が"heat.colors"よりも気に入っている。

というわけで,結構楽にコロプレス図が書けることがわかった。

|

« 林田憲明『火山島の神話』を読む | トップページ | わらの犬:「天地不仁,以萬物為芻狗。聖人不仁,以百姓為芻狗」について考えてみる »

R」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/44485/60522050

この記事へのトラックバック一覧です: Rで宇部市の町丁字別の人口密度を塗り分ける(making a choropleth map):

« 林田憲明『火山島の神話』を読む | トップページ | わらの犬:「天地不仁,以萬物為芻狗。聖人不仁,以百姓為芻狗」について考えてみる »