Digi3D.NET crea cadenas WKT compatibles con el estándar OpenGis Coordinate Transformation Service, y ese estándar dicta que si un sistema es tridimensional (que es como trabaja Digi3D.NET) debe crear sistemas de referencia o puramente 3D como los Geográficos 3D o compuestos en los que hay dos partes: una horizontal y otra vertical.
En el caso de sistemas compuestos es legal que tanto la componente horizontal como la vertical pueden ser locales (desconocido), de manera que si en Digi3D.NET creas un sistema de referencia de coordenadas en el que conoces la parte horizontal (por ejemplo WGS84 / UTM Zona 30N) y desconoces la vertical, el programa va a crear un sistema compuesto del tipo WGS84 / UTM Zona 30N + vertical local.
Esto está muy bien para los programas que siguen el estándar, pero vuelve locos a los programas que no lo siguen o que no son 3D, de manera que para mejorar la compatibilidad con esos programas, hemos añadido una opción en Digi3D.NET que nos va a permitir configurarlo para que en el caso de que el usuario cree un sistema 3D en el que el sistema vertical sea desconocido, al crear archivos .PRJ con cadenas WKT, estas se creen como sistemas 2D puros. Si por el contrario el sistema vertical no es local o desconocido, aunque tengas esta opción activada, el programa va a crear una cadena 3D.
Puedes activar esta funcionalidad en la opción del menú Herramientas/Configuración/Sistemas de referencia de coordenadas/Trabajar con sistemas 2D (horizontales) si el vertical es desconocido.
Hemos añadido una modificación en el módulo de carga de proyectos de PhotoScan en Digi3D.NET que nos va a permitir trabajar correctamente en el escenario en el que el usuario de PhotoScan le hace pasar coordenadas con altura ortométricas por coordenadas con alturas elipsoidales.
PhotoScan internamente trabaja siempre con altitudes elipsoidales. Si le proporcionamos correctamente coordenadas con altitudes ortométricas, él las transforma internamente a elipsoidales y almacena en el archivo de proyecto un sistema de referencia que indica que el operador introdujo correctamente coordenadas con altitudes ortométricas.
El problema es que en la práctica no hemos visto ni un único proyecto de PhotoScan con coordenadas ortométricas. Todos, y cuando digo todos quiero decir todos los archivos que nos han llegado tienen coordenadas elipsoidales, sin embargo los operadores nos aseguran que lo son.
De manera que nos hemos acercado a una empresa que dispone de una licencia y hemos hecho un estudio para aclarar las cosas de una vez por todas. De paso hemos modificado Digi3D.NET para poder asumir los tres escenarios posibles que son:
Al crear el proyecto de PhotoScan el operador ha introducido coordenadas de puntos de apoyo con altitudes elipsoidales.
Al crear el proyecto de PhotoScan el operador ha introducido coordenadas de puntos de apoyo con altitudes ortométricas indicándoselo así a PhotoScan
Al crear el proyecto de PhotoScan el operador ha introducido coordenadas de puntos de apoyo con altitudes ortométricas haciéndose pasar por elipsoidales.
La manera de trabajar correctamente con PhotoScan es la 1 o la 2, pero repito: el 100% de los proyectos de PhotoScan que han llegado a nuestras manos (mediante tickets de soporte técnico, archivos que hemos cargado vía TeamViewer en los equipos de nuestros clientes, etc.) están hechos mediante el método 3.
¿Y cual es la causa por la cual todos los modelos que vemos están por el método 3?
Pueden ser varios motivos (desconocimiento, no leer las instrucciones de PhotoScan o al menos donde se habla de los modelos de geoide, etc.), pero vamos a centrarnos en el interfaz de usuario, y el problema es que el interfaz de usuario no ayuda a localizar sistemas de referencia con alturas ortométricas como vas a comprobar a continuación:
PhotoScan tiene un cuadro de diálogo en el que podemos indicar el sistema de referencia de coordenadas de los puntos de apoyo:
Este cuadro de diálogo tiene un desplegable (titulado Sistema de coordenadas) que te permite seleccionar los últimos sistemas de referencia empleados. Si el sistema de referencia que buscas no está en el desplegable, tienes que seleccionar la opción de los tres puntos que se muestra un cuadro de diálogo de búsqueda que tiene todos los sistemas EPSG soportados por PhotoScan:
Este cuadro de diálogo no es tán versátil como el de Digi3D.NET y no te permite crear tus propios sistemas, únicamente te permite seleccionar alguno preconfigurado, y como puedes ver en la captura anterior, no hay ni un solo sistema de referencia preconfigurado con componente vertical (bueno, en realidad si que hay uno o dos que son los únicos sistemas de referencia compuestos que publica la base de datos EPSG pero que en la práctica no creo que utilice nadie).
En la captura anterior puedes ver que hemos seleccionado WGS84 / UTM Zona 30N, pero no somos capaces de seleccionar WGS84 / UTM Zona 30N + EGM2008 por ejemplo, pues no existe en la base de datos preconfigurada de PhotoScan.
Este cuadro de diálogo no tiene ningún botón del tipo «Crear mi propio sistema de referencia compuesto» de manera que no podríamos crear el sistema WGS84 / UTM Zona 30N + EGM2008, pero lo que sí que podemos hacer es importar un archivo .PRJ que defina ese sistema. Para ello, tendremos que irnos a otro programa como Digi3D.NET y crear un archivo PRJ mediante el cuadro de diálogo de Sistemas de Referencia de Coordenadas, seleccionando el sistema que nos interesa y pulsando el botón Exportar.
Una vez exportado, lo podemos importar en PhotoScan pulsando el botón de la carpeta en el cuadro de diálogo Seleccionar sistema de coordenadas y una vez importado, éste aparecerá en la sección de Sistemas de coordenadas definidos por el usuario tal y como puedes ver en la siguiente captura de pantalla:
Pero ¡aún no podrías seleccionar este sistema! pues para poderlo seleccionar, previamente tendrás que haberte descargado de la página de Agisoft el modelo de geoide EGM2008 y copiarlo en la carpeta correspondiente del programa. Una vez instalado el modelo de geoide, ya sí que puedes seleccionar este sistema personalizado tal y como puedes ver en la siguiente captura:
Como puedes comprobar, no ha sido sencillo, pero ahora PhotoScan sabrá transformar las coordenadas Z de los puntos de apoyo de ortométricas a elipsoidales, porque como he indicado al principio de este post: PhotoScan trabaja siempre en elipsoidales.
Si te quieres ahorrar los pasos anteriores y quieres trabajar bien, tendrías que transformar las coordenadas de los puntos de apoyo de ortométricas a elipsoidales antes de introducirlas en PhotoScan. Y personalmente creo que esta es la mejor opción, pues en el caso de España no utilizamos el modelo de geoide EGM2008, sino que utilizamos el modelo REDNAP Península o REDNAP Canarias que son modelos con mayor precisión para nuestro país y esos modelos de geoide no están disponibles para PhotoScan (que yo sepa).
En la práctica, no hemos visto ningún proyecto bien hecho: lo que hacen los usuarios habitualmente es buscar en el listado de sistemas de referencia el 2D (por ejemplo WGS84 / UTM Zona 30N), y como no hay mención alguna al sistema vertical, pues aceptan y dan por supuesto que la magia de PhotoScan sabrá qué hacer con esas alturas. Lo que se está haciendo entonces es engañar a PhotoScan.
El problema es que los usuarios de PhotoScan están seguros de que lo están haciendo bien y nos aseguran que están introduciendo coordenadas ortométricas. Esta afirmación tan rotunda nos hizo pensar que PhotoScan no creaba cadenas WKT correctas, e incluso creamos una entrada en este mismo blog (en la cual hoy hemos tachado unos cuantos párrafos) porque pensábamos que PhotoScan se olvidaba de poner el sistema vertical en la cadena WKT del archivo de proyecto, pero no es así. Si el usuario de PhotoScan no le engaña a PhotoScan al introducir coordenadas con altitud ortométrica, PhotoScan crea correctamente una cadena WKT para un sistema compuesto en el que se proporciona información del sistema vertical.
Sabiendo ahora que PhotoScan crea cadenas WKT correctas (es la primera vez que vemos un programa que no sea Digi3D.NET que acepta cadenas WKT de sistemas compuestos) nos encontramos con tres posibilidades:
Que la cadena WKT del sistema de referencia del archivo de PhotoScan sea compuesta. En esta caso, podemos asumir sin posibilidad de error que las alturas de los puntos de apoyo que se introdujeron en PhotoScan son ortométricas y que además se introdujeron correctamente en PhotoScan.
Que la cadena WKT del sistema de referencia del archivo de PhotoScan sea horizontal y que las coordenadas que se introdujeron tenían alturas elipsoidales.
Que la cadena WKT del sistema de referencia del archivo de PhotoScan sea horizontal y que las coordenadas que se introdujeron tenían alturas ortométricas aunque PhotoScan piensa que son elipsoidales.
Si Dig3D.NET se encuentra con un archivo de proyecto de PhotoScan del caso 1, asume que debe trabajar en coordenadas ortométricas y por lo tanto, utilizará un modelo de geoide.
Si por el contrario Digi3D.NET se encuentra con un archivo de proyecto de PhotoScan que no sea el caso 1, no tiene forma de saber si estamos en el caso 2 o en el 3 y esto es muy importante, pues si estamos en el caso 2, pero creemos que estamos en el caso 3 o viceversa, en casos como España que la diferencia de altitud elipsoidal ortométrica ronda los 50 metros, ¡tendremos diferencias de Z de 50 metros!.
De manera que hemos tenido que añadir a Digi3D.NET una opción de configuración para indicarle al programa cómo se ha comportado el operador de PhotoScan al crear el proyecto.
Esta opción de configuración la tenemos en el menú Herramientas/Configuración/PhotoScan/Coordenadas Z en proyecto haciéndose pasar por elipsoidales y tenemos dos opciones a elegir:
Si, PhotoScan piensa que son elipsoidales pero son ortométricas.
No, las coordenadas se introdujeron en PhotoScan correctamente.
¿Cómo se comporta a partir de ahora Digi3D.NET si se le indica en la configuración que el operador de PhotoScan ha introducido las coordenadas correctamente?
Si se encuentra con un archivo de proyecto con sistema de referencia compuesto, asumirá que las alturas de las coordenadas serán ortométricas y por lo tanto utilizará un modelo de geoide. La ventana fotogramétrica en este caso emitirá/recibirá coordenadas en el sistema de referencia que aparece en el archivo de proyecto y en la barra de mensajes de ésta veremos coordenadas en ese sistema (que serán habitualmente UTM con alturas ortométricas).
Si se encuentra con un archivo de proyecto con sistema de referencia horizontal, asumirá que se está trabajando con alturas elipsoidales, de manera que la ventana fotogramétrica emitirá/recibirá coordenadas geográficas (latitud, longitud, altitud elipsoidal).
¿Cómo se comporta a partir de ahora Digi3D.NET si se le indica en la configuración que PhotoScan piensa que son elipsoidales pero son ortométricas?
La ventana fotogramétrica en este caso va a trabajar de una forma especial: Va a asumir (en las operaciones matemáticas que tienen que ver con PhotoScan) que las coordenadas Z son elipsoidales, de manera que no va a utilizar en ningún caso un modelo de geoide, pero va a publicar al resto de componentes de Digi3D.NET que tiene un sistema vertical que no es elipsoidal.
Si se encuentra con un archivo de proyecto con sistema de referencia horizontal (como por ejemplo WGS84 / UTM Zona 30N) y el usuario tiene configurada la opción Herramientas/Configuración/Sistema de referencia de coordenadas/Solicitar sistema vertical para sensores a No, la ventana fotogramétrica va a comunicar al resto de componentes de Digi3D.NET que emite/recibe coordenadas en el sistema compuesto por el horizontal que aparece en el archivo de proyecto y el vertical desconocido.
Si se encuentra con un archivo de proyecto con sistema de referencia horizontal (como por ejemplo WGS84 / UTM Zona 30N) y el usuario tiene configurada la opción Herramientas/Configuración/Sistema de referencia de coordenadas/Solicitar sistema vertical para sensores a Sí, al cargar el modelo Digi3D.NET va a solicitar en un cuadro de diálogo el sistema vertical. A partir de este momento la ventana fotogramétrica va a comunicar al resto de componentes de Digi3D.NET que emite/recibe coordenadas en el sistema compuesto por el horizontal que aparece en el archivo de proyecto y el vertical seleccionado por el usuario.
Si se encuentra con un archivo de proyecto con sistema de referencia compuesto, la ventana fotogramétrica comunicará al resto de componentes de Digi3D.NET que su sistema de referencia es exactamente el compuesto que aparece en el archivo de proyecto de PhotoScan.