GISっ子/「地名の最後の一文字」を取りそこねていたので訂正
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Stories/2020-07-06]] の元ネタは国土地理院データでしたが...
例)茨城県だと、桜川市、石岡市、水戸市、茨木町、のデータ...
#ref(./01.PNG,35%)
国土地理院データ以外でどうにかして「とある市区町村に属す...
[[API | HeartRails Geo API | 郵便番号/住所/緯度経度デー...
** 手順 [#c55e4018]
ざっくり解説
- とある都道府県に属する市区町村一覧を取得する
- 個々の市区町村について、そこに属する町域情報(町字名)...
- 町域情報をいい感じに加工して、緯度、経度、地名の最後の...
+ 市区町村一覧を取得する関数を定義しておく
#prism(bash){{{
# 関数定義
getCities ()
{
curl -s "http://geoapi.heartrails.com/api/json?method...
}
# 実行例
export pref=茨城県 # あとあと都道府県名を使うので環境変数...
getCities $pref | head -n3
水戸市
日立市
土浦市
}}}
#br
+ 町域情報を取得する関数を定義しておく
#prism(bash){{{
# 関数定義
getTowns ()
{
case "$#" in
1)
curl -s "http://geoapi.heartrails.com/api/jso...
;;
2)
curl -s "http://geoapi.heartrails.com/api/jso...
;;
esac
}
# 実行例1: 市区町村名のみ指定
getTowns 大宮 | head -n3
"139.626988","35.903223","さいたま市大宮区","下町一丁目"
"139.628315","35.903642","さいたま市大宮区","下町二丁目"
"139.630028","35.904032","さいたま市大宮区","下町三丁目"
# 実行例2: 市区町村名と都道府県名を指定
getTowns 大宮 $pref | head -n3
"140.427461","36.541261","常陸大宮市","宇留野"
"140.408893","36.563089","常陸大宮市","姥賀町"
"140.418712","36.542245","常陸大宮市","栄町"
}}}
#br
+ 2つの関数を使い、ある都道府県に含まれる町域を取得する
#prism(bash){{{
export pref=茨城県; for c in $(getCities $pref); do getTo...
}}}
#br
+ 町域情報をいい感じに加工して、緯度、経度、地名の最後の...
#prism(bash){{{
# 前述の手順で作成したファイルを入力
cat $pref-ichiran-plain.csv | \
# ダブルクォーテーションを削除
tr -d \" | \
# awkでいい感じに編集
awk -F, -v OFS=, '
{
# 町域レベル住所を加工するために変数に格納
# ただし /(その他)/ にマッチした場合は市区町村レベル...
if($NF~/(その他)/) a=$(NF-1); else a=$NF
# 「最後の一文字」に相応しくない文字を消す
# 例:山本町南五丁目町 -> 「本」より後ろを削除
# 例:豊田町 -> 「田」より後ろを削除
# 例:中村 -> 「中」より後ろを削除
# 例:中村南一丁目 -> 「村」より後ろを削除/いかん...
sub(/(町?[東西南北]?[〇一二三四五六七八九十百]+丁目|[市...
# 緯度、経度、町域レベル住所、最後の一文字 を出力
print $0,substr(a,length(a))
}' >$pref-ichiran.csv # 結果をファイルにリダイレクト
}}}
#br
+ QGISに $pref-ichiran.csv を取り込んで表示
#ref(./02.PNG,35%)
終了行:
[[Stories/2020-07-06]] の元ネタは国土地理院データでしたが...
例)茨城県だと、桜川市、石岡市、水戸市、茨木町、のデータ...
#ref(./01.PNG,35%)
国土地理院データ以外でどうにかして「とある市区町村に属す...
[[API | HeartRails Geo API | 郵便番号/住所/緯度経度デー...
** 手順 [#c55e4018]
ざっくり解説
- とある都道府県に属する市区町村一覧を取得する
- 個々の市区町村について、そこに属する町域情報(町字名)...
- 町域情報をいい感じに加工して、緯度、経度、地名の最後の...
+ 市区町村一覧を取得する関数を定義しておく
#prism(bash){{{
# 関数定義
getCities ()
{
curl -s "http://geoapi.heartrails.com/api/json?method...
}
# 実行例
export pref=茨城県 # あとあと都道府県名を使うので環境変数...
getCities $pref | head -n3
水戸市
日立市
土浦市
}}}
#br
+ 町域情報を取得する関数を定義しておく
#prism(bash){{{
# 関数定義
getTowns ()
{
case "$#" in
1)
curl -s "http://geoapi.heartrails.com/api/jso...
;;
2)
curl -s "http://geoapi.heartrails.com/api/jso...
;;
esac
}
# 実行例1: 市区町村名のみ指定
getTowns 大宮 | head -n3
"139.626988","35.903223","さいたま市大宮区","下町一丁目"
"139.628315","35.903642","さいたま市大宮区","下町二丁目"
"139.630028","35.904032","さいたま市大宮区","下町三丁目"
# 実行例2: 市区町村名と都道府県名を指定
getTowns 大宮 $pref | head -n3
"140.427461","36.541261","常陸大宮市","宇留野"
"140.408893","36.563089","常陸大宮市","姥賀町"
"140.418712","36.542245","常陸大宮市","栄町"
}}}
#br
+ 2つの関数を使い、ある都道府県に含まれる町域を取得する
#prism(bash){{{
export pref=茨城県; for c in $(getCities $pref); do getTo...
}}}
#br
+ 町域情報をいい感じに加工して、緯度、経度、地名の最後の...
#prism(bash){{{
# 前述の手順で作成したファイルを入力
cat $pref-ichiran-plain.csv | \
# ダブルクォーテーションを削除
tr -d \" | \
# awkでいい感じに編集
awk -F, -v OFS=, '
{
# 町域レベル住所を加工するために変数に格納
# ただし /(その他)/ にマッチした場合は市区町村レベル...
if($NF~/(その他)/) a=$(NF-1); else a=$NF
# 「最後の一文字」に相応しくない文字を消す
# 例:山本町南五丁目町 -> 「本」より後ろを削除
# 例:豊田町 -> 「田」より後ろを削除
# 例:中村 -> 「中」より後ろを削除
# 例:中村南一丁目 -> 「村」より後ろを削除/いかん...
sub(/(町?[東西南北]?[〇一二三四五六七八九十百]+丁目|[市...
# 緯度、経度、町域レベル住所、最後の一文字 を出力
print $0,substr(a,length(a))
}' >$pref-ichiran.csv # 結果をファイルにリダイレクト
}}}
#br
+ QGISに $pref-ichiran.csv を取り込んで表示
#ref(./02.PNG,35%)
ページ名: