Cómo crear un mapa 3D con mapbox y KNIME

Cómo crear un mapa 3D con mapbox y KNIME

Últimamente estoy explorando cómo crear un mapa 3D con mapbox y automatizar ciertas tareas con KNIME para visualizar datos geolocalizados. El objetivo es procesar miles de puntos GPS y dotarlos de información de elevación sin escribir una sola línea de código.

El Reto y los Datos de Partida

Como entusiasta del Camino de Santiago, quería visualizar la orografía completa de las rutas peninsulares. Para ello, utilicé:

  • GPX del CNIG: 1.015 archivos individuales con las etapas de todos los Caminos.
  • KNIME: Para la unificación de datos y enriquecimiento (ETL).

El Problema: Datos de Elevación Incompletos

Al unificar los más de 398.000 puntos GPS, descubrí que muchos carecían de datos de elevación. Para solucionarlo, utilicé la API de Open-Elevation.

Implementación en KNIME

Diseñé un flujo de trabajo que automatiza las consultas a la API:

  1. Filtrado: Identificación de puntos con elevación nula o errores.
  2. Chunking: Agrupación en bloques de 1.000 puntos para optimizar las peticiones POST.
  3. Petición API: Uso de nodos POST Request y JSON Row Combiner para obtener los datos en menos de 4 minutos.

Workflow de elevación

Visualización y Mapbox Studio

Una vez enriquecidos los datos, el siguiente paso fue el renderizado 3D en Mapbox Studio:

  1. Tileset: Importación del CSV con latitud, longitud y la nueva columna de elevación.
  2. Style: Creación de un mapa con la capa “Terrain 3D”.
  3. Data-driven Styling: Ajuste del color de los puntos en función de su altura sobre el nivel del mar.

Configuración Mapbox Studio

Integración en la Web

Para embeber el mapa e incluir interactividad (pop-ups al hacer click), utilicé el SDK de Mapbox GL JS. Aquí un resumen del código necesario:

mapboxgl.accessToken = 'TU_TOKEN';
const map = new mapboxgl.Map({
  container: 'map',
  style: 'mapbox://styles/tu-usuario/tu-estilo',
  center: [-8.324828, 42.566433],
  zoom: 7.1
});

map.on('click', 'capa-de-puntos', (e) => {
  new mapboxgl.Popup()
    .setLngLat(e.features[0].geometry.coordinates)
    .setText(e.features[0].properties.description)
    .addTo(map);
});

Conclusión

Este proyecto demuestra que la combinación de herramientas No-Code como KNIME y servicios potentes como Mapbox permite crear visualizaciones de datos profesionales sin necesidad de ser desarrollador de software.

Puedes descargar el flujo de trabajo completo desde el Hub de KNIME.