GeoPandas を使って 札幌市の行政区のポリゴンを統合する

GeoPandas を使って 札幌市の行政区のポリゴンを統合する

GeoPandas を使って GeoJson のポリゴンを統合する の続きです。

前回は

富山県の「舟橋村」「上市町」「立山町」のGeoJson のポリゴンを統合して

富山県中新川郡 のポリゴンを作成した。

今回は 北海道 札幌市 の行政区のポリゴンを統合して

北海道 札幌市のポリゴンを作成する。

GeoJson は下記を使用した。

JapanCityGeoJson 2020

札幌市の行政区のGeoJsonはあるが、 札幌市のGeoJsonはない、

そこで、 札幌市の行政区のポリゴンを統合して 札幌市のポリゴンを作成する。

(1) 札幌市の行政区のGeoJsonをダウンロードする。

市町村のGeoJsonの一覧を for ループで処理する

for item1 in list_prefectures:
    pref_kanji = item1['kanji']
    list_cities2 = item1['cities']
    print(pref_kanji)
# 北海道でなければ 
    if pref_kanji != PREF:
        continue
    for item2 in list_cities2:
        parent_name = item2['N03_003']
        city_name = item2['N03_004']
        filepath = item2['filepath']
        print(parent_name)
        url_geojson = urllib.parse.urljoin(url_raw_base, filepath)
        basename = os.path.basename(filepath)
        save_path = os.path.join(DIR, basename)
# 札幌市なら
        if parent_name == PARENT:
            print(city_name)
            data = requests.get(url_geojson).content
            with open(save_path ,mode='wb') as f2:
                f2.write(data)

(2) 行政区のGeoJsonを一つにする

geojson-merge geojson_down/*.json > sapporo_wards.geojson

(3) GeoPandas を使って ポリゴンを統合する



# GeoPandas を使って GeoJson を読み込む
FILE_SRC = 'sapporo_wards.geojson'
gdf = gpd.read_file(DATA_FILE_NAME)

# わかりやすさのために、カラムをリネームする
renamed_gdf = gdf.rename(
    columns={
        "N03_001": "prefecture",
        "N03_002": "bureau",
        "N03_003": "parent_city",
        "N03_004": "child_city",
        "N03_007": "city_id"
    }
)

# 統合対象である 札幌市のレコードを抽出する
target_gdf = renamed_gdf[renamed_gdf["parent_city"]== PARENT]

# ポリゴンを統合する
grouped_gdf = target_gdf .dissolve(by=["prefecture", "parent_city"], as_index=False)

# 不要となったカラムを削除しカラム名を変更する
parent_city_gdf = grouped_gdf[["parent_city", "prefecture", "geometry"]].rename(
    columns={"parent_city": "city"}
)

# GeoJson に書き出す。
parent_city_gdf.to_file(FILE_DST, driver='GeoJSON')

(4) ポリゴンを描画する

統合前

統合後

Pythonプログラムは Github に公開した

https://github.com/ohwada/World_Countries/tree/main/geoPandas/polygon_disolve/sapporo