Ir al contenido

API REST CartoVista y Python: datos en tiempo real

CartoVista
API e integración
python rest api 1
Capas en directo - Actualizaciones de datos en tiempo real con la CartoVista REST API y Python. Vea cómo CartoVista ayuda a convertir datos en mapas interactivos e historias explorables.

¿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.

Imports and Working Directory for Data Collection.
Imports and Working Directory for Data Collection.

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).

Acquiring Earthquake Data from USGS
Acquiring Earthquake Data from USGS

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:

  1. Establecer el sistema de referencia de coordenadas en 4326
  2. Separar las coordenadas de latitud y longitud
  3. Filtrar los datos para obtener la magnitud, ubicación, hora, estado y geometría (latitud y longitud)
  4. Convertir la hora con .strftime() para obtener la fecha (hora) del terremoto en formato «mm-dd-yyyy»
  5. Filtrar con la característica ‘place’ para obtener solo terremotos que ocurran en Turquía
Filtering and Storing Turkey's Earthquake Data into a Dataframe
Filtering and Storing Turkey's Earthquake Data into a Dataframe

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.

Creating and Storing Shapefile Locally
Creating and Storing Shapefile Locally

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.

Upload a layer to the CartoVista workspace
Upload a layer to the CartoVista workspace

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:

  1. get**FromFileDescription: este endpoint nos permitirá enviar el archivo y obtener como respuesta la estructura de la descripción del archivo en CartoVista
  2. 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:

python script API parameters
python script API parameters

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.

python script API parameters second endpoint
python script API parameters second endpoint

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!

Descubra nuestro Story Map de terremotos en Turquía-Siria

Empiece a crear su primer
Story Map gratis
hoy mismo

Vamos

Buscar en el blog