Consolidado

GeoFlight Planner: planificación de vuelos fotogramétricos

Planifica vuelos fotogramétricos con DJI Mini 4 Pro y Mini 5 Pro en el navegador y descarga un KMZ en formato WPML.

React, TypeScript, ArcGIS, Drones, DJI, Fotogrametría

GeoFlight Planner: planificación de vuelos fotogramétricos

Imagen base de Esri; créditos del mapa: IDECA Bogotá, PNNC, Esri, TomTom, Garmin, METI/NASA, USGS y US Census Bureau.

Créditos

Captura de GeoFlight Planner con una misión sobre la Biblioteca El Tintal, Bogotá. Imagen base de Esri; créditos del mapa: IDECA Bogotá, PNNC, Esri, TomTom, Garmin, METI/NASA, USGS y US Census Bureau.

El detalle

GeoFlight Planner nació de un Mini 5 Pro sin modo de mapeo en DJI Fly y de no querer pagar una suscripción mensual por matemáticas que están en cualquier libro. Dibujas el área en el mapa, ajustas el GSD y el solapamiento, y te llevas un KMZ con la estructura WPML de DJI para cargarlo en DJI Fly.

La app calcula la altura, la velocidad y la separación entre fotos y entre líneas, y arma la ruta con uno de cuatro patrones de vuelo. Todo el cálculo corre en el navegador, sin servidor y sin cuenta.

Características

Mapa interactivo:
dibuja polígonos de área de interés con ArcGIS Maps SDK
Drones:
presets de cámara para el Mini 4 Pro y el Mini 5 Pro. Agregar otro es editar dos archivos (la ficha de cámara en types/index.ts y la opción del selector en ConfigPanel.tsx), si conoces el identificador que DJI le asigna al dron
4 patrones de vuelo:
Grid (serpentina), Doble (dos pasadas cruzadas, pensado para modelos 3D), Corredor (experimental: tres líneas fijas en sentido norte-sur o este-oeste) y Órbita (una vuelta con centro en el promedio de los vértices)
Cálculo automático:
altura, velocidad y espaciado de fotos a partir del GSD objetivo y con la resolución completa de la cámara (48 MP en el Mini 4 Pro, 50 MP en el Mini 5 Pro); si disparas a menor resolución, cada píxel mide en el terreno más que el GSD que pediste
Exportación KMZ:
el archivo lleva wpmz/template.kml y wpmz/waylines.wpml, y en Android lo copias a la carpeta waypoint de DJI Fly, un atajo que DJI no documenta
Opciones avanzadas:
altitud manual y ángulo del gimbal (nadir, oblicua o ajuste fino)
Gratis y sin registro:
abres la página y planificas
Código público en GitHub:
puedes leerlo y auditarlo

Stack tecnológico

  • React 18, TypeScript y Vite
  • ArcGIS Maps SDK for JavaScript para el mapa interactivo
  • Todo el cómputo en el navegador: la generación de la misión corre en un Web Worker
  • proj4 para las transformaciones WGS84 ↔ UTM, con la zona UTM del centro del área
  • jszip para empaquetar el KMZ dentro del mismo worker
  • CSS propio por componente, sin framework de estilos
  • Vitest para las pruebas de los patrones Grid y Doble, la proyección, la simplificación, WPML y KMZ

Lo difícil

  • Documentación DJI: la especificación WPML lista solo drones enterprise y ningún Mini, así que para DJI Fly hubo que adaptarla sin una guía oficial
  • Cálculos: las fórmulas son las estándar (GSD, huella, solapamiento). Lo delicado son los datos de cada cámara: la ficha de DJI no trae el ancho del sensor en milímetros ni la focal del lente (solo la equivalente), y en el Mini 5 Pro el sensor cargado (3:2) no cuadra con la foto (4:3)
  • Compatibilidad: DJI no publica los identificadores de los Mini que van dentro del KMZ; en el código están estimados y falta confirmarlos con cada firmware
  • Rutas largas: con un waypoint por foto, un área grande se llena de puntos; la app avisa cuando la misión pasa de 99 y ofrece simplificarla

Lo aprendido

  • Las fórmulas (GSD, huella, solapamiento) están en cualquier libro de teledetección; lo que no está publicado son los datos de cada cámara, y ahí se fue el trabajo
  • Sin backend hay una cosa menos que mantener, y el polígono y la misión no salen del navegador (las teselas del mapa base y los archivos del SDK sí llegan desde los servidores de Esri)
  • Adaptar WPML a un dron que la especificación no lista deja datos sin confirmar: el identificador de cada Mini dentro del KMZ sigue estimado hasta probarlo con cada firmware

¿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

Chimborazo, 6263 m (IG-EPN) · 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