Как мне добавить два слоя хлороплетов в фолиум и заставить их действовать как группа объектов? - PullRequest
0 голосов
/ 16 марта 2019

Я создал два слоя хлороплетов, которые я добавил на карту в фолио.Однако мне не нравится функциональность слоев.Во-первых, обе легенды отображаются, даже если слой не выбран.Во-вторых, вы должны вручную снять флажок, чтобы просмотреть второй слой хороплета самостоятельно.

Мне бы хотелось, чтобы легенда отображалась только при выборе слоя хлороплетов, а также позволяла выбирать один слой хороплетов за раз и не допускать перекрытия.

Я просмотрел документацию и нашел то, что, по моему мнению, сработало бы, добавив слой хлороплета в folium.FeatureGroup(), который я затем добавил бы на карту, но, к сожалению, по некоторым причинам слои хороплета вернут ошибку, когдадобавлен в группу объектов.

Далее я наткнулся на параметр наложения для слоев хороплета.Когда overlay=False добавляется в параметр choropleth, я получаю переключатель вместо флажка, который хорош, но легенды из других слоев все еще отображаются, и я теряю плитки с карты.

Ниже мойкод.Любая помощь по этому вопросу будет принята с благодарностью.Спасибо!

import folium
import pandas as pd
import json

df_theft = pd.read_csv('PA_theft.csv')
df_assualt = pd.read_csv('PA_assualt.csv')

theft_data = json.load(open('theft_geojson.json'))
assualt_data = json.load(open('assualt_geojson.json'))

m = folium.Map(location=[41.20, -77.50], zoom_start=8.3)

theft = folium.Choropleth(
    geo_data=theft_data,
    data=df_theft,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='OrRd',
    fill_opacity=0.9,
    legend_name='Theft incident rate per 100,000 people',
    highlight=True,
    name='Theft Incidents',
    show=True
).add_to(m)

folium.GeoJson(
    theft_data,
    tooltip=folium.features.GeoJsonTooltip(fields=['county_name', "arrests", "incident_count",
                                                   "incident_total", "population", "rate" ],
                                                   localize=True)
).add_to(theft.geojson)

assualt = folium.Choropleth(
    geo_data=assualt_data,
    data=df_assualt,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='GnBu',
    fill_opacity=0.9,
    legend_name='Assualt incident rate per 100,000 people',
    highlight=True,
    name='Assualt Incidents',
    show=False
).add_to(m)

folium.GeoJson(
    assualt_data,
    tooltip=folium.features.GeoJsonTooltip(fields=['county_name', "arrests", "incident_count",
                                                   "incident_total", "population", "rate" ],
                                                   localize=True)
).add_to(assualt.geojson)

folium.LayerControl(collapsed=False).add_to(m) 
m.save('PA_County_Crime_Map.html')

print('Map created.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...