DPZの地図、とは 地名の最後の一文字だけで地図をつくると地形が見える :: デイリーポータルZ のことです
過去にも何度かチャレンジしましたが、
今回は元ネタを総務省 e-Stat にある国勢調査データ(shapefile)を使ってみることにします
茨城県を例にします
政府統計の総合窓口 → 統計GIS → 境界データダウンロード
→ 小地域 → 国勢調査 → 2015年 - 小地域(町丁・字等別) → 世界測地系緯度経度・Shapefile → 08 茨城県 → 08000 茨城県全域
属性データさえあれば良いので(区域のポリゴンは不要なので)手っ取り早く 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
住所の数字部分はお役所の縦割り毎で表記ゆれがあるようです
こういう基本的なところをまず合わせようよ、と思います
filtered.csvファイルをQGISで読み込ませます
シンボロジとラベルを調整し、適当な背景を重ねれば完成です