Datos GPS EXIF
Los metadatos GPS EXIF incorporan coordenadas geográficas (latitud, longitud, altitud), marca de tiempo UTC y datos de dirección directamente en archivos de ima...
EXIF (Exchangeable Image File Format) es el estándar de metadatos incrustado en fotos digitales y fotogramas de video, que captura configuraciones de cámara, marca de tiempo y — de forma crítica para inspección — coordenadas GPS, altitud y orientación de la cámara. TarmacView utiliza EXIF GPS para geolocalización de fotos y mapeo de levantamientos con drones.
EXIF, acrónimo de Exchangeable Image File Format (Formato de Archivo de Imagen Intercambiable), es el estándar global de metadatos para incrustar información descriptiva, técnica y geoespacial directamente dentro de archivos de imagen digital. Desarrollado originalmente por la Japan Electronics and Information Technology Industries Association (JEITA) en 1995, el estándar es mantenido actualmente conjuntamente por JEITA y la Camera and Imaging Products Association (CIPA) bajo la designación CIPA DC-008. La versión actual es EXIF 2.32 (publicada en 2019), siendo EXIF 2.31 (2016) la línea base más ampliamente implementada. La especificación se publica como CIPA DC-008-Translation-2019 y está disponible gratuitamente en el sitio web de estándares de CIPA.
Los datos EXIF se almacenan dentro de archivos de imagen utilizando la estructura de metadatos TIFF (Tagged Image File Format), incluso cuando la imagen misma está comprimida como JPEG. En un archivo JPEG, EXIF ocupa el segmento marcador APP1 (cuyo primer byte es 0xFFE1), posicionado inmediatamente después del marcador SOI (Inicio de Imagen) y antes de los datos de compresión JPEG. En archivos TIFF y DNG (Negativo Digital), los datos EXIF residen en Directorios de Archivos de Imagen (IFD) dedicados. Este diseño estructural significa que los metadatos EXIF pueden leerse sin descomprimir los datos de la imagen — una característica crítica para el procesamiento eficiente por lotes de grandes conjuntos de imágenes de inspección que pueden sumar miles por estudio.
El estándar define varios grupos IFD que organizan los metadatos por función: IFD0 (propiedades principales de la imagen — dimensiones, orientación, compresión, software, fecha/hora, Marca, Modelo), IFD1 (propiedades de la miniatura), ExifIFD (parámetros de disparo de la cámara — exposición, apertura, ISO, distancia focal, flash, balance de blancos, modo de escena), IFD GPS (datos de geolocalización — latitud, longitud, altitud, marca de tiempo, rumbo, velocidad), e IFD de Interoperabilidad (espacio de color y reglas de interoperabilidad). Cada IFD puede contener cientos de definiciones de etiquetas individuales, cada una con un identificador hexadecimal único, un tipo de dato (BYTE, ASCII, SHORT, LONG, RATIONAL, etc.), un conteo y el valor o desplazamiento al valor.

Para la inspección de infraestructura y el levantamiento con drones, EXIF es el vehículo principal para transportar metadatos geoespaciales y técnicos desde el punto de captura a través de la tubería de procesamiento. Cada imagen de dron — ya sea de un DJI Phantom, Mavic, Matrice, Autel EVO, Skydio X10 o una carga útil de cámara personalizada — incrusta datos EXIF que registran exactamente dónde, cuándo, cómo y desde qué altitud se tomó cada fotografía. Estos datos son la base para la geolocalización de fotos, la reconstrucción fotogramétrica, la generación de ortomosaicos y el análisis de inspección automatizado tal como se implementa en plataformas como TarmacView.
El estándar EXIF es uno de los tres esquemas de metadatos dominantes en la imagen digital, junto con IPTC (International Press Telecommunications Council — centrado en metadatos descriptivos y de derechos de autor para noticias y publicaciones) y XMP (Extensible Metadata Platform — un marco basado en XML para incrustar espacios de nombres de metadatos personalizados). EXIF es único en su precisión y estructura para datos técnicos de cámara y GPS, mientras que XMP extiende las capacidades de EXIF con etiquetas específicas del fabricante — una distinción crítica para los flujos de trabajo de fotogrametría con drones.
El IFD GPS (Directorio de Archivo de Imagen) es posiblemente la sección más importante de EXIF para aplicaciones de inspección de infraestructura. Identificado por la etiqueta 0x8825 dentro de IFD0, el IFD GPS contiene un conjunto estructurado de subetiquetas que codifican la posición geográfica, altitud, rumbo, velocidad y marca de tiempo de la captura de la imagen. El estándar CIPA DC-008 define estas etiquetas en la Sección 9 (Etiquetas GPS) con rigurosas reglas de codificación que aseguran la interoperabilidad entre dispositivos y plataformas de software.
GPSLatitude (etiqueta 0x0002) y GPSLongitude (etiqueta 0x0004) se almacenan como tres valores RATIONAL que representan grados, minutos y segundos — cada uno codificado como un par numerador/denominador de 32 bits. Por ejemplo, la latitud 25° 45’ 30.5" N se almacena como [25/1, 45/1, 305/10], o en forma racional [25.000000, 45.000000, 30.500000]. Las etiquetas complementarias GPSLatitudeRef (0x0001) y GPSLongitudeRef (0x0003) son caracteres ASCII individuales — “N” o “S” y “E” o “W” respectivamente — que especifican el hemisferio. La etiqueta GPSMapDatum (0x0012) registra el sistema de referencia geodésico; para prácticamente todos los drones de consumo y prosumidores, este es “WGS-84” (Sistema Geodésico Mundial 1984).
GPSAltitude (etiqueta 0x0006) se almacena como un único valor RATIONAL que representa metros sobre o bajo el elipsoide WGS84. GPSAltitudeRef (0x0005) es un único valor BYTE — 0 para sobre el nivel del mar, 1 para bajo el nivel del mar. La distinción crítica que muchos usuarios malinterpretan es que la altitud GPS no es la elevación sobre el nivel medio del mar (MSL) ni la altura sobre el nivel del suelo (AGL). La altitud GPS es la altura sobre el elipsoide de referencia matemático (WGS84), que puede diferir del nivel medio del mar local entre 20 y 100 metros dependiendo de la separación del geoide (también llamada ondulación del geoide) en la ubicación de captura. Por ejemplo, en Denver, Colorado (EE.UU.), el elipsoide WGS84 está aproximadamente 16 metros bajo el geoide local (NAVD88), por lo que una lectura de altitud GPS de 1600 m corresponde a una elevación MSL de aproximadamente 1584 m. Esta distinción está documentada en los requisitos del Anexo 14 de la OACI para el levantamiento de elevación de aeródromos y en la norma ISO 19111 para definiciones de sistemas de referencia de coordenadas.
| Etiqueta EXIF GPS | ID de Etiqueta (Hex) | Tipo de Dato | Descripción |
|---|---|---|---|
| GPSLatitudeRef | 0x0001 | ASCII(2) | “N” o “S” — hemisferio norte o sur |
| GPSLatitude | 0x0002 | RATIONAL(3) | Grados, minutos, segundos como valores racionales |
| GPSLongitudeRef | 0x0003 | ASCII(2) | “E” o “W” — hemisferio este u oeste |
| GPSLongitude | 0x0004 | RATIONAL(3) | Grados, minutos, segundos como valores racionales |
| GPSAltitudeRef | 0x0005 | BYTE | 0 = sobre el nivel del mar, 1 = bajo el nivel del mar |
| GPSAltitude | 0x0006 | RATIONAL | Altura en metros sobre el elipsoide de referencia WGS84 |
| GPSTimeStamp | 0x0007 | RATIONAL(3) | Hora UTC (horas, minutos, segundos) de la fijación GPS |
| GPSDateStamp | 0x001D | ASCII(11) | Cadena de fecha UTC: “AAAA:MM:DD” |
| GPSSpeedRef | 0x000C | ASCII(2) | “K” para km/h, “M” para mph, “N” para nudos |
| GPSSpeed | 0x000D | RATIONAL | Velocidad sobre el suelo en unidades especificadas por GPSSpeedRef |
| GPSTrackRef | 0x000E | ASCII(2) | “T” para norte verdadero, “M” para norte magnético |
| GPSTrack | 0x000F | RATIONAL | Dirección de desplazamiento en grados en sentido horario desde el norte |
| GPSImgDirectionRef | 0x0010 | ASCII(2) | “T” o “M” para referencia de dirección de imagen |
| GPSImgDirection | 0x0011 | RATIONAL | Dirección hacia la que apunta la cámara en grados |
| GPSMapDatum | 0x0012 | ASCII | Datum geodésico — típicamente “WGS-84” |
| GPSHPositioningError | 0x001F | RATIONAL | Dilución horizontal de precisión (HDOP) en metros |
GPSTimeStamp (0x0007) almacena la hora UTC de la fijación GPS como tres valores RATIONAL (horas, minutos, segundos), mientras que GPSDateStamp (0x001D) almacena la fecha UTC como una cadena ASCII de 11 caracteres en el formato “AAAA:MM:DD”. Juntos, proporcionan la marca de tiempo GPS — distinta de la etiqueta EXIF DateTimeOriginal (0x9003 en ExifIFD), que registra la hora del reloj interno de la cámara cuando se presionó el obturador. La marca de tiempo GPS se origina de los relojes atómicos de los satélites y es mucho más confiable para el ordenamiento temporal preciso de imágenes de inspección, particularmente cuando se realizan estudios a través de límites de husos horarios o transiciones de horario de verano.
La etiqueta GPSTrack (0x000F) registra la dirección de desplazamiento en el momento de la captura, medida en grados en sentido horario desde el norte verdadero (o norte magnético según lo indicado por GPSTrackRef). La etiqueta GPSImgDirection (0x0011) registra la dirección hacia la que apunta la cámara — de importancia crítica para la inspección con drones donde el estabilizador de la cámara puede estar orientado independientemente del rumbo de la aeronave. Para drones DJI que vuelan misiones de mapeo nadir estándar, GPSImgDirection típicamente equivale al rumbo de la aeronave, pero para inspección oblicua de pilares de puentes, fachadas de edificios o bordes de pistas, la dirección de guiñada del estabilizador proporciona el ángulo de visión de la cámara esencial para la estimación de la orientación fotogramétrica.
GPSHPositioningError (0x001F) — añadido en EXIF 2.31 — informa el error de posicionamiento horizontal estimado en metros. Para drones equipados con RTK, este valor puede ser 0.02-0.05 (2-5 cm), mientras que para receptores GPS/GLONASS estándar varía de 1.0 a 5.0 metros. Esta etiqueta permite el filtrado automatizado de calidad durante la selección de imágenes para procesamiento fotogramétrico — las imágenes con GPSHPositioningError que excedan un umbral configurable pueden marcarse o excluirse para mantener la precisión de la reconstrucción.
La etiqueta de orientación EXIF (etiqueta 0x0112, ubicada en IFD0) es uno de los campos EXIF más frecuentemente malinterpretados. Almacena un único entero SHORT (del 1 al 8) que describe la rotación y el reflejo de los datos de píxeles de la imagen en relación con los ejes de coordenadas naturales del sensor de la cámara. Los ocho valores definidos en el estándar EXIF son: 1 = normal (rotación 0°), 2 = reflejado horizontalmente (volteado izquierda-derecha), 3 = rotado 180°, 4 = reflejado verticalmente (volteado arriba-abajo), 5 = reflejado horizontalmente y rotado 270° en sentido horario, 6 = rotado 90° en sentido horario, 7 = reflejado horizontalmente y rotado 90° en sentido horario, 8 = rotado 270° en sentido horario. Esta etiqueta permite que las cámaras y teléfonos inteligentes indiquen cómo debe mostrarse la imagen para una visualización correcta, sin rotar físicamente los datos de píxeles — una optimización de rendimiento significativa.
Para imágenes de inspección con drones, la etiqueta de orientación es casi siempre 1 (normal), porque las cámaras de drones están montadas en estabilizadores que mantienen el sensor en una orientación fija en relación con el horizonte. Sin embargo, la orientación de la cámara que importa para el análisis geoespacial — los ángulos de balanceo, cabeceo y guiñada del eje óptico de la cámara — NO se almacena en el IFD EXIF estándar. En su lugar, estos datos son escritos por los fabricantes de drones en espacios de nombres XMP propietarios que extienden la estructura EXIF.
Los drones DJI escriben la orientación de la cámara en el espacio de nombres XMP http://www.dji.com/drone-dji/1.0/ con las etiquetas GimbalPitchDegree, GimbalRollDegree y GimbalYawDegree. Estas representan la orientación del estabilizador en relación con un sistema de coordenadas a nivel local: el cabeceo es positivo cuando la cámara se inclina hacia arriba desde el nadir (90° = horizonte frontal, -90° = horizonte trasero), el balanceo es la rotación alrededor del eje frontal (positivo = lado derecho hacia abajo), y la guiñada es el rumbo de la brújula de la cámara (0° = norte, positivo en sentido horario). Para misiones de mapeo nadir, el cabeceo del estabilizador es típicamente -90° (directamente hacia abajo), el balanceo del estabilizador es 0°, y la guiñada del estabilizador equivale al rumbo de la aeronave.
DJI también escribe FlightPitchDegree, FlightRollDegree y FlightYawDegree — la actitud del fuselaje de la aeronave misma, que difiere de la orientación del estabilizador cuando este está compensando activamente el movimiento de la aeronave. Durante una misión de mapeo estándar, el controlador de vuelo mantiene el estabilizador en el ángulo comandado mientras que la aeronave puede inclinarse hacia adelante durante el vuelo hacia adelante (típicamente 2-8° a velocidades de mapeo de 5-15 m/s). El software de fotogrametría como Pix4Dmapper, Agisoft Metashape y OpenDroneMap utiliza la orientación del estabilizador (no la actitud de vuelo) como la estimación inicial de orientación de la cámara para el ajuste de paquetes, porque el estabilizador representa el eje óptico real de la cámara.
Los drones Autel almacenan la orientación de manera diferente. El espacio de nombres XMP para la telemetría de Autel incluye etiquetas <Camera:Pitch> y <Camera:Yaw>, pero el balanceo típicamente no se registra. Los valores de orientación de Autel utilizan una convención de signos diferente a la de DJI — cabeceo positivo significa que la cámara está inclinada hacia abajo (hacia el nadir), que es la convención opuesta a DJI. Esta diferencia en la convención de signos es una fuente conocida de errores de configuración al procesar conjuntos de datos de drones de múltiples fabricantes.
Los drones Skydio, particularmente la serie X10, incrustan la orientación de la cámara en el espacio de nombres XMP con etiquetas CameraOrientation que siguen la convención fotogramétrica (Omega, Phi, Kappa o Guiñada, Cabeceo, Balanceo dependiendo de la versión del firmware). Los metadatos de Skydio también incluyen parámetros intrínsecos de calibración de cámara (distancia focal, punto principal, coeficientes de distorsión de lente) directamente en el archivo de imagen — crucial para el procesamiento fotogramétrico sin un paso de calibración separado.
Para software fotogramétrico que no tiene soporte nativo para etiquetas XMP específicas del fabricante, la orientación inicial de la cámara se estima típicamente a partir de la trayectoria GPS solamente — comparando posiciones secuenciales de imágenes para derivar la dirección de desplazamiento y asumiendo que la cámara apunta hacia el nadir (directamente hacia abajo). Esta suposición funciona adecuadamente para misiones de mapeo en cuadrícula estándar pero falla para vuelos de inspección oblicuos donde la cámara está intencionalmente apuntada a 15-45° de la vertical. En esos casos, la orientación del estabilizador desde XMP proporciona la única estimación inicial confiable, y su ausencia puede causar fallos de alineación fotogramétrica.
La convención de rotación omega, phi, kappa (ω, φ, κ) comúnmente utilizada en fotogrametría difiere de la convención de guiñada, cabeceo, balanceo utilizada en la aviación y los metadatos de drones. Omega (ω) es la rotación alrededor del eje X (equivalente al balanceo), phi (φ) es la rotación alrededor del eje Y (cabeceo), y kappa (κ) es la rotación alrededor del eje Z (guiñada). La conversión entre las dos convenciones requiere un manejo cuidadoso de signos y un mapeo de ejes de coordenadas — una tarea que el software de fotogrametría maneja internamente pero que los ingenieros deben entender al validar los metadatos de orientación de la cámara.
ExifTool, creado y mantenido por Phil Harvey, es la herramienta más completa y ampliamente utilizada para leer, escribir y editar metadatos EXIF en todos los sistemas operativos (Windows, macOS, Linux). Escrito en Perl y distribuido como un ejecutable independiente, ExifTool soporta más de 11,000 nombres de etiquetas en EXIF, IPTC, XMP, Perfil ICC y cientos de espacios de nombres MakerNote específicos de fabricantes. La herramienta es gratuita y de código abierto bajo la Licencia Pública General GNU (GPL) versión 1 o Licencia Artística.
La estructura de comando fundamental para leer metadatos es:
exiftool -NOMBRETAG -NOMBRETAG nombrearchivo
Para extraer coordenadas GPS de una sola imagen de dron en formato decimal:
exiftool -GPSLatitude -GPSLongitude -GPSAltitude -n DJI_0042.JPG
La bandera -n genera valores numéricos en grados decimales, metros y segundos en lugar de las cadenas formateadas por defecto en grados-minutos-segundos — esencial para el consumo programático. Sin -n, la latitud GPS se muestra como “25 deg 45’ 30.50"” lo que requiere análisis.
Extracción por lotes a CSV para un estudio de vuelo completo:
exiftool -csv -GPSLatitude -GPSLongitude -GPSAltitude -GPSHPositioningError -DateTimeOriginal -RelativeAltitude -GimbalPitchDegree -GimbalYawDegree -n *.JPG > survey_metadata.csv
Esto produce una tabla estructurada con una fila por imagen y columnas para cada etiqueta solicitada. La bandera -csv incluye una fila de encabezado, haciendo que la salida sea directamente importable en software SIG, aplicaciones de hoja de cálculo o sistemas de bases de datos.
Extrayendo toda la telemetría específica de DJI:
exiftool -XMP-drone-dji:all DJI_0042.JPG
Esto filtra la salida solo a las etiquetas dentro del espacio de nombres XMP de DJI, mostrando campos como AbsoluteAltitude, RelativeAltitude, GimbalPitchDegree, GimbalRollDegree, GimbalYawDegree, FlightPitchDegree, FlightYawDegree, FlightXSpeed, FlightYSpeed, FlightZSpeed, CalibratedFocalLength y CalibratedOpticalCenterX/Y.
Escribiendo coordenadas GPS en una imagen que carece de ellas:
exiftool -GPSLatitude=25.759167 -GPSLatitudeRef=N -GPSLongitude=-80.152778 -GPSLongitudeRef=W -GPSAltitude=12.5 -GPSAltitudeRef=0 image.jpg
Esta es la operación utilizada para geolocalizar imágenes cuando el GPS no estaba disponible en el momento de la captura — por ejemplo, al usar un registro de ruta GPX del controlador del dron para asignar retroactivamente posiciones a cada foto basándose en marcas de tiempo sincronizadas.

La bifurcación Pillow de la Biblioteca de Imágenes de Python (PIL) proporciona capacidad nativa de lectura EXIF a través del método _getexif() del objeto Image. Aunque el nombre del método está marcado como protegido (prefijo de guión bajo), es ampliamente utilizado y estable en las versiones de Pillow 8.0 hasta la actual (10.x). El método devuelve un diccionario que mapea IDs numéricos de etiquetas EXIF a sus valores:
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
img = Image.open('drone_photo.JPG')
exif_data = img._getexif()
if exif_data:
for tag_id, value in exif_data.items():
tag_name = TAGS.get(tag_id, tag_id)
print(f"{tag_name}: {value}")
Extraer coordenadas GPS específicamente requiere acceder al sub-IFD GPSInfo (ID de etiqueta 34853, definido como TAGS.get(34853) = “GPSInfo”), luego procesar el sub-diccionario usando GPSTAGS para nombres de clave legibles por humanos:
gps_info = exif_data.get(34853, {})
for k, v in gps_info.items():
print(f"{GPSTAGS.get(k, k)}: {v}")
Pillow devuelve coordenadas GPS como tuplas de valores racionales (numerador, denominador), requiriendo conversión a grados decimales para su uso en aplicaciones de mapeo y fotogrametría. La fórmula de conversión:
grados_decimales = grados + minutos/60 + segundos/3600
Pillow proporciona el módulo ExifTags con clases enum (PIL.ExifTags.Base, PIL.ExifTags.GPS, PIL.ExifTags.IFD, etc.) que ofrecen constantes legibles por humanos para los IDs de etiquetas EXIF más comúnmente utilizados, reduciendo la necesidad de valores de ID de etiqueta codificados en código de producción.
Piexif es una biblioteca Python pura (sin dependencias externas) diseñada específicamente para leer y escribir metadatos EXIF. Proporciona una API más limpia que Pillow para la manipulación EXIF y es particularmente adecuada para escribir etiquetas GPS en imágenes:
import piexif
from piexif import GPSIFD, TAGS
def to_deg(value):
d, m, s = float(value[:2]), float(value[2:4]), float(value[4:])
return [(d, 1), (m, 1), (int(s * 1000), 1000)]
# Leer EXIF
exif_dict = piexif.load('image.JPG')
gps = exif_dict.get('GPS', {})
lat = gps.get(GPSIFD.GPSLatitude)
lng = gps.get(GPSIFD.GPSLongitude)
# Escribir GPS en imagen
exif_dict['GPS'][GPSIFD.GPSLatitude] = to_deg("2545.500")
exif_dict['GPS'][GPSIFD.GPSLatitudeRef] = 'N'
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, 'image.JPG')
Piexif también soporta extracción de miniaturas, manejo de MakerNote y eliminación masiva de metadatos (útil para procesamiento centrado en la privacidad donde los datos GPS deben eliminarse de las imágenes publicadas).
Exifread (a través del paquete PyPI exifread) es una biblioteca Python especializada en extracción EXIF con soporte para una gama más amplia de etiquetas MakerNote específicas de fabricantes que Pillow. A diferencia del soporte limitado de MakerNote de Pillow, exifread puede decodificar formatos de metadatos propietarios de Canon, Nikon, DJI y otros en campos estructurados:
import exifread
with open('drone_photo.JPG', 'rb') as f:
tags = exifread.process_file(f, details=True)
for tag, value in tags.items():
if 'GPS' in tag:
print(f"{tag}: {value}")
Exifread devuelve todas las etiquetas (incluyendo GPS, EXIF, MakerNote y miniatura) como un diccionario plano con nombres de clave completamente calificados como 'GPS GPSLatitude', 'EXIF DateTimeOriginal' y 'MakerNote Unknown'. El parámetro details=True intenta decodificar los datos de proveedor MakerNote en campos estructurados en lugar de dejarlos como arreglos de bytes sin procesar.
DJI es el fabricante dominante en el mercado de inspección con drones, y su implementación de metadatos es la más completa y la más minuciosamente documentada (aunque a través de ingeniería inversa y esfuerzo comunitario en lugar de publicación oficial). DJI escribe datos EXIF más un conjunto extenso de etiquetas de espacio de nombres XMP bajo la URI http://www.dji.com/drone-dji/1.0/.
El conjunto completo de etiquetas XMP de DJI en el firmware actual (a partir de 2022+ para Mavic 3, Matrice 30/300/350, Phantom 4 RTK) incluye: GpsLatitude y GpsLongitude (grados decimales, ocho decimales), AbsoluteAltitude (estimación barométrica MSL en metros, punto flotante), RelativeAltitude (altura sobre el punto de despegue en metros), GimbalPitchDegree, GimbalRollDegree, GimbalYawDegree (ángulos de orientación del estabilizador), FlightPitchDegree, FlightRollDegree, FlightYawDegree (actitud de la aeronave), FlightXSpeed, FlightYSpeed, FlightZSpeed (componentes de velocidad en m/s en coordenadas de cuerpo local), CalibratedFocalLength (en mm, considerando la variación de fabricación de la lente), CalibratedOpticalCenterX y CalibratedOpticalCenterY (desplazamiento del punto principal en píxeles), LensDistortionParam (una serie de coeficientes de distorsión para corrección de lente en fotogrametría) y SelfData (un bloque binario serializado que contiene telemetría adicional — acelerómetro, giroscopio, magnetómetro e información satelital).
Un problema crítico específico de DJI es el fenómeno del doble registro GPS. DJI escribe coordenadas GPS en las etiquetas EXIF GPS estándar Y en el espacio de nombres XMP drone-dji, pero los valores pueden diferir. Las etiquetas EXIF GPS típicamente utilizan la posición reportada por el receptor GPS en el momento de la activación del obturador. Las etiquetas XMP GpsLatitude/GpsLongitude a veces utilizan una posición suavizada o promediada del controlador de vuelo. Diferencias de 0.5 a 2 metros entre ambas son comunes y son una fuente conocida de confusión en fotogrametría cuando el software usa por defecto una fuente u otra.
Para cámaras térmicas de DJI (Mavic 3T, Matrice 30T, Zenmuse H20T, Zenmuse XT2), los archivos RJPEG (JPEG radiométrico) contienen datos EXIF y XMP adicionales para parámetros térmicos — configuración de emisividad, temperatura reflejada, temperatura atmosférica, distancia al objeto y humedad relativa. Estas etiquetas son esenciales para convertir valores de píxeles térmicos sin procesar a lecturas de temperatura calibradas y se almacenan en el segmento marcador APP4 (no en APP1 donde reside el EXIF normal).
Autel (propiedad de Shenzhen Autel Intelligent Technology) utiliza una estructura de metadatos diferente. El espacio de nombres XMP http://www.autel.com/autel/1.0/ contiene etiquetas que incluyen GPSLatitude, GPSLongitude, Altitude (SNM — sobre el nivel del mar), Pitch, Yaw y Roll (aunque Roll se registra de manera inconsistente entre versiones de firmware). La altitud de Autel se almacena como SNM por defecto, lo que significa que el valor representa la elevación estimada sobre el nivel medio del mar en lugar de la altura sobre el nivel del suelo. Para aplicaciones de mapeo, los usuarios deben conocer la elevación del suelo en el punto de despegue para derivar la AGL.
Las imágenes de Autel también carecen de los datos extensos de calibración de lente que DJI proporciona en XMP. Las etiquetas CalibratedFocalLength, CalibratedOpticalCenter y LensDistortionParam están ausentes, lo que significa que el software de fotogrametría debe estimar los parámetros de calibración de la cámara durante el ajuste de paquetes — requiriendo más puntos de control terrestre y potencialmente reduciendo la precisión para aplicaciones de inspección de alta precisión.
Skydio (adquirido por Amazon en 2023) adopta un enfoque diferente: los modelos X10 y S2+ anteriores priorizan metadatos de calidad topográfica. El espacio de nombres XMP incluye etiquetas GPSXYAccuracy y GPSZAccuracy que reportan la precisión horizontal y vertical estimada de la fijación GPS, permitiendo el cribado automatizado de calidad. Skydio también expone datos de CameraIntrinsics que incluyen distancia focal (píxeles), punto principal (cx, cy) y parámetros de distorsión de lente directamente en los metadatos de la imagen, reduciendo el tiempo requerido para la autocalibración durante el procesamiento fotogramétrico. Para el modelo X10 RTK, los archivos .MRK complementarios proporcionan observaciones GNSS de fase portadora para correcciones cinemáticas post-procesadas (PPK), evitando la precisión limitada del EXIF GPS incrustado.
Las cámaras GoPro se utilizan frecuentemente para inspección de cerca y inspección FPV de puentes. La implementación EXIF de GoPro es estándar (metadatos de cámara más GPS para modelos Hero), pero la precisión del GPS (típicamente 3-8 metros) y la distorsión de lente ojo de pez (severa — la estabilización HyperSmooth de GoPro recorta y deforma las imágenes) hacen que las imágenes de GoPro sean un desafío para la fotogrametría sin una calibración extensa. GoPro almacena GPS solo en etiquetas EXIF estándar (sin extensiones XMP del fabricante), limitando la telemetría a latitud, longitud, altitud y marca de tiempo.
Las cargas útiles de cámara personalizadas (Sony serie α, Canon EOS combinadas con registradores GNSS externos) dependen completamente de etiquetas EXIF estándar para datos GPS. Sin extensiones XMP del fabricante, la tubería fotogramétrica debe estimar la orientación de la cámara solo a partir de la coincidencia de características de imagen — factible para buenas condiciones de textura pero propensa a fallos en superficies de baja textura (asfalto nuevo, hormigón uniforme) comunes en la inspección de pavimentos.
La precisión del EXIF GPS depende del hardware del receptor GNSS, la disponibilidad de constelaciones de satélites, las condiciones atmosféricas y el entorno de señal en el momento de la captura. Los drones de consumo (serie DJI Mini, Mavic Air, Phantom 4 no RTK) utilizan receptores GPS/GLONASS de frecuencia única (L1) con precisión horizontal de 2-5 metros bajo condiciones óptimas y 5-10 metros o peor en cañones urbanos, cerca de estructuras reflectantes o bajo cubierta forestal densa. Esta precisión está documentada por las especificaciones de DJI y confirmada por pruebas independientes publicadas en la literatura de fotogrametría.
Los drones equipados con RTK (Cinemática en Tiempo Real) (DJI Phantom 4 RTK, Mavic 3 RTK, Matrice 350 RTK) logran una precisión horizontal de 2-5 cm al recibir correcciones de fase portadora desde una estación base a través de enlace de radio (típicamente 900 MHz o 4G LTE). La etiqueta GPSHPositioningError en EXIF reporta el error horizontal estimado — para capturas en modo RTK, este valor debe estar por debajo de 0.05 m (5 cm). Los flujos de trabajo PPK (Cinemática Post-Procesada) recolectan observaciones GNSS sin procesar a bordo y aplican correcciones después del vuelo, logrando precisión similar sin la necesidad de un enlace de datos en tiempo real.
La precisión de altitud es significativamente peor que la precisión horizontal para todos los drones sin RTK. La GPSAltitude de EXIF referencia el elipsoide WGS84, y la precisión vertical del GPS independiente es típicamente 1.5 a 2 veces peor que la precisión horizontal (3-15 metros vs 2-5 metros). La altitud barométrica de DJI (AbsoluteAltitude en XMP) es más estable a corto plazo pero se desvía con los cambios de presión atmosférica. Estudios que comparan la altitud barométrica con puntos de control terrestre relevados reportan errores absolutos de 5-30 metros dependiendo de las condiciones atmosféricas del día del estudio.
| Factor de Precisión | GPS de Consumo (no RTK) | RTK/PPK | Vertical (no RTK) | Vertical (RTK/PPK) |
|---|---|---|---|---|
| Horizontal (RMS) | 2-5 m | 0.02-0.05 m | 3-15 m | 0.05-0.10 m |
| Etiqueta EXIF típica | GPSLatitude/Longitude | GPSLatitude/Longitude | GPSAltitude | GPSAltitude |
| GPSHPositioningError | 1.0-5.0 m | 0.02-0.05 m | N/D | N/D |
| Efecto multicamino | Significativo | Corregido por RTK | Significativo | Moderado |
| Ejemplos de drones | Mavic Air, Mini, Phantom 4 | P4 RTK, M3 RTK, M350 | Todos sin RTK | P4 RTK, M350 RTK |
La suplantación GPS y la interferencia de señal son preocupaciones crecientes para las operaciones de inspección con drones en entornos sensibles o en conflicto. Los ataques de suplantación inyectan señales GPS falsas que hacen que el dron registre coordenadas incorrectas en los metadatos EXIF sin que el piloto lo sepa. Investigaciones de la Universidad de Luxemburgo y del programa de Detección y Mitigación de UAS de la FAA han demostrado que las etiquetas EXIF GPS estándar no proporcionan autenticación criptográfica — las coordenadas registradas son las que el receptor calcula a partir de las señales satelitales recibidas. Para entornos aeroportuarios de alta seguridad, la verificación del EXIF GPS contra fuentes independientes (correcciones de estación base, puntos de control terrestre) es esencial.
La fiabilidad de la marca de tiempo es generalmente alta porque la hora GPS (registrada en GPSTimeStamp y GPSDateStamp) se origina de los relojes atómicos de la constelación de satélites, precisos a nanosegundos. Sin embargo, la etiqueta EXIF DateTimeOriginal utiliza el reloj interno del sistema del dron, que puede desviarse de 1 a 10 segundos por hora de vuelo, especialmente en condiciones frías donde los osciladores de cristal cambian de frecuencia. Para flujos de trabajo de inspección que requieren correlación temporal precisa entre imágenes y datos de sensores externos, se debe preferir la marca de tiempo GPS sobre la marca de tiempo del reloj de la cámara.
TarmacView ingiere metadatos EXIF de imágenes de inspección con drones como la fuente de datos principal para geolocalizar el deterioro del pavimento, ordenar las fotos de inspección cronológicamente e inicializar la reconstrucción fotogramétrica. La tubería de procesamiento lee el IFD GPS (etiquetas 0x0001-0x001F) para extraer latitud, longitud, altitud y marca de tiempo GPS de cada imagen en un estudio de inspección.
La geolocalización de fotos en TarmacView mapea cada imagen de inspección a su ubicación de captura en un mapa interactivo de pavimento. Las coordenadas geográficas de EXIF GPSLatitude y GPSLongitude colocan un icono de foto en la posición precisa donde estaba el dron cuando se disparó el obturador. Para la inspección de pavimentos, esto permite a los inspectores hacer clic en cualquier ubicación del ortomosaico y recuperar instantáneamente todas las fotos que cubren esa área, filtradas por fecha, vuelo y tipo de inspección.
El cálculo de GSD basado en altitud utiliza la GPSAltitude (o RelativeAltitude del XMP de DJI) combinada con la distancia focal calibrada de la cámara y las dimensiones del sensor para calcular la Distancia de Muestreo del Suelo (GSD) — la dimensión del mundo real representada por cada píxel. La GSD es el parámetro crítico para la medición precisa del ancho de grietas: una GSD de 1 mm/píxel permite la detección confiable de grietas de 0.3-3 mm de ancho, mientras que una GSD de 3 mm/píxel no puede resolver grietas sub-milimétricas. TarmacView utiliza la altitud EXIF para calcular la GSD por imagen y marca cualquier imagen donde la altitud excedió las tolerancias planificadas (indicando posible inconsistencia de GSD en todo el estudio).
El ordenamiento temporal utiliza EXIF DateTimeOriginal o la marca de tiempo GPS para secuenciar las fotos cronológicamente, permitiendo la reconstrucción automatizada de la trayectoria de vuelo y la verificación de cobertura. Los vacíos en la secuencia de marcas de tiempo indican fotos faltantes (fallo del disparador, error de escritura en tarjeta) que pueden dejar vacíos de cobertura en el ortomosaico.
Los datos de calibración de cámara de EXIF (FocalLength, FocalLengthIn35mmFilm y etiquetas XMP del fabricante incluyendo CalibratedFocalLength, CalibratedOpticalCenterX/Y, LensDistortionParam) inicializan el modelo de cámara fotogramétrica. Proporcionar valores iniciales precisos para la distancia focal y el punto principal reduce el tiempo de convergencia del ajuste de paquetes y mejora la probabilidad de una alineación correcta, particularmente para estudios con textura limitada o condiciones de iluminación desafiantes.
La geolocalización de fotos es el proceso de asignar coordenadas geográficas (latitud, longitud y opcionalmente altitud) a fotografías digitales. Cuando una cámara o dron tiene un receptor GPS, las coordenadas se escriben automáticamente en el IFD GPS de EXIF en el momento de la captura. Para imágenes que carecen de datos GPS, la geolocalización puede realizarse a posteriori haciendo coincidir la marca de tiempo de la imagen con un registro de ruta GPS externo (GPX, NMEA o formato propietario).
El flujo de trabajo estándar de geolocalización para imágenes de inspección con drones procede de la siguiente manera:
Paso 1 — Adquisición de ruta GPS: Durante el vuelo, el controlador del dron o un registrador GPS separado registra la posición y la hora a 1-10 Hz. Los registradores GPS independientes (Garmin, Bad Elf, Dual) proporcionan mayor precisión que la mayoría de los receptores GPS de drones y se utilizan para flujos de trabajo de inspección de precisión.
Paso 2 — Sincronización de marcas de tiempo: Las marcas de tiempo de las imágenes (de EXIF DateTimeOriginal) deben sincronizarse con las marcas de tiempo de la ruta GPS con precisión de subsegundos. La desviación del reloj entre el reloj de la cámara y el reloj GPS se corrige calculando el desplazamiento entre la marca de tiempo GPS de la cámara (si está disponible) y DateTimeOriginal.
Paso 3 — Interpolación de coordenadas: Dado que los puntos de la ruta GPS se registran a una frecuencia más alta que las imágenes (ej., GPS a 5 Hz vs disparador de obturador a 0.5 Hz), la posición exacta de la cámara en cada evento de obturación se interpola a partir de los puntos de ruta GPS más cercanos. La interpolación lineal entre la fijación GPS inmediatamente anterior y posterior a la marca de tiempo de la imagen es estándar, aunque la interpolación spline cúbica captura mejor la trayectoria de vuelo curva durante los giros.
Paso 4 — Escritura EXIF: Las coordenadas interpuestas, altitud y rumbo se escriben en el IFD GPS EXIF del archivo de imagen usando ExifTool o bibliotecas programáticas (piexif, Pillow). El archivo original debe conservarse con una copia de respaldo antes de cualquier modificación EXIF.
Las herramientas especializadas para geolocalización de fotos incluyen GeoSetter (Windows, gratuita, soporta escritura EXIF y XMP con vista previa de Google Earth), GPicSync (multiplataforma, basada en Python), Geosetter de Friedemann Schmidt, y el enfoque de línea de comandos exiftool con archivos de plantilla de formato para conversión GPX a EXIF. Para geolocalización por lotes en tuberías de inspección, los scripts personalizados que utilizan las herramientas descritas en la Sección 4 proporcionan el mayor control y capacidad de integración.
Los datos EXIF pueden faltar, truncarse o corromperse a través de varios mecanismos:
Conversión y reguardado de archivos: Muchas herramientas de procesamiento de imágenes (visores de imágenes, cargadores web, herramientas de captura de pantalla) guardan imágenes sin preservar los metadatos EXIF. Los peores infractores son los navegadores web, las aplicaciones de mensajería (WhatsApp, Telegram comprimen y eliminan metadatos) y las plataformas de redes sociales. Ejecutar un JPG de dron a través de cualquiera de estas tuberías destruye los datos EXIF GPS permanentemente a menos que exista una copia de respaldo.
Transferencia de archivos incompleta: Las transferencias de archivos corruptas (USB interrumpido, tarjeta SD inestable, caídas de red durante la carga a la nube) pueden truncar el segmento JPEG APP1 donde reside EXIF, resultando en un archivo de imagen que se abre pero carece de metadatos. La diferencia de tamaño entre el archivo original y el archivo transferido es la señal reveladora.
Entornos sin GPS: Cuando el dron no puede obtener una fijación GPS (dentro de túneles, bajo cubierta densa, entre edificios altos, durante el calentamiento prevuelo), el IFD GPS de EXIF puede estar completamente ausente o poblado con coordenadas cero o la última posición conocida (un comportamiento específico de DJI que puede pasar desapercibido si las imágenes no se revisan manualmente).
Errores de tarjeta SD y sistema de archivos: La corrupción de la tarjeta SD, la expulsión inadecuada y la pérdida de energía durante las operaciones de escritura pueden resultar en datos EXIF parciales. Un síntoma común es un DateTimeOriginal válido pero un IFD GPS ausente — los metadatos de la cámara se escribieron antes de que se obtuviera la fijación GPS.
Métodos de detección incluyen: comparación de tamaño de archivo (los JPG originales de drones son típicamente de 3-15 MB; las versiones sin EXIF son 0.5-2 MB más pequeñas), verificación rápida con herramienta EXIF (exiftool -GPSLatitude -GPSLongitude -DateTimeOriginal *.JPG mostrando campos vacíos) y scripts automatizados de control de calidad que marcan imágenes sin datos GPS durante la ingesta de la tubería.
Corrección depende de los datos de respaldo disponibles:
exiftool -p gpx.fmt o scripts dedicados.La elección entre EXIF incrustado y metadatos auxiliares externos tiene implicaciones significativas para la gestión de datos de inspección.
EXIF incrustado se almacena dentro del propio archivo de imagen (segmento JPEG APP1, IFD TIFF o bloques de metadatos DNG). La ventaja crítica es la autocontención — la imagen y sus metadatos son un solo archivo que no puede desacoplarse. Copiar, archivar o transferir la imagen incluye automáticamente su geolocalización, marca de tiempo, configuración de cámara y telemetría del fabricante. La desventaja es que EXIF tiene extensibilidad limitada — el estándar define un conjunto fijo de identificadores de etiqueta y tipos de valor, y las extensiones del fabricante (MakerNotes, espacios de nombres XMP) ocupan espacio dentro del segmento JPEG restringido (típicamente 64-128 KB para datos EXIF, aunque XMP puede extenderse más allá del segmento APP1).
XMP (Extensible Metadata Platform) es un marco de metadatos basado en XML desarrollado por Adobe y estandarizado como ISO 16684-1:2012. XMP puede incrustarse en el archivo de imagen (dentro de un paquete XMP en el segmento APP1, después de los datos EXIF) O almacenarse como un archivo auxiliar con el mismo nombre de archivo y una extensión .xmp — por ejemplo, DJI_0042.JPG y DJI_0042.xmp. Los archivos auxiliares evitan modificar el archivo de imagen original (preservando la integridad de la firma digital y previniendo corrupciones accidentales durante la escritura), pero crean una dependencia de acoplamiento — si el archivo auxiliar se pierde, renombra o separa de la imagen, los metadatos se pierden.
GPX (Formato de Intercambio GPS) es un formato auxiliar basado en XML para datos de ruta GPS solamente. Los archivos GPX almacenan puntos de ruta, trayectorias y rutas con marcas de tiempo. Para inspección, GPX es el formato preferido para registros de ruta GPS porque es universalmente soportado por software SIG, herramientas de mapeo GPS y ExifTool. El flujo de trabajo es: volar la misión, registrar la ruta GPX desde el controlador o registrador GPS, luego geolocalizar las imágenes después del vuelo haciendo coincidir las marcas de tiempo.
Formatos auxiliares propietarios incluyen: archivos SRT de DJI (subtítulos de GPS + telemetría incrustados en archivos de video o almacenados junto a las fotos en una carpeta de subtítulos), archivos MRK (datos de corrección PPK de Skydio), archivos LOG (registros de vuelo en formato cifrado de DJI que requieren herramientas de descifrado de terceros como DatCon) y formatos específicos del fabricante para archivos de calibración de cámara térmica. Las organizaciones con archivos de inspección a largo plazo deben planificar procedimientos de gestión de archivos auxiliares que aseguren la sincronización entre las imágenes y sus acompañantes de metadatos — un desafío no trivial cuando miles de imágenes se transfieren, copian y procesan a través de múltiples sistemas.
| Característica | EXIF Incrustado | XMP Auxiliar | Ruta GPX |
|---|---|---|---|
| Autocontenido | Sí — metadatos en archivo de imagen | No — archivo separado acoplado a imagen | No — ruta separada para todas las imágenes |
| Límite de tamaño | ~64 KB (EXIF en APP1) | Límite práctico ~1 MB | Variable — 10-100 KB por hora de vuelo |
| Extensibilidad | Conjunto fijo de etiquetas; MakerNotes del fabricante | Completamente extensible mediante espacios de nombres XML | Esquema GPS fijo solamente |
| Dificultad de escritura | Moderada — debe modificar datos binarios | Fácil — operaciones de archivo XML | Fácil — XML (GPX 1.1) |
| Factor de riesgo | Corrupción de archivo durante escritura | Separación/pérdida del archivo auxiliar | Precisión de sincronización de marca de tiempo |
| Idoneidad para inspección | Portador principal de metadatos | Respaldo de telemetría extendida | Archivo de ruta GPS |
La práctica recomendada para operaciones de inspección con drones es un enfoque híbrido: (1) preservar los datos EXIF originales en cada archivo de imagen como el portador principal de metadatos, (2) mantener un registro de ruta GPX de respaldo desde el controlador de vuelo para recuperación GPS, (3) archivar archivos SRT de DJI o telemetría equivalente del fabricante junto a las imágenes, y (4) para archivo a largo plazo, generar un archivo de metadatos consolidado (CSV, GeoJSON o base de datos) extraído de todas las fuentes para asegurar la supervivencia de los metadatos independientemente de la compatibilidad del formato de archivo.
TarmacView aprovecha los metadatos EXIF de fotos de inspección con drones para geolocalizar automáticamente el deterioro del pavimento, mapear condiciones de pistas y generar ortomosaicos de calidad topográfica. Extraiga el máximo valor de sus imágenes de inspección con procesamiento automatizado de metadatos.
Los metadatos GPS EXIF incorporan coordenadas geográficas (latitud, longitud, altitud), marca de tiempo UTC y datos de dirección directamente en archivos de ima...
Una marca de tiempo es un registro digital preciso de la fecha y hora exactas en que ocurre un evento, estandarizado en aviación y tecnología para la integridad...
Una entrada de glosario exhaustiva sobre coordenadas GPS, profundizando en latitud, longitud y altitud para topografía y aviación. Cubre datums geodésicos, marc...