Фолиум, создание легенды с петлей - PullRequest
0 голосов
/ 09 апреля 2020

Можно ли динамически создавать легенды в течение 1 oop? Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь создать несколько слоев на карте. Когда я создаю их отдельно, панель легенды есть, но когда я помещаю (тот же) код в форму l oop, слои создаются без связанной легенды.

Здесь код, который я использую:

# main map
m = folium.Map(location=[43.653908, -79.384293], zoom_start=11)

# feature groups 
under15 = folium.FeatureGroup(name='Under 15', overlay=False).add_to(m)
under25 = folium.FeatureGroup(name='Under 25', overlay=False).add_to(m)
under40 = folium.FeatureGroup(name='Under 40', overlay=False).add_to(m)
under65 = folium.FeatureGroup(name='Under 65', overlay=False).add_to(m)
under85 = folium.FeatureGroup(name='Under 85', overlay=False).add_to(m)
under100 = folium.FeatureGroup(name='Under 100', overlay=False).add_to(m)
above100 = folium.FeatureGroup(name='Above 100', overlay=False).add_to(m)

# features list
feat = [under15, under25, under40, under65, under85, under100, above100]

# column headers
groupNames = ['Under15', 'Under25', 'Under40', 'Under65','Under85', 'Under100', 'Above100']

# zipping together the lists
featNames = zip(groupNames, feat)

# Creating the layers on the map
for i in featNames:
    # choropleth
    mapped_OK = folium.Choropleth(
        geo_data=ct,
        name='Toronto Census Tracts',
        fill_color='YlOrRd',
        fill_opacity=0.7,
        line_opacity=0.3,
        threshold_scale=[0,10,20,40,60,80],
        legend_name='Demographics (%)',
        data=popcensus,
        key_on='feature.properties.CTUID',
        columns=['GEOUID', '{}'.format(i[0])],
        highlight=True, 
        nan_fill_color='Bu'
    ).geojson.add_to(i[1])

Пример нескольких записей в не-json таблице:

enter image description here

И здесь фиктивный пример одной из функций geo json; Я вручную изменил CTUID, чтобы он соответствовал первой записи таблицы, и я также удалил ненужные свойства из свойств объектов, таких как CTNAME или любой другой бесполезный код:

{"type": "FeatureCollection",

    "name": "CityTract",

    "crs": { "type": "name", 
    "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },

    "features": [{ "type": "Feature", 
        "properties": { "CTUID": "10000.00" }, 
        "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -79.393729204347679, 43.696024334053391 ], [ -79.396099396691909, 43.695662733478756 ], [ -79.396197286820836, 43.696126701529948 ], [ -79.396461910384431, 43.697372986819602 ], [ -79.395674477214797, 43.697542186782982 ], [ -79.395441510156488, 43.6975904712912 ], [ -79.390671570714034, 43.698579100690687 ], [ -79.39046659599812, 43.698603986473501 ], [ -79.390240289025755, 43.698666815232436 ], [ -79.390222301392541, 43.698671801023536 ], [ -79.39000542084662, 43.698709615386171 ], [ -79.389935595301324, 43.698721799167544 ], [ -79.389674097944564, 43.698754102085886 ], [ -79.38942548843842, 43.69876859783772 ], [ -79.386730502993316, 43.699306903333913 ], [ -79.386520901134986, 43.698331490243547 ], [ -79.386475276446717, 43.69817778408931 ], [ -79.386312972117352, 43.69775230202309 ], [ -79.386268221450578, 43.69763431293925 ], [ -79.388606310727795, 43.697131404654804 ], [ -79.390834892976642, 43.69664578777239 ], [ -79.391678508644176, 43.696461942814338 ], [ -79.393530227212423, 43.696066808808226 ], [ -79.393729204347679, 43.696024334053391 ] ] ] ] } }
}

У меня есть посмотрел много примеров карт, созданных с помощью folium, но я не могу найти подобную проблему.

И после того, как я создаю отдельные карты, легенда больше не генерируется. Я перезапускаю сеанс.

Я подозреваю, что добавление нескольких гео json слоев на одну карту приведет к деактивации легенды, особенно если данные поступают из разных столбцов.

Я ценю любые Помогите. Заранее спасибо.

...