北海道の ポリゴン には 千島列島 などの島部が含まれている。
島部のポリゴンを除いた 北海道本土のポリゴンを作成する。
下記を参考にした。
Python+Geopandasでシェープファイル(shpファイル)を処理した
北海道の ポリゴンの 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)
https://github.com/ohwada/World_Countries/tree/main/geoPandas/polygon_largest/hokkaido
分割前
分割後