Criando o mapa do Festival Recife Coffee com Folium
Neste ano, novembro será o mês do Recife Coffee!! Um festival criado em 2016 para movimentar as cafeterias da cidade. Atualmente estão participando 25 cafeterias da região metropolitana e Petrolina, e o valor do menu será R$32,90.
Todo ano eu repito a mesma ladainha: “Era pra ter um mapa bonito pra eu encontrar fácil a cafeteria mais próxima”. Apois, o momento chegou!! Eu poderia só ter criado uma lista pública no Google Maps? Sim, mas que graça teria? Não teriam marcadores rosa, nem o menu de cada lugar em primeiro plano. Então, lembrei de uma biblioteca python que conheci lá em 2018, do tutorial Creating Interactive Maps with Python que a maravilhosa Jéssica Temporal fez no começo do ano e criei esse mapinha com todas as cafeterias do festival:
Vou mostrar para vocês como foi montá-lo. O código completo e os dados estão disponíveis nesse repositório. E o mapa completo pode ser acessado aqui.
Coleta de dados
A primeira coisa que eu precisava era dos dados de geolocalização das cafeterias, menu, horário e contato. Todas essas informações estão disponíveis no instagram do festival, no entanto faltava converter os endereços em coordenadas de latitude e longitude. Essa busca foi feita manualmente no Google Maps e os dados reunidos em uma tabela em formato csv.
Criação do mapa
Utilizei as bibliotecas Pandas e Folium para tratar os dados e criar o mapa.
- Criei o mapa e determinei a Praça do Derby como ponto central:
1 2 3
mapa = folium.Map(location=[-8.056608873022698, -34.89952347323082], #Praça do Derby title = 'Recife Coffee 2021', zoom_start=12)
O Folium usa a API do OpenStreetMap e não consegui encontrar um jeito simples de fazer com que o ponto central do mapa seja a minha localização atual, então utilizei uma praça central do Recife.
- Iterei nas linhas do dataframe para criar as cafeterias:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
for _, cafeteria in cafeterias.iterrows(): folium.Marker( location=[cafeteria['latitude'], cafeteria['longitude']], tooltip=''' <b>{}</b> <br> Clique para saber mais '''.format(cafeteria['titulo']), popup=''' <img src='{imagem}' height='400'> <br> <b>Horário:</b> <br> {horario} <br> <a href="https://www.instagram.com/{instagram}">https://www.instagram.com/{instagram}</a> '''.format(imagem=cafeteria['menu'], horario=cafeteria['horario'], instagram=cafeteria['instagram']), icon=folium.Icon(color='purple', prefix='fa', icon='coffee') ).add_to(mapa)
A função
iterrows()
do Pandas, sempre vai retornar dois elementos, o índice da linha e o conteúdo da linha em si, por isso informei o “_” no lugar do índice, pois é um elemento que não usaremos.Já na função
Marker
do Folium, passei os seguintes argumentos:- location: coordenadas geográficas (latitude e longitude) de cada marcador no mapa;
- tooltip: mensagem que aparecerá ao passar o mouse em cima do marcador. Esse campo suporta HTML e string format;
- popup: mensagem que aparecerá ao clicar em cima do marcador. Esse campo, também, suporta HTML e string format;
- icon: permite customizar o ícone. Aqui pode ser usado Font Awesome para especificar o desenho do centro do marcador.
- Por fim, salvei o mapa em HTML porque queria compartilhá-lo com todo mundo.
1
mapa.save('mapa_recife_coffee_2021.html')
E assim, esse ano paro de reclamar que não tem um mapa do Recife Coffee.
** Este projeto possui licença aberta, então fica a vontade para usar, copiar, fazer um mapa de um festival da tua cidade e, se animar, mandar melhorias (pull request) para o repositório, pois esse mapa do festival Recife Coffee ainda pode ser muito melhorado.
-----