El Val d'Aran es la razón por la que Maladeta Studio existe donde existe. La mayoría de lo que construimos para otros vive en otro sitio — un flujo de reservas para un resort, una capa de traducción para un museo, un motor de comunicaciones que enruta mensajes en silencio detrás de las escenas. aran-twin es el primer proyecto en el que construimos un modelo del propio lugar: un gemelo digital geoespacial del valle, que combina terreno 3D, datos municipales y ambientales, zonas de exposición a aludes, inteligencia de senderos, clima en vivo y — la parte que más me entusiasma — reconstrucciones 3D con splats gaussianos a partir de nuestras propias capturas por dron.
Escribo sobre esto ahora, con unas seis semanas de historial de git, en lugar de esperar a un lanzamiento pulido. En parte porque la arquitectura merece documentarse mientras está fresca, y en parte porque creo que hay más valor en mostrar cómo es de verdad un proyecto de datos joven y ambicioso que en fingir que llegó terminado. Buena parte de aran-twin hoy es infraestructura real y funcional apuntando a fuentes de datos que todavía no están del todo conectadas. Eso no es un estado de fracaso — es simplemente cómo se ve la semana seis.
1. Un valle hecho de muchos otros proyectos
El trabajo de aran-twin es responder bien a una sola pregunta: ¿qué está pasando, ahora mismo, en este lugar concreto? "Este lugar" está definido con precisión — una caja delimitadora alrededor del Val d'Aran, centrada cerca de Vielha, que cubre los nueve municipios del valle: Arres, Bausen, Bossòst, Canejan, Es Bòrdes, Les, Naut Aran, Vielha e Mijaran, y Vilamòs.
Lo que hace satisfactorio construirlo es que es un punto de convergencia de cosas que el estudio ya estaba haciendo. Guidaran, la app de turismo que construí antes de que existiera Maladeta Studio (escribí sobre su origen en el post "Fundando Maladeta Studio"), es ahora simplemente otra fuente de datos que alimenta el gemelo — los datos de senderos y puntos de interés fluyen a través de su propia API en lugar de vivir en su propio silo. La instancia propia de Open-Meteo que gestionamos para el clima es otra. Ninguna de las dos integraciones requirió inventar nada nuevo; requirieron tratar una app en producción como infraestructura de otra más grande.
El resto del pipeline es más convencional pero no menos real: una capa de ETL en Python extrae datos del ICGC (el instituto cartográfico de Cataluña), el INE (el instituto de estadística de España), el Catastro (el registro de la propiedad), OpenStreetMap y Lauegi (el servicio de boletín de aludes de la región), y los deposita todos en PostGIS. Desde ahí se sirven de dos formas — teselas de mapa vectoriales a través de Martin, y una API en Go para todo lo que necesite consultas estructuradas en lugar de teselas — ambas consumidas por un frontend en React y MapLibre. Las grabaciones del dron siguen un pipeline completamente distinto, que acaba convirtiéndose en splats gaussianos en un CDN:
ICGC ─────┐
INE ──────┤
Catastro ─┤ ┌─────────────┐ ┌───────────┐
OSM ──────┼─────▶│ Python ETL │─────▶│ PostGIS │
Lauegi ───┤ └─────────────┘ └─────┬─────┘
Guidaran ─┤ │
Weather ──┘ ┌──────────┴──────────┐
▼ ▼
Martin Go API
(vector tiles) (structured queries)
└──────────┬──────────┘
▼
React + MapLibre frontend
Drone footage ─▶ ephemeral GPU instance ─▶ COLMAP (SfM / camera pose)
│
▼
Gaussian-splat training
│
▼
.spz / .ksplat model file
│
▼
DigitalOcean Spaces (CDN) ─▶ frontend streams & renders
2. Datos desiguales, a propósito, no por accidente
Si mirases el código fuente de aran-twin hoy esperando un sistema limpio y funcionando de manera uniforme, te llevarías una decepción — y merece la pena decirlo sin adornos en lugar de maquillarlo. Cada fuente de datos externa de la que depende el gemelo está en una etapa distinta de estar realmente lista:
- Los límites municipales del ICGC — en vivo, funcionando, con atribución de fuente. La única pieza que puedes señalar ahora mismo.
- Los datos de población del INE — el adaptador está escrito, pero permanece inactivo hasta que tengamos una URL de exportación aprobada por el propio INE.
- Los datos de parcelas y edificios del Catastro — el mismo tipo de problema: la integración existe, pero solo se activa una vez que se tiene en mano un paquete de datos municipal validado.
- Senderos, carreteras y POIs de OpenStreetMap — la calidad de OSM varía muchísimo según quién haya cartografiado por última vez un sendero dado, así que esto solo se activa después de que pase un paso de validación de calidad de datos basado en Geofabrik.
- Los datos de aludes de Lauegi — la información de boletines y zonas tiene adaptadores reales y funcionando hoy. La API más granular de accidentes y observaciones está construida pero está detrás de un token de servicio que todavía no tenemos.
- Guidaran y la instancia de clima — ambas funcionan hoy, a través de adaptadores de API pública, con atribución, porque las dos son nuestras y ya estaban en producción antes de que existiera aran-twin.
Las reglas de contribución del proyecto son explícitas sobre esto, y podría ser la mejor decisión de ingeniería incorporada en aran-twin hasta ahora: no se permite inventar valores de relleno para hechos del mundo real — credenciales, códigos estadísticos oficiales, identificadores de instancias GPU, precios, esquemas de datos. Lo desconocido recibe una convención explícita de TODO en lugar de una falsificación de apariencia plausible. Donde sí existe un contrato real — la API de Guidaran, la API de la instancia de clima — está fijado y documentado, no simplemente asumido como que seguirá funcionando porque funcionó la última vez que se comprobó.
Sería fácil falsear esto. Los números de población en particular son el tipo de cosa que podrías alucinar de forma plausible y nadie fuera del INE lo notaría de inmediato. La disciplina consiste en negarse a hacerlo, incluso bajo la presión silenciosa de hacer que una demo parezca más terminada de lo que está.
3. Qué es en realidad un splat gaussiano, y por qué esperamos las grabaciones del dron
El Gaussian splatting es la parte de este proyecto que me hizo querer escribir sobre él antes de que estuviera listo. Es una técnica de reconstrucción 3D relativamente reciente — el sucesor práctico de la fotogrametría — que representa una escena no como una malla con textura sino como millones de pequeños "splats" 3D: manchas suaves, cada una con su propia posición, color, opacidad y orientación. Renderizados juntos, desde cualquier punto de vista, producen algo más cercano a una fotografía que a un modelo 3D, sin las costuras y errores de geometría que solían delatar a la fotogrametría.
Para aran-twin, el pipeline previsto es: las grabaciones de dron de una zona concreta del valle pasan por ffmpeg para su procesamiento, luego por COLMAP para la estimación de la pose de cámara y structure-from-motion, luego por el propio entrenamiento del splat, todo ello ejecutándose en una instancia GPU efímera en la nube — que se levanta bajo demanda, se factura solo mientras corre, y se destruye cuando termina. El resultado es un modelo de splat, en formato .spz o .ksplat, subido a un CDN en DigitalOcean Spaces, desde donde el frontend lo transmite y renderiza directamente.
Ese pipeline existe hoy. Lo que todavía no existe es una captura de dron que alimentarlo — a fecha de este post, las grabaciones de dron figuran internamente como "no disponibles, pendientes de manifiesto de captura con licencia", que es una forma precisa de decir que todavía no hemos hecho el vuelo real, con la cobertura legal correspondiente. Así que no hay ningún splat del valle que enseñarte. Hay infraestructura real, probada y lista, apuntando a unas grabaciones que no existen. Prefiero decírtelo claramente antes que dejar que un diagrama dé a entender lo contrario.
4. Mantener la propia lengua del valle en el mapa
Los nueve municipios del Val d'Aran — Arres, Bausen, Bossòst, Canejan, Es Bòrdes, Les, Naut Aran, Vielha e Mijaran, y Vilamòs — aparecen en el gemelo exactamente así: en aranés, la variedad occitana propia del valle, no traducidos al castellano ni al catalán por comodidad. Esa es una regla deliberada, no un descuido, coherente con algo que al estudio le ha importado en otros sitios, incluidas herramientas que hemos construido específicamente en torno a la lengua aranesa. Un gemelo digital del valle que renombrara los propios lugares del valle en la lengua de otro sería una especie de traición extraña para un estudio con sede aquí. Es un detalle pequeño en un código lleno de problemas sin resolver más grandes, pero es uno que hicimos bien desde el primer día en lugar de prometer arreglarlo más adelante.
aran-twin tiene, según su propio historial de git, unas seis semanas de vida mientras escribo esto. La mayor parte de la parte visualmente más impresionante — los splats — todavía no existe en ninguna forma pública, y la mitad de las capas de datos están conectadas a fuentes que todavía no han dicho que sí. Lo que sí existe es un pipeline real, una disciplina real de no falsear lo que no tenemos, y una razón real para seguir adelante: este es el valle en el que trabajamos, representado con honestidad, una fuente de datos confirmada cada vez.