Gráfico de informaçoes geográficas com Folium
Folium é uma biblioteca para Python que nos permite criar mapas, nos permitindo criar gráficos incríveis que mostrem a disperção geográfica de algo.
01.Instalando o Folium
Para instalar o Folium usamos o comando !pip install:
1!pip install folium
Este é o resultado:
02.Importando o Folium
Para importar o Folium usamos o comando import:
1import folium
03.Criando um mapa com Folium
Para gerar um mapa usamos o método .Map() do Folium para criarmos um objeto (que é o próprio mapa).
1#Usando o método .Map() para criar um mapa e salvando na variável mapa
2mapa = folium.Map()
1#Para mostrar o mapa basta chamá-lo:
2mapa
Este é o resultado:
04.Customizando um mapa
04.a.Iniciando um mapa com a localização exata
Para saber uma latitude e longitude específica:
Abra o site do Google Mapas
Digite o endereço do lugar desejado.
Encontre a latitude e longitude na URL do site do Google Mapas. Elas estão logo após do sinal “@”.
Exemplo da URL localizando o Parque Ibirapuera na cidade de São Paulo/SP:
Início da URL: https://www.google.com.br/maps/place/Parque+Ibirapuera/@-23.5918264,-46.6576057,15z
latitude: -23.5918264
longitude: -46.6576057
PARÂMETRO E MÉTODO NECESSÁRIO:
Para inicializar o objeto mapa com alguma localização específica, usamos o parâmetro location dentro do método .Map():
1#Usando o parâmetro location com o método .Map() para criar um mapa e salvando na variável mapa
2mapa = folium.Map(location=[-23.5918264,-46.6576057])
1#Para mostrar o mapa basta chamá-lo:
2mapa
Este é o resultado:
04.b.Iniciando um mapa com a localização e o zoom específico.
Para sabermos qual o zoom ideal para o mapa:
Abra o site do Google Mapas
Digite o endereço do lugar desejado.
Na URL, encontre o valor do zoom indicado por “z” (fica logo após a latitude e longitude.
Exemplo da URL localizando o Parque Ibirapuera na cidade de São Paulo/SP.
Início da URL: https://www.google.com.br/maps/place/Parque+Ibirapuera/@-23.5918264,-46.6576057,15z
latitude: -23.5918264
longitude: -46.6576057
zoom: 15
PARÂMETRO E MÉTODO NECESSÁRIO:
Para isso usamos o parâmetro zoom_start no método .Map().
1#Usando o parâmetro location com o método .Map() para criar um mapa e salvando na variável mapa com o zoom 15
2mapa = folium.Map(location=[-23.5918264,-46.6576057], zoom_start=15)
1#Para mostrar o mapa basta chamá-lo:
2mapa
Este é o resultado:
05.Escolhendo o estilo de mapa
Alguns estilos de mapas:
OpenStreetMap (default)
> Igual ao Google Mapas.
Stamen Terrain
> Relevo.
Stamen Toner
> Preto e branco.
Stamen Watercolor
> Aquarela
Parâmetro e método necessário:
Para escolher o estilo de gráfico do nosso mapa usamos o parâmetro tiles dentro do nosso método Map().
1#Usando o parâmetro location com o método .Map() para criar um mapa e salvando na variável mapa com o zoom 15 e com estilo 'Stamen Terrain'
2mapa = folium.Map(location=[-23.5918264,-46.6576057], zoom_start=15, tiles='Stamen Terrain')
1#Para mostrar o mapa basta chamá-lo:
2mapa
Este é o resultado:
06.Adicionando marcadores no mapa
Marquers são marcadores, pontos que queremos destacar no mapa de alguma maneira.
Para isso, usamos o método .Marker() e os seus seguintes parâmetros:
location—> localização do marcador em latitude e longitude.popup—> texto que aparece após o clique do mouse no marker.tooltip—> texto que aparece quando passamos o mouse sobre o marker.icon—> customização do marcador (trocaremos a cor do marcador)
Para adicionar todos estes marcadores no mapa, usamos o método .add_to() após o método Marker().
1#Criando o mapa
2mapa = folium.Map(location=[-23.5918264,-46.6576057], zoom_start=15)
1#Adicionando marcadores
2folium.Marker(location=[-23.5919878,-46.6591159],
3 popup='Parque do Ibirapuera',
4 tooltip="Clique aqui",
5 icon=folium.Icon(color="green")
6 ).add_to(mapa)
1#Para mostrar o mapa basta chamá-lo:
2mapa
Este é o resultado:
07.Adicionando áreas circulares
Para adicionar as áreas circulares usamos o método CircleMarker e os seus seguintes parâmetros:
location—> localização do marcador em latitude e longitude.radius—> raio do círculo.color—> cor da área dentro do círculo.fill—> preenchimento ou não da área circular.fill_color—> cor do preenchimento da área circular.
1#Criando o mapa
2mapa = folium.Map(location=[-23.5918264,-46.6576057], zoom_start=15)
1#Criando a area circular
2folium.CircleMarker(location=[-23.5918264,-46.6576057],
3 radius=150,
4 color='red'
5 fill=True,
6 fill_color='red').add_to(mapa)
1#Para mostrar o mapa basta chamá-lo:
2mapa
Este é o resultado:
08.Usando o Folium com DataFrame
Como vamos precisar criar um Data Frame precisaremos da biblioteca Pandas. Por isso iremos importá-la para o Jupyter Notebbok.
1import pandas as pd
Também importaremos para o Jupyter Notebook um pacote do Folium chamado plugins (funcionalidade especial) que nos permitirá fazer alguns efeitos como mapa de calor.
Para isso, usamos o comando:
1from folium import plugins
08.a.Usando um dataset para criar um DataFrame
O dataset utilizado nesta aula é sobre o acompanhamentos de queimadas registrados por satélite da NASA nos últimos 7 dias.
1#Criando o DataFrame
2df = pd.read_csv("/content/MODIS_C6_South_America_7d.csv")
1#Visualizando as 5 primeiras entradas do DataFrame
2df.head()
Este é o resultado:
1#Visualizando o formato do DataFrame
2df.shape
Este é o resultado:
>>> (5909, 13)
08.b.Extraindo os valores do DataFrame
Vamos extrair os valores do Data Frame e salvá-los em variáveis para que possamos usá-las para construir o mapa.
1#Extraindo valores e salvando em variáveis
2latitude = df.latitude.values
3longitude = df.longitude.values
1#Criando um mapa
2mapa_queimadas_brasil = folium.Map(location=[-14.0565789,-57.6047293],zoom_start=4.5)
1#Adicionando marcadores no mapa
2for lat, lon in zip(latitude,longitude):
3 folium.Marker(location=[lat,lon]).add_to(mapa_queimadas_brasil)
09.Criando um mapa de calor (heatmap).
Para criarmos um mapa de calor usamos um plugin (funcionalidade especial) chamado .HeatMap dentro do método .add_child() desta forma:
1#Extrair coordenadas geográficas do DataFrame
2latitude = df.latitude.values
3longitude = df.longitude.values
1#Criar uma lista com latitude e longitude usando o for
2coordenadas=[]
3
4for lat,lon in zip(latitude,longitude):
5 coordenadas.append([lat,lon])
1#Criar o mapa
2mapa_queimadas_LATAM = folium.Map(location[-14.0565789,-57.6047293],
3 zoom_start=4.5,
4 tiles='Stamen Terrain')
1#Adicionando coordenadas para criar um mapa de calor e mostrando o mapa
2mapa_queimadas_LATAM.add_child(plugins.HeatMap(coordenadas))
Este é o resultado: