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

北海道の ポリゴン には 千島列島 などの島部が含まれている。

島部のポリゴンを除いた 北海道本土のポリゴンを作成する。

下記を参考にした。

Python+Geopandasでシェープファイル(shpファイル)を処理した

北海道の ポリゴンの GeoJson は下記を使用した。

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

# GeoJson を読み込む
gdf = gpd.read_file(FILE_PREF_GEOJSON) 

# ポリゴンを分割する
df_exploded = gdf.explode(index_parts=True)

# 面積とジオメトリの配列を作る。
area_list = []

for i, row in df_exploded.iterrows():
    geo = row['geometry']
    row['area'] = geo.area
    a = (geo.area, geo)
    area_list.append( a )
#

# 面積の大きい順に並び替える
sorted_list = sorted(area_list, key=lambda x: x[0], reverse=True)

# 面積が一番大きいポリゴンをを選択する。
largest_poly = sorted_list[0][1]

# GeoDataFrame に変換する
df = gpd.GeoDataFrame()
df['geometry'] = None
df.loc[0, 'geometry'] = largest_poly

# GeoJson に書き出す
df.to_file(filepath, driver='GeoJSON')

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

# Map
map = folium.Map(location=[lat, lon], tiles="cartodbpositron", zoom_start=ZOOM)
# GeoJson
gjson = folium.GeoJson( FILE_GEOJSON,
    style_function=style_function).add_to(map)
folium.features.GeoJsonPopup( fields=['name'], labels=False ).add_to(gjson)
title_html = FORMAT_TITLE.format( TITLE )
map.get_root().html.add_child(folium.Element(title_html))
# html ファイル に書き出す
map.save(FILE_HTML)

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

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

分割前

分割後