Activo

Galería de vuelos: fotogrametría con dron en un mapa 3D

Ocho levantamientos con dron sobre un mapa 3D: cinco en Bogotá, uno en Zipaquirá, uno en Cerinza y uno en Ibagué. Cada modelo se abre en el navegador y baja por partes.

Drones, Fotogrametría, 3D Tiles, MapLibre, three.js, Next.js

Zipaquirá · huella, vuelo de Zipaquirá · curvas cada 50 m · fuente

El detalle

La galería junta los levantamientos en un mapa 3D que se abre con un enlace. Cada modelo está partido en 3D Tiles, con niveles de detalle, y el navegador pide solo lo que está en pantalla, así que se recorre también desde el celular.

Los ocho vuelos viven en un mismo explorador, sobre el terreno, y cada modelo aparece solo cuando te acercas a él. El mapa base es de OpenFreeMap, con imágenes de Esri como opción, y el terreno, de los Terrain Tiles públicos de AWS: ninguno se genera por vuelo, y del vuelo se publica solo la malla 3D.

Las teselas están en Cloudflare R2. El repo trae también la tubería que convierte lo que exporta el software de fotogrametría (SLPK u OBJ) en 3D Tiles georreferenciados, aunque todavía se corre paso por paso.

Características

  • Explorador a pantalla completa con los ocho vuelos, sus huellas y una ficha por vuelo
  • Los modelos aparecen solos al acercarte, y el mapa completo abre de una
  • Terreno prendido desde el inicio, hundido bajo la huella de cada malla para que el DEM de 30 m no la atraviese
  • Detalle de cerca entre 0,75 y 1,7 cm por pixel de textura en los vuelos que salieron de SLPK
  • Enlaces directos a cada vuelo (/?v=zipaquira) y funciona en el teléfono
  • Modelos 3D bajo CC BY 4.0 y código bajo Apache-2.0

Stack tecnológico

  • Next.js 16 y React 19, con el tema de GeoAI LATAM
  • MapLibre GL JS; mapa base de OpenFreeMap o imágenes de Esri, terreno de AWS
  • 3d-tiles-renderer sobre three.js; glb con meshopt y texturas KTX2
  • Teselas en Cloudflare R2
  • Tubería en Node y Python: Obj2Tiles, gltfpack y scripts propios para SLPK, georreferenciación y huellas
  • Desplegado en Vercel

Lo difícil

  • El conversor estándar de SLPK a 3D Tiles ponía mal la altura de las cajas y dejaba la geometría sin comprimir: hubo que escribir uno propio
  • Sin puntos de control, las alturas de los modelos quedaban entre 20 y 256 m por encima del terreno por el GPS del dron, y seis de los ocho venían ladeados, hasta 68 m por km en Cerinza. Se corrigen en el navegador, sin rehacer las teselas
  • En Brave aparecían columnas de terreno de cientos de metros sobre Zipaquirá: el navegador altera al azar píxeles leídos de un canvas, y en el formato Terrarium un bit cambiado son 256 m
  • Obj2Tiles generaba texturas con 95 % de relleno, que llenaban la caché del visor y los niveles finos nunca aparecían

Lo aprendido

  • Para los vuelos nuevos conviene exportar SLPK y no OBJ: trae los niveles de detalle hechos y queda en cerca del 40 % de su tamaño
  • La altura de un modelo sin puntos de control se mide en el borde de la malla, no en el suelo abierto de adentro: SRTM mide techos y árboles
  • Un visor 3D en la web se juega en qué no descarga

¿Quieres colaborar en este proyecto?

Quiero colaborar

Comentarios

Deja tu comentario

Los leo todos. Se revisan antes de publicarse, así que el tuyo puede tardar un rato en aparecer.

0 / 1500

o escríbeme directo Correo LinkedIn GitHub

Zipaquirá por el paralelo 5°01′N · sin escala vertical

Únete a la red.

Una carta, sin ruido

Experimentos, mapas, papers y proyectos que van aterrizando. Sin spam, sin algoritmos, sin tracking — solo el correo.

sin spam · sólo lo que publico · baja en un clic