Quer usar dados em tempo real para um nível no seu mapa?
Com o CartoVista, você pode integrar facilmente dados em tempo real a um nível usando a CartoVista REST API e um simples script Python e batch. os níveis serão atualizadas automaticamente dependendo da frequência com que você optar por executar seu script Python.
Os dados
Para este tutorial, usaremos a API de dados em tempo real de terremotos do USGS sobre a Turquia para coletar atualizações diárias sobre terremotos que ocorrem no país nos últimos 30 dias a partir da atualização. Usaremos as bibliotecas Pandas, GeoPandas, JSON e Requests do Python para fazer o seguinte:
- Coletar os dados do USGS
- Armazená-los em um geodataframe
- Criar um arquivo zip shapefile com a data de extração
- Enviar o nível de dados para o CartoVista
- Escrever um script Python para atualizar o nível no CartoVista
- Escrever um script batch para executar o script Python diariamente
Bibliotecas e pacotes
Para começar, vamos definir nosso diretório de trabalho e importar as bibliotecas relevantes conforme mostrado abaixo.

Adquirindo os dados
Agora, criaremos um GET REQUEST para coletar dados de terremotos na Turquia no último mês a partir do dia em que fazemos a solicitação. Como os dados estão em GeoJSON e queremos as features, coletaremos dados JSON e inspecionaremos as features para ver a totalidade dos dados (terremotos nos últimos 30 dias).

Limpeza de dados
Os dados que coletamos estão em formato JSON, mas queremos um dataframe como shapefile para mapeá-lo no nosso mapa web CartoVista. Converteremos os dados JSON em um geodataframe com um loop. Dentro do loop, faremos o seguinte:
- Definir o sistema de referência de coordenadas como 4326
- Separar as coordenadas de latitude e longitude
- Filtrar os dados para adquirir magnitude, localização, hora, status e geometria (latitude e longitude)
- Converter a hora com .strftime() para obter a data (hora) do terremoto no formato “mm-dd-yyyy”
- Filtrar com a feature ‘place’ para adquirir terremotos ocorrendo apenas na Turquia

Exportando os dados localmente
Temos dados sobre terremotos na Turquia no último mês! No entanto, nossos dados não estão exportados e armazenados em um formato aceito pelo CartoVista (Shapefile zipado ou CSV). Para manter as coisas simples e fáceis de distinguir ao armazenar em nosso diretório de trabalho, nomearemos nosso arquivo com a mesma data em que o script é executado. A extensão deste arquivo será shapefile, pois não exigirá geocodificação no CartoVista. Por fim, exportaremos este conjunto de dados com novos terremotos adicionados diariamente e os armazenaremos como arquivo zip.

Enviando dados para o seu workspace CartoVista
Os dados estão prontos em nossas máquinas. Podemos usar a CartoVista API para tornar nosso nível de dados ao vivo. Mas primeiro, precisamos enviar o nível para nosso workspace CartoVista como nível de dados.

Gerando sua chave de API CartoVista
Além disso, precisamos da nossa chave de API para poder enviar dados ao nosso workspace. Ela pode ser acessada selecionando a aba “Users” no nosso workspace, selecionando o nome do nosso usuário e selecionando a “API key.” Aqui podemos criar nossa chave de API e copiá-la para a área de transferência. Certifique-se de que a chave esteja “active.”
Use a CartoVista REST API para atualizar o nível
Voltemos ao nosso script Python. Agora armazenaremos a URL do servidor e a chave de API em variáveis. O arquivo que acabamos de enviar ao nosso workspace contendo os dados de terremotos também será armazenado como variável e aberto para leitura com base em onde está armazenado em nosso computador local.
É hora de fazer um POST REQUEST. Usaremos dois endpoints da CartoVista API:
- get**FromFileDescription: este endpoint nos permitirá enviar o arquivo e obter como resposta a estrutura da descrição do arquivo no CartoVista
- updateFromFileDescription: enviaremos esta descrição de arquivo neste endpoint para finalizar a atualização.
A interface Swagger do CartoVista mostra a lista de todos os endpoints e, para cada endpoint, a lista de todos os parâmetros.
Então, em resumo, veja como fica para o primeiro endpoint:

Para finalizar nossa atualização, concluiremos nosso script Python fazendo o segundo POST REQUEST. Para verificar se o REQUEST é válido, podemos imprimi-lo para ver se há erros.

Automatizando o script
O script está pronto e replicável para qualquer dado em tempo real, mas precisamos poder automatizar o processo de execução do script com frequência sem ter que abrir o script Python e executá-lo manualmente. Para isso, escrevemos um simples script batch agendado para executar o script Python todos os dias às 9:00 com o Task Scheduler no Windows. Dependendo das suas necessidades de atualização, você pode configurar o agendador de tarefas para executar seu script com a frequência que precisar (diariamente, semanalmente, mensalmente etc.).
Mapa final - Mapa em tempo real de terremotos na Turquia
O mapa a seguir visualiza terremotos conforme acontecem diariamente em toda a Turquia a partir de fevereiro de 2023 usando a USGS Earthquake Data API. Clusters são criados para regiões onde terremotos ocorrem em grande volume. Verifique diariamente após 9:00 EST para atualizações!
Descubra nosso Story Map dos terremotos na Turquia e Síria
Quer criar mapas como este você mesmo?