Folium と GeoJson を使って 伊豆諸島の島の形を描画する

伊豆諸島の島の一覧 の続きです。

前回は 「伊豆諸島の島の一覧」をJsonファイルにした。

この記事では 伊豆諸島の島の形を描画する。

やり方は Folium と GeoJson を使って 東京都島嶼部の島の形を描画する とほぼ同じ。

地図タイルは国土地理院の淡色地図を使用した。

国土地理院 淡色地図

島のポリゴンは、下記を使用した。

日本の市区町村のGeoJsonのカタログ

島ごとのGeoJsonファイルはない。

市区町村ごとのGeoJsonファイルになっている。

伊豆諸島は、 概ね 一島一町村になっている。

町村の形が島の形である。

式根島」は例外で、 独自の自治体がなく、「新島村」に属している。

新島村」のGeoJsonファイルに、 「新島」と「式根島」のポロゴンが含まれている。

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

伊豆諸島の自治体なら描画する

for item2 in list_prefectures :
    pref_code = item2['code']
    pref_kanji = item2['kanji']
    list_cities = item2['cities']
    print(pref_kanji)
# 東京都なら
    if pref_kanji != TOKYO:
        continue
    for item3  in list_cities: 
        name = item3['N03_004']
        filepath = item3['filepath']
        url_geojson = urllib.parse.urljoin(url_raw_base, filepath)
# 伊豆諸島なら
        if name in towns:
            print(name)
            gjson = folium.GeoJson( url_geojson,
            style_function=style_function_random).add_to(map)
            folium.features.GeoJsonPopup( fields=['N03_004'], labels=False ).add_to(gjson)

島の位置に 円形マーカー( CircleMarker) を表示する

for item in list_islands:
    name_island = item['name_island']
    lat = item['lat']
    lon = item['lon']
    print(name_island)
# Popup
    popup = folium.Popup(name_island, max_width= WIDTH)
# CircleMarker
    folium.CircleMarker(
    location = [lat, lon],
    radius= RADIUS,
    popup = popup,
    color= COLOR,
    fill= True,
    fill_color= FILL_COLOR,
).add_to(map)

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

https://github.com/ohwada/World_Countries/tree/main/japan_municipaliy/folium/tokyo/izu_islands_shape