日本の自治体の境界データをダウンロードする

日本の自治体の境界データをダウンロードします。

# ファイル構成

project_dir
├── /R2_boundary
│   ├── /04_miyagi/04_miyagi.shp
│   └── (省略)
└── ***.ipynb <- 実行用ノートブック

# 境界データのダウンロード

import requests

# 境界データのディレクトリ作成
!mkdir -p ./R2_boundary

# 都道府県リスト
prefs = [["hokkaido",1], ["aomori",2], ["iwate",3], ["miyagi",4], ["akita",5], ["yamagata",6], ["fukushima",7],
             ["ibaraki",8], ["tochigi",9], ["gunma",10], ["saitama",11], ["chiba",12], ["tokyo",13], ["kanagawa",14],
             ["niigata",15], ["toyama",16], ["ishikawa",17], ["fukui",18], ["yamanashi",19], 
             ["nagano",20], ["gifu",21], ["shizuoka",22], ["aichi",23], ["mie",24],
             ["shiga",25], ["kyoto",26],["osaka",27], ["hyogo",28], ["nara",29], ["wakayama",30],
             ["tottori",31], ["shimane",32], ["okayama",33], ["hiroshima",34], ["yamaguchi",35],
             ["tokushima",36], ["kanagawa",37], ["ehime",38], ["kouchi",39], 
             ["fukuoka",40], ["saga",41], ["nagasaki",42], ["kumamoto",43], ["oita",44], ["miyagi",45], ["kagoshima",46],
             ["okinawa",47]]

# 都道府県でデータを抽出
for name,i in prefs:
    # e-statのURL
    prefCode = str(i).zfill(2)
    pref_dir = prefCode + "_" + name
    print(pref_dir, prefCode)
    # shpのURL
    url = f"https://www.e-stat.go.jp/gis/statmap-search/data?dlserveyId=A002005212020&code={prefCode}&coordSys=1&format=shape&downloadType=5&datum=2000"
    
    # ディレクトリが存在するか
    if not os.path.exists(f"./R2_boundary/{pref_dir}"):
        # urlにリクエスト
        urlData = requests.get(url).content
        
        # 出力ファイル名
        filename = f"./R2_boundary/{pref_dir}.zip"
        with open(filename ,mode='wb') as f: # wb でバイト型を書き込める
            f.write(urlData)
        
        # ディレクトリの作成
        !mkdir -p ./R2_boundary/$pref_dir
        # zipファイルの解凍
        !unzip ./R2_boundary/$pref_dir".zip" -d ./R2_boundary/$pref_dir > /dev/null
        # zipファイルの削除
        !rm ./R2_boundary/$pref_dir".zip"
        
        # ファイル名前の変更
        paths = glob.glob(f"./R2_boundary/{pref_dir}/*")
        for path in paths:
            # 変更後
            rename = path.replace(f"r2ka{prefCode}", pref_dir)
            # ファイル名の変更
            os.rename(path, rename) 

# まとめ

日本の自治体の境界データをダウンロードしました。

# 参考サイト

e-stat 境界データ (opens new window)

Pandasにおける複数条件での重複削除

Pandasにおける複数条件での重複削除

Pandasにおける複数条件での重複削除を実施します.

日本のOpenStreetMapをダウンロードする

日本のOpenStreetMapをダウンロードする

日本のOpenStreetMapをダウンロードします。