GISっ子/e-stat国勢調査データからDPZの地図を作る

はじめに

DPZの地図、とは 地名の最後の一文字だけで地図をつくると地形が見える :: デイリーポータルZ のことです

過去にも何度かチャレンジしましたが、

今回は元ネタを総務省 e-Stat にある国勢調査データ(shapefile)を使ってみることにします

データ入手

茨城県を例にします

政府統計の総合窓口統計GIS → 境界データダウンロード
→ 小地域 → 国勢調査 → 2015年 - 小地域(町丁・字等別) → 世界測地系緯度経度・Shapefile → 08 茨城県 → 08000 茨城県全域

estat01.PNG

dbf を csv に変換

属性データさえあれば良いので(区域のポリゴンは不要なので)手っ取り早く dbf ファイルから csv ファイルを手に入れます
ここでは dbfコンバータをコンテナにする を利用しています

# e-Statからダウンロードしたファイルを解凍
$ unzip A002005212015DDSWC08.zip
Archive:  A002005212015DDSWC08.zip
  inflating: h27ka08.dbf
  inflating: h27ka08.prj
  inflating: h27ka08.shp
  inflating: h27ka08.shx

# (事前確認)dbfconv のエイリアス
$ command -v dbfconv
alias dbfconv='podman run --rm -v .:/mnt kemasoft/dbfconv dbfconv'

# dbfconvで変換
$ dbfconv h27ka08.dbf
cp932encoding is correct.
h27ka08.csv was wroted.
All files were wroted.

# csvファイルが出力されている
$ ls
A002005212015DDSWC08.zip  h27ka08.csv  h27ka08.dbf  h27ka08.prj  h27ka08.shp  h27ka08.shx

地名の最後の一文字、緯度、経度を抽出

を sed, awk でやります

sed '1d;s/"//g' h27ka08.csv | awk -F, -v OFS=, 'a=$7{sub(/(町?[東西南北]?[0123456789]+丁目|[町村])$/, "", a);print $5,$6,$7,a,substr(a,length(a)),$33,$34}' >filtered.csv

解説入り

# 1行目(ヘッダ行)を削除、ダブルクォーテーションを全て削除
sed '1d;s/"//g' h27ka08.csv | \
# awk をカンマ区切りで入出力させる
awk -F, -v OFS=, '
# 7 カラム目(S_NAME)が存在するときに以降の変換処理を行う
a=$7{
  # S_NAMEの末尾から余分な文字を削除(例:小川町北3丁目→小川)
  sub(/(町?[東西南北]?[0123456789]+丁目|[町村])$/, "", a);
  # (おまけで)都道府県、市区町村、町丁字等名称と、
  # 町丁字等名称の最後の一文字、経度、緯度を出力
  print $5,$6,$7,a,substr(a,length(a)),$33,$34}
' >filtered.csv # 結果をファイルに出力

awk で使ったカラムは以下の通りです
詳しくは 平成27年国勢調査町丁・字等別境界データ データベース定義書 を参照して下さい

     5  PREF_NAME
     6  CITY_NAME
     7  S_NAME
    33  X_CODE
    34  Y_CODE

余談

住所の数字部分はお役所の縦割り毎で表記ゆれがあるようです

こういう基本的なところをまず合わせようよ、と思います

QGISで表示

filtered.csvファイルをQGISで読み込ませます

estat02.PNG

シンボロジとラベルを調整し、適当な背景を重ねれば完成です

estat03.jpg

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-07-27 (月) 14:18:04