Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro: AttributeError: 'int' object has no attribute 'split'

No minuto 10:30 do video ao adicionar o gradient no código está ocorrendo o erro:

AttributeError: 'int' object has no attribute 'split'

Código:

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
1 resposta
solução!

Oi, Raphael! Como vai?

O erro ocorre porque o uso de um dicionário no argumento gradient em um dos objetos HeatMap, pode não ser aceito no Folium como 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

Deixo abaixo o link do notebook usado para teste:

Espero ter ajudado, conte sempre conosco.

Bons estudos, Raphael!