1
resposta

ERRO NA FUNÇÃO

O código passado na aula

mapa_rio = folium.Map(location = [imoveis['Latitude'].mean(), imoveis['Longitude'].mean()],
                      zoom_start = 10,
                      tiles = 'cartodbdark_matter',
                      name = 'Dark')

estilo = {'fillOpacity':0 ,'color' : '#ffffff', 'weight': 0.5}

HeatMap(data = imoveis[['Latitude', 'Longitude']], name = 'Mapa de Calor', radius = 20).add_to(mapa_rio)
folium.GeoJson(bairros_rio, name = 'Rio de Janeiro', style_function= lambda x: estilo).add_to(mapa_rio)

estilo_borda_preta = {'fillOpacity':0 ,'color' : '#000000', 'weight': 0.5}

HeatMap(data = imoveis[['Latitude', 'Longitude']], name = 'Mapa de Calor (vemelho)', radius = 20, gradient = {0:'grey', 1:'red'}, show = False).add_to(mapa_rio)
folium.GeoJson(bairros_rio, name = 'Rio de Janeiro (borda preta)', style_function= lambda x: estilo_borda_preta, show = False).add_to(mapa_rio)

folium.TileLayer('cartodbpositron', name = 'Positron').add_to(mapa_rio)

folium.LayerControl().add_to(mapa_rio)

mapa_rio

Apresenta esse erro:

--------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/usr/local/lib/python3.10/dist-packages/IPython/core/formatters.py in __call__(self, obj)
    343             method = get_real_method(obj, self.print_method)
    344             if method is not None:
--> 345                 return method()
    346             return None
    347         else:

13 frames
<template> in macro(l_1_this, l_1_kwargs)

/usr/local/lib/python3.10/dist-packages/folium/utilities.py in camelize(key)
    336     'variableName'
    337     """
--> 338     return "".join(x.capitalize() if i > 0 else x for i, x in enumerate(key.split("_")))
    339 
    340 

AttributeError: 'int' object has no attribute 'split'
<folium.folium.Map at 0x7d56877d61a0>
    

Todos os outros códigos anteriores deram certo, porém, esse apresenta esse erro. Já tentei executar todos os códigos, atualizei a página, sair e entrar no colab, mas, continua aparecendo esse erro.

1 resposta

Oii, Gabriel! Tudo bem?

Agradeço por aguardar o nosso retorno.

O erro ocorre porque você está usando um dicionário no argumento gradient de um dos objetos HeatMap, mas o Folium não aceita chaves do tipo inteiro nesse dicionário. Para resolver, as chaves do gradient devem ser do tipo float, com valores entre 0 e 1. Segue o código ajustado:

mapa_rio = folium.Map(location=[imoveis['Latitude'].mean(), imoveis['Longitude'].mean()],
                      zoom_start=10,
                      tiles='cartodbdark_matter',
                      name='Dark')

estilo = {'fillOpacity': 0, 'color': '#ffffff', 'weight': 0.5}

HeatMap(data=imoveis[['Latitude', 'Longitude']], name='Mapa de Calor', radius=20).add_to(mapa_rio)
folium.GeoJson(bairros_rio, name='Rio de Janeiro', style_function=lambda x: estilo).add_to(mapa_rio)

estilo_borda_preta = {'fillOpacity': 0, 'color': '#000000', 'weight': 0.5}

# Convertendo as chaves do gradient para strings
HeatMap(data=imoveis[['Latitude', 'Longitude']],
        name='Mapa de Calor (vermelho)',
        radius=20,
        gradient={"0.0": 'grey', "1.0": 'red'},
        show=False).add_to(mapa_rio)

folium.GeoJson(bairros_rio, name='Rio de Janeiro (borda preta)', style_function=lambda x: estilo_borda_preta, show=False).add_to(mapa_rio)

folium.TileLayer('cartodbpositron', name='Positron').add_to(mapa_rio)

folium.LayerControl().add_to(mapa_rio)

mapa_rio

Clique aqui para ver o teste feito no Google Colab.

Espero que dê certo, qualquer dúvida conte conosco.

Até mais!