GeoPandas を使って 都道府県のポリゴンを分割して 面積が一番大きいものを選択する

GeoPandas を使って 北海道のポリゴンを分割して 面積が一番大きいものを選択する の続きです。

前回は 北海道のポリゴンを分割して 島部のポリゴンを除いた 北海道本土のポリゴンを作成した。

今回は 47都道府県について 都道府県のポリゴンを分割して 島部のポリゴンを除いた 内陸部のポリゴンを作成する。

都道府県の ポリゴンの GeoJson は下記を使用した。

都道府県別の県のポリゴンの GeoJson ファイル

(1) 都道府県のgeojsonをダウンロードする。

[都道府県別の県のGeoJsonの一覧を for ループで処理する。

for item in list_prefectures:
    name_ja = item['name_ja']
    filename = item['filename']
    print(name_ja)
    url_geojson = urllib.parse.urljoin(url_raw_base, filename)
    save_path = os.path.join(DIR, filename)
    data = requests.get(url_geojson).content
    with open(save_path ,mode='wb') as f2:
        f2.write(data)

(2) 島部のポリゴンを除いた内陸部のポリゴンを作成する。

都道府県のポリゴンを分割して 面積が一番大きいものを選択する。

[都道府県別の県のGeoJsonの一覧を for ループで処理する。

for item in files:
    filepath1 =  os.path.join(DIR_DOWN, item)
# geojson ファイルを読み込む
    gdf = gpd.read_file(filepath1) 
    pref_code = gdf['pref']
    pref_name = gdf['name']
# 面積が一番大きいポリゴンを選択する
    largest_poly = largest_polygon(gdf)
    df = gpd.GeoDataFrame()
    df['geometry'] = None
    df.loc[0, 'geometry'] = largest_poly
    df['pref'] = pref_code
    df['name'] = pref_name
# geojson ファイルを書き出す
    filepath2 =  os.path.join(DIR_LARGEST, item)
    df.to_file(filepath2, driver='GeoJSON')

(3) ポリゴンを地図に描画する

面積が一番大きいポリゴンの一覧をを for ループで処理する。

for item in files:
    filepath1 =  os.path.join(DIR_LARGEST, item)
    basename_without_ext = os.path.splitext(os.path.basename(filepath1))[0]
    print(basename_without_ext)
    filename = FORMAT_FILENAME_HTML.format(name=basename_without_ext)
    filepath2 =  os.path.join(DIR_HTML, filename)
# 都道府県名と位置座標を取得する
    is_match, name_pref, lat, lon = find_pref(basename_without_ext)

# Map
    map = folium.Map(location=[lat, lon], tiles="cartodbpositron", zoom_start=ZOOM)
# GeoJson
    gjson = folium.GeoJson(filepath1, style_function=style_function).add_to(map)
    folium.features.GeoJsonPopup( fields=['name'], labels=False ).add_to(gjson)
    title_html = FORMAT_TITLE.format(name_pref)
    map.get_root().html.add_child(folium.Element(title_html))
# html ファイルに保存する
    map.save(filepath2)

pythonプログラムはGitHubに公開した

https://github.com/ohwada/World_Countries/tree/main/geoPandas/polygon_largest/japan_prefectures