GISっ子/e-stat国勢調査データからDPZの地図を作る
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* はじめに [#d248f2a8]
DPZの地図、とは [[地名の最後の一文字だけで地図をつくると...
過去にも何度かチャレンジしましたが、
-[[GISっ子/デイリーポータルZのあの地図を作りたい]]
-[[GISっ子/「地名の最後の一文字」を取りそこねていたので訂...
今回は元ネタを総務省 e-Stat にある国勢調査データ(shapefi...
* データ入手 [#g533143b]
茨城県を例にします
[[政府統計の総合窓口>https://www.e-stat.go.jp/]] → [[統計...
→ 小地域 → 国勢調査 → 2015年 - 小地域(町丁・字等別) → ...
#ref(./estat01.PNG,50%)
* dbf を csv に変換 [#mf153559]
属性データさえあれば良いので(区域のポリゴンは不要なので...
ここでは [[dbfコンバータをコンテナにする>GISっ子/dbfコン...
#prism(bash){{{
# 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 h27ka08.dbf
cp932encoding is correct.
h27ka08.csv was wroted.
All files were wroted.
# csvファイルが出力されている
$ ls
A002005212015DDSWC08.zip h27ka08.csv h27ka08.dbf h27ka...
}}}
* 地名の最後の一文字、緯度、経度を抽出 [#u79c6cb0]
- 不要行、不要カラムの削除(必要なカラムのみ出力)
- 地名の最後の一文字の抽出
を sed, awk でやります
#prism(bash){{{
sed '1d;s/"//g' h27ka08.csv | awk -F, -v OFS=, 'a=$7{sub(...
}}}
解説入り
#prism(bash){{{
# 1行目(ヘッダ行)を削除、ダブルクォーテーションを全て削除
sed '1d;s/"//g' h27ka08.csv | \
# awk をカンマ区切りで入出力させる
awk -F, -v OFS=, '
# 7 カラム目(S_NAME)が存在するときに以降の変換処理を行う
a=$7{
# S_NAMEの末尾から余分な文字を削除(例:小川町北3丁目→...
sub(/(町?[東西南北]?[0123456789]+丁目|[町村])...
# (おまけで)都道府県、市区町村、町丁字等名称と、
# 町丁字等名称の最後の一文字、経度、緯度を出力
print $5,$6,$7,a,substr(a,length(a)),$33,$34}
' >filtered.csv # 結果をファイルに出力
}}}
awk で使ったカラムは以下の通りです
詳しくは [[平成27年国勢調査町丁・字等別境界データ データ...
#pre(){{
5 PREF_NAME
6 CITY_NAME
7 S_NAME
33 X_CODE
34 Y_CODE
}}
** 余談 [#lfcd4f2a]
住所の数字部分はお役所の縦割り毎で表記ゆれがあるようです
- 国土地理院:漢数字(一二三)
- 総務省:全角数字(123)
こういう基本的なところをまず合わせようよ、と思います
* QGISで表示 [#x7b4b816]
filtered.csvファイルをQGISで読み込ませます
#ref(./estat02.PNG,50%)
シンボロジとラベルを調整し、適当な背景を重ねれば完成です
- シンボロジ:シンボルなし
- ラベル:単一定義(single)、値「field_5」、配置「点からの...
#ref(./estat03.jpg,30%)
終了行:
* はじめに [#d248f2a8]
DPZの地図、とは [[地名の最後の一文字だけで地図をつくると...
過去にも何度かチャレンジしましたが、
-[[GISっ子/デイリーポータルZのあの地図を作りたい]]
-[[GISっ子/「地名の最後の一文字」を取りそこねていたので訂...
今回は元ネタを総務省 e-Stat にある国勢調査データ(shapefi...
* データ入手 [#g533143b]
茨城県を例にします
[[政府統計の総合窓口>https://www.e-stat.go.jp/]] → [[統計...
→ 小地域 → 国勢調査 → 2015年 - 小地域(町丁・字等別) → ...
#ref(./estat01.PNG,50%)
* dbf を csv に変換 [#mf153559]
属性データさえあれば良いので(区域のポリゴンは不要なので...
ここでは [[dbfコンバータをコンテナにする>GISっ子/dbfコン...
#prism(bash){{{
# 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 h27ka08.dbf
cp932encoding is correct.
h27ka08.csv was wroted.
All files were wroted.
# csvファイルが出力されている
$ ls
A002005212015DDSWC08.zip h27ka08.csv h27ka08.dbf h27ka...
}}}
* 地名の最後の一文字、緯度、経度を抽出 [#u79c6cb0]
- 不要行、不要カラムの削除(必要なカラムのみ出力)
- 地名の最後の一文字の抽出
を sed, awk でやります
#prism(bash){{{
sed '1d;s/"//g' h27ka08.csv | awk -F, -v OFS=, 'a=$7{sub(...
}}}
解説入り
#prism(bash){{{
# 1行目(ヘッダ行)を削除、ダブルクォーテーションを全て削除
sed '1d;s/"//g' h27ka08.csv | \
# awk をカンマ区切りで入出力させる
awk -F, -v OFS=, '
# 7 カラム目(S_NAME)が存在するときに以降の変換処理を行う
a=$7{
# S_NAMEの末尾から余分な文字を削除(例:小川町北3丁目→...
sub(/(町?[東西南北]?[0123456789]+丁目|[町村])...
# (おまけで)都道府県、市区町村、町丁字等名称と、
# 町丁字等名称の最後の一文字、経度、緯度を出力
print $5,$6,$7,a,substr(a,length(a)),$33,$34}
' >filtered.csv # 結果をファイルに出力
}}}
awk で使ったカラムは以下の通りです
詳しくは [[平成27年国勢調査町丁・字等別境界データ データ...
#pre(){{
5 PREF_NAME
6 CITY_NAME
7 S_NAME
33 X_CODE
34 Y_CODE
}}
** 余談 [#lfcd4f2a]
住所の数字部分はお役所の縦割り毎で表記ゆれがあるようです
- 国土地理院:漢数字(一二三)
- 総務省:全角数字(123)
こういう基本的なところをまず合わせようよ、と思います
* QGISで表示 [#x7b4b816]
filtered.csvファイルをQGISで読み込ませます
#ref(./estat02.PNG,50%)
シンボロジとラベルを調整し、適当な背景を重ねれば完成です
- シンボロジ:シンボルなし
- ラベル:単一定義(single)、値「field_5」、配置「点からの...
#ref(./estat03.jpg,30%)
ページ名: