¿Quiere utilizar datos en tiempo real para una capa en su mapa?
Con CartoVista, puede integrar fácilmente datos en tiempo real en una capa utilizando la CartoVista REST API y un simple script Python y por lotes. Las capas se actualizarán automáticamente según la frecuencia con la que elija ejecutar su script Python.
Los datos
Para este tutorial, utilizaremos la API de datos en tiempo real de terremotos del USGS sobre Turquía para recopilar actualizaciones diarias sobre terremotos que ocurren en el país durante los últimos 30 días a partir de la actualización. Utilizaremos las bibliotecas Pandas, GeoPandas, JSON y Requests de Python para lo siguiente:
- Recopilar los datos del USGS
- Almacenarlos en un geodataframe
- Crear un archivo zip con forma con la fecha de extracción
- Publicar la capa de datos en CartoVista
- Escribir un script Python para actualizar la capa en CartoVista
- Escribir un script por lotes para ejecutar el script Python diariamente
Bibliotecas y paquetes
Para empezar, establezcamos nuestro directorio de trabajo e importemos las bibliotecas relevantes como se muestra a continuación.

Adquisición de los datos
Ahora crearemos una SOLICITUD GET para recopilar datos de terremotos en Turquía del último mes a partir del día en que hagamos la solicitud. Dado que los datos son GeoJSON y queremos las entidades, recopilaremos datos JSON e inspeccionaremos las entidades para ver la totalidad de los datos (terremotos en los últimos 30 días).

Limpieza de datos
Los datos que recopilamos están en formato JSON, pero queremos un dataframe como shapefile para poder mapearlo en nuestro mapa web CartoVista. Convertiremos los datos JSON en un geodataframe con un bucle. Dentro del bucle, haremos lo siguiente:
- Establecer el sistema de referencia de coordenadas en 4326
- Separar las coordenadas de latitud y longitud
- Filtrar los datos para obtener la magnitud, ubicación, hora, estado y geometría (latitud y longitud)
- Convertir la hora con .strftime() para obtener la fecha (hora) del terremoto en formato «mm-dd-yyyy»
- Filtrar con la característica ‘place’ para obtener solo terremotos que ocurran en Turquía

Exportación de los datos localmente
¡Tenemos datos sobre terremotos en Turquía del último mes! Sin embargo, nuestros datos no están exportados y almacenados en un formato aceptado por CartoVista (Shapefile zip o CSV). Para mantener las cosas simples y fáciles de distinguir al almacenar en nuestro directorio de trabajo, nombraremos nuestro archivo igual que la fecha en que se ejecuta el script. La extensión de este archivo será un shapefile, ya que no requerirá geocodificación en CartoVista. Finalmente, exportaremos este conjunto de datos con nuevos terremotos añadidos diariamente y los almacenaremos como archivo zip.

Carga de datos en su espacio de trabajo CartoVista
Los datos están listos en nuestras máquinas. Podemos pasar a utilizar la CartoVista API para hacer que nuestra capa de datos esté en directo. Pero primero, necesitamos cargar la capa en nuestro espacio de trabajo CartoVista como capa de datos.

Generación de su clave API de CartoVista
Además, necesitamos nuestra clave API para poder enviar datos a nuestro espacio de trabajo. Se puede acceder seleccionando la pestaña «Users» en nuestro espacio de trabajo, seleccionando el nombre de nuestro usuario y seleccionando la «API key». Aquí podemos crear nuestra clave API y copiarla al portapapeles. Asegúrese de que la clave esté «activa».
Utilice la CartoVista REST API para actualizar la capa
Volvamos a nuestro script Python. Ahora almacenaremos la URL del servidor y la clave API en variables. El archivo que acabamos de cargar en nuestro espacio de trabajo con los datos de terremotos también se almacenará como variable y se abrirá para lectura según dónde esté almacenado en nuestro ordenador.
Es hora de hacer una SOLICITUD POST. Utilizaremos dos endpoints de la CartoVista API:
- get**FromFileDescription: este endpoint nos permitirá enviar el archivo y obtener como respuesta la estructura de la descripción del archivo en CartoVista
- updateFromFileDescription: enviaremos esta descripción de archivo en este endpoint para finalizar la actualización.
La interfaz Swagger de CartoVista le muestra la lista de todos los endpoints y, para cada endpoint, la lista de todos los parámetros.
En resumen, así es como se ve para el primer endpoint:

Para finalizar nuestra actualización, concluiremos nuestro script Python haciendo la segunda SOLICITUD POST. Para comprobar si la SOLICITUD es válida, podemos imprimirla para ver si hay errores.

Automatización del script
El script está listo y es replicable para cualquier dato en tiempo real, pero necesitamos poder automatizar el proceso de ejecutar el script con frecuencia sin tener que abrir el script Python y ejecutarlo manualmente. Para esto, escribimos un simple script por lotes programado para ejecutar el script Python todos los días a las 9:00 a.m. con el Programador de tareas de Windows. Según sus necesidades de actualización, puede configurar el programador de tareas para ejecutar su script con la frecuencia que necesite (diaria, semanal, mensual, etc.).
Mapa final - Mapa en tiempo real de terremotos en Turquía
El siguiente mapa visualiza terremotos a medida que ocurren diariamente en toda Turquía a partir de febrero de 2023 utilizando la USGS Earthquake Data API. Se crean clusters para regiones donde los terremotos ocurren en gran volumen. ¡Consulte diariamente después de las 9:00 a.m. EST para actualizaciones!