首页 > 解决方案 > 如何使用未识别的 feature.id 绘制带有 folium 和 geoJson 的 Choropleth 地图?

问题描述

我正在按照本指南从 Folium 绘制等值线图: https ://notebook.community/python-visualization/folium/examples/GeoJSON_and_choropleth

from branca.colormap import linear

colormap = linear.OrRd_03.scale(
    ecuador['Confirmed cases'].min(),
    ecuador['Confirmed cases'].max())

ecuador_dict=ecuador.set_index('Provinces')['Confirmed cases']

fec_map= folium.Map(zoom_start=6, tiles="OpenStreetMap", control_scale=True, location=[latitude_ec, longitude_ec])
folium.GeoJson(geojson_ec,
               name='Confirmed cases',
               style_function=lambda feature: {
                'fillColor'= colormap(ecuador_dict[features['properties.dpa_despro']]),
                'color': 'black',
                'weight': 2,
                'dashArray': '5, 5'}
                ).add_to(fec_map)
fec_map

地理JSON:

geojson_ec = {'type': 'FeatureCollection',
        'features': [{'type': 'Feature',
                      'properties': {'id_prov': 1,
                                     'dpa_provin': '01',
                                     'dpa_despro': 'AZUAY',
                                     'dpa_valor': 0,
                                     'dpa_anio': '2012',
                                     'rei_codigo': '05',
                                     'ren_codigo': '01',
                                     'pee_codigo': '593',
                                     'codigo': 1,
                                     'codigo_1': 1,
                                     'nombre': 'AZUAY',
                                     'pob_mas': 337044,
                                     'pob_fem': 375083,
                                     'pob_tot': 712127,
                                     'si_lee': 591470,
                                     'no_lee': 51920,
                                     'total': 643390,
                                     'analfabeti': 6.7,
                                     'promedio_e': 9.01,
                                     'pobres_nbi': 338073,
                                     'no_pobres': 361875,
                                     'pob_nopob_': 699948,
                                     'densidad': 85.7,
                                     'edad_media': 28.85,
                                     'cartodb_id': 1,
                                     'created_at': '2015-04-20T23:35:12Z',
                                     'updated_at': '2015-04-21T16:01:08Z',
                                     }}]}

但是,我收到此错误:

File "<ipython-input-131-1cdbb903e2f9>", line 7
    'fillColor'= colormap(ecuador_dict[features['properties.dpa_despro']]),
               ^
SyntaxError: invalid syntax

请帮助我理解指南并设置正确的颜色图。

变量:

ecuador_dict=
Provinces
AZUAY                             10788.0
BOLÍVAR                            2120.0
CARCHI                             3080.0
CAÑAR                              2165.0
CHIMBORAZO                         2560.0
COTOPAXI                           4612.0
EL ORO                             6497.0
ESMERALDAS                         4324.0
GALÁPAGOS                           228.0
GUAYAS                            22588.0
IMBABURA                           4816.0
LOJA                               6375.0
LOS RÍOS                           4041.0
MANABÍ                            11464.0
MORONA SANTIAGO                    3015.0
NAPO                               1447.0
ORELLANA                           1972.0
PASTAZA                            2276.0
PICHINCHA                         60494.0
SANTA ELENA                        1796.0
SANTO DOMINGO DE LOS TSÁCHILAS     5322.0
SUCUMBÍOS                          2778.0
TUNGURAHUA                         6168.0
ZAMORA CHINCHIPE                   1582.0
Name: Confirmed cases, dtype: float64
<class 'pandas.core.series.Series'>

10788.0

在此处输入图像描述

-r-beginners 提出的解决方案:

fec_map= folium.Map(zoom_start=6, tiles="OpenStreetMap", control_scale=True, location=[latitude_ec, longitude_ec])
folium.GeoJson(geojson_ec,
               name='Confirmed cases',
               style_function=lambda feature: {
                'fillColor'= ecuador_dict[feature['properties']['dpa_despro']],
                'color': 'black',
                'weight': 2,
                'dashArray': '5, 5'}
                ).add_to(fec_map)
fec_map

结果:

文件“”,第 5 行 'fillColor'= ecuador_dict[feature['properties']['dpa_despro']],^ SyntaxError: invalid syntax

标签: pandasgeojsoncolormapchoropleth

解决方案


fec_map.choropleth(
        geo_data=geojson_ec,
        name='choropleth',
        data=ecuador,
        columns=['Provinces','Confirmed cases'],
        key_on='feature.properties.dpa_despro',
        fill_color='OrRd', 
        fill_opacity=0.5, 
        line_opacity=0.2,
                )

fec_map

在此处输入图像描述


推荐阅读