Archivo del Autor: joseangelmt

Solucionando problemas con los Sistemas de Referencia de Coordenadas colombianos

El viernes pasado comenzaron a trabajar en una entidad de Colombia con modelos del sensor ADS40 en Digi3D.NET.

El sensor ADS40, trabaja en el sistema de referencia de coordenadas EPSG:4979 tal y como se explica en esta página de la ayuda de Digi3D.NET, sin embargo la cartografía la quieren registrar en el sistema de referencia de coordenadas MAGNA-SIRGAS / Colombia West zone.

En un principio, tan solo tenemos que indicar al crear el archivo de dibujo que el sistema de referencia de coordenadas horizontal es MAGNA-SIRGAS / Colombia West zone, pero al cargar cartografía existente nos indicaron que las coordenadas X e Y estaban intercambiadas.

Con versiones modernas de Digi3D.NET la solución es muy sencilla, tan solo tenemos que indicarle a Digi3D.NET que los ejes los queremos como Este/Norte, y que haga caso omiso a lo que se indica en la base de datos EPSG, tal y como se muestra en la siguiente captura de pantalla:

ejes en src proyectados

…pero desafortunadamente el cliente tiene instalada una versión que no permite forzar la orientación de los ejes, así que los sistemas de referencia de coordenadas se crean siempre de forma estándar, y el estándar tal y como te voy a mostrar un poco más adelante indica que primero va la coordenada Y, y a continuación la coordenada .X.

Lo primero que se nos ocurrió fue comprobar los ejes del sistema MAGNA-SIRGAS / Colombia West zone en Digi3D.NET. Para ello, abrimos el panel Archivos de dibujo y pulsamos con el botón derecho del ratón en el archivo de dibujo y seleccionamos la opción Mostrar sistema de referencia de coordenadas horizontal…, lo que hizo aparecer el cuadro de diálogo Parámetros del sistema de referencia de coordenadas horizontal que te muestro a continuación:

Parámetros del SRC Magna-Sirgas

Estos parámetros salen de la base de datos EPSG que lleva incluida Digi3D.NET en su instalación, y se puede ver claramente que en Tipo de sistema de coordenadas se indica que los ejes son Norte, Este (viene en inglés), y no Este, Norte. En realidad, tal y como se puede ver en el vídeo al final de esta entrada en el blog, ese texto “Cartesian 2D CS. Axes: ….” no lo crea dinámicamente Digi3D.NET, sino que se extrae como un texto que aparece en la base de datos. Para ver bien el orden de los ejes, podemos consultar la cadena WKT que crea Digi3D.NET para ese sistema de coordenadas:

PROJCS["MAGNA-SIRGAS / Colombia West zone",
GEOGCS["MAGNA-SIRGAS",
DATUM["Marco Geocentrico Nacional de Referencia",
SPHEROID["GRS 1980",6378137,298.257222101,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6686"]],
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
UNIT["grados",0.01745329251994328,AUTHORITY["EPSG","9122"]],
AXIS["Lat",North],AXIS["Long",East],AUTHORITY["EPSG","4686"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",4.596200416666666],
PARAMETER["central_meridian",-77.07750791666663],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",1000000],
PARAMETER["false_northing",1000000],
PARAMETER["semi_major",6378137],
PARAMETER["semi_minor",6356752.314140356],
UNIT["metros",1,AUTHORITY["EPSG","9001"]],
AXIS["N",North],
AXIS["E",East],
AUTHORITY["EPSG","3115"]]

El usuario allí nos asegura que en el sistema MAGNA-SIRGAS / Colombia West zone la primera coordenada es la X, y la segunda es la Y, de modo que algo debe estar haciendo mal Digi3D.NET, o no. Vamos a analizarlo…

Si creas una cuenta en http://epsg.org/ y te descargas el dataset, verás que distribuyen la base de datos como una base de datos Microsoft Access. Digi3D.NET no puede utilizar un base de datos en formato Microsoft Access porque los programas de 64 bits tienen prohibido acceder a este tipo de bases de datos, así que hace años convertimos esa base de datos en una base de datos Microsoft SQL Server Compact, que tiene la característica de que sí que se puede acceder desde programas de 64 bits (y de 32 bits obviamente). Estas bases de datos tienen extensión .sdf y existen varias versiones. La que se instala con Digi3D.NET es la última versión, la 4.0.

El instalador de Digi3D.NET almacena esta base de datos en la carpeta %ProgramData%\[versión del programa]\OpenGis y tiene como nombre: epsg_es_ES.sdf si nuestra instalación es en español o epsg_en_US.sdf si nuestra instalación es es inglés.

Podemos abrir archivos .sdf versión 4.0 con una herramienta gratuita de Microsoft denominada Microsoft WebMatrix 3.0.

Instala el programa y sigue los siguientes pasos:

  1. Ejecuta el programa Microsoft WebMatrix. Te mostrará una página inicial con tres botones:  My sites, New y Open.
  2. Pulsa el botón Open. Aparecerá un menú contextual con varias opciones.
  3. Selecciona la opción Folder en el menú contextual. Aparecerá un cuadro de diálogo para seleccionar la carpeta a abrir.
  4. Selecciona la carpeta en la que está la base de datos EPSG y pulsa aceptar. Comprobarás que aparecen en el panel lateral izquierdo los archivos disponibles en dicha carpeta, entre ellos el archivo .sdf.
  5. Haz doble clic en el archivo .sdf. Comprobarás que cambia el menú y te muestra iconos relacionados con base de datos.
  6. Pulsa el botón New Query (nueva consulta). Se creará una ventana que te va a permitir teclear consultas SQL.
  7. Copia la siguiente consulta SQL y pulsa el botón Execute:
    SELECT * FROM [Coordinate Reference System] WHERE [COORD_REF_SYS_CODE]=3115

    Comprobarás que aparecen abajo los parámetros del sistema de referencia de coordenadas MAGNA-SIRGAS / Colombia West Zone. Entre ellas el código del sistema de coordenadas asociado, que es 4500.

  8. Ahora vamos a ver los ejes del sistema de coordenadas 4500, Para ello teclea la siguiente consulta:
    SELECT * FROM [Coordinate Axis] WHERE COORD_SYS_CODE=4500

    Comprobarás que aparecen dos ejes: El eje E y el eje N. En un principio aparece en el orden en el que le interesa al usuario, es decir, primero la coordenada X (este) y luego la coordenada Y (norte), pero en bases de datos el orden en el que aparecen los registros no vincula nada, quizás esta misma consulta con otro sistema de gestos de bases de datos muestre a información en otro orden. Los señores del EPSG lo saben, por eso añadieron un campo denominado ORDER en la tabla COORD_SYS_CODE, y si te fijas, el orden está mal: En el eje Este aparece un 2 y en el eje Norte aparece un 1.

    De hecho, Digi3D.NET no utiliza la consulta SQL que te he indicado en este paso para averiguar el nombre de los ejes, sino que utiliza la siguiente:

    SELECT * FROM [Coordinate Axis] WHERE COORD_SYS_CODE=4500 ORDER BY [Order]
    

    Si la ejecutas, comprobarás que el primer eje es el Norte y el segundo el Este. Esta es la causa por la cual Digi3D.NET está creando los ejes de forma incorrecta. En la base de datos EPSG viene mal. Vamos a solucionarlo.

  9. Tenemos que cambiar el valor de ORDER de los registros 44 (el registro para el eje Norte del sistema de referencias 4500 que representa el eje Norte) y cambiar el valor a 2, y poner un valor 1 en el registro 43 que representa el eje Este para el sistema de coordenadas 4500.
    Para ello ejecutaremos las siguientes consultas SQL:

    UPDATE [Coordinate Axis] SET [ORDER]=1 WHERE COORD_AXIS_CODE=43
    UPDATE [Coordinate Axis] SET [ORDER]=2 WHERE COORD_AXIS_CODE=44
    

y asunto solucionado.

Puedes ver cómo lo hago en el siguiente vídeo:

 

 

 

 

 

 

Seleccionando archivo de proyecto de PhotoScan

Carga nativa de archivos de proyecto de PhotoScan (Agisoft)

Acabamos de añadir a Digi3D.NET la posibilidad de cargar de forma nativa archivos de proyecto de PhotoScan, de manera que ya se pueden restituir modelos procesados por este software.

Tan solo tienes que indicar la ruta al archivo .xml en el campo Archivo de aerotriangulación  en las propiedades del sensor Cónico (estereoscópico) al crear un modelo en el cuadro de diálogo Nuevo proyecto.

Este archivo proporciona tanto las orientaciones, como la calibración de las cámaras utilizadas en el proyecto así como el sistema de referencia de coordenadas en el que trabajar.

De esta manera Digi3D.NET carga de forma nativa proyectos de aerotriangulación de los siguientes programas:

  • AeroOffice
  • DVP
  • EspaKernel
  • Centros de proyección y giros (PatB, Bingo, etc)
  • Inpho
  • LPS
  • PatB (archivos .ori)
  • PhotoScan
  • Summit Evolution

Puedes ver cómo cargar un modelo de un archivo de PhotoSan en el siguiente vídeo:

Agrupando grupos de atributos de BBDD en Digi3D.NET

Si estás creando cartografía con Digi3D.NET y las geometrías tienen información de base de datos, es posible que la cantidad de atributos a mostrar sea muy grande.

Es posible que te interese agrupar los distintos campos en función de algún criterio, y que los atributos agrupados únicamente sean visibles cuando lo indique el usuario.

Acabamos de añadir a Digi3D.NET la posibilidad de indicar en los nombres de los campos (que aparecen en el esquema de base de datos en el Editor de Tablas de Códigos) un nombre (opcional) de grupo. Los campos que tengan un grupo asociado se agruparán en un nodo con dicho nombre en los paneles y cuadros de diálogo que muestran campos de base de datos.

Digitab mostrando el campo Grupo en los atributos de un esquema de bbdd

En las siguientes capturas, puedes ver el panel de Campos de la base de datos mostrando los atributos de la tabla AAA010. Puedes comprobar que aparece un grupo denominado Comunes. Por defecto Digi3D.NET muestra los grupos cerrados. Es responsabilidad del usuario abrir el grupo que le interese. Los campos que no tienen asociado un grupo se muestran siempre.

De esta manera reducimos el número de atributos visibles por parte del usuario y dejamos visibles el 100% de las ocasiones los atributos que va a modificar habitualmente. Los atributos que no varían (o que lo hacen en muy pocas ocasiones) aparecen dentro del grupo Comunes, de manera que no molestan al usuario.

Puedes ver esta nueva funcionalidad en el siguiente vídeo:

 

Panel Propiedades de la entidad seleccionada

Acabamos de añadir a Digi3D.NET un nuevo panel que te va a ayudar al digitalizar geometrías con información de base de datos.

Este panel (que puedes hacer aparecer mediante la opción del menú Ventana/Propiedades de la entidad seleccionada) muestra el código o los códigos de la entidad que acabas de seleccionar (independientemente del motivo de la selección) y su información asociada de base de datos. Nos va a servir para ver rápidamente los atributos de BBDD que tiene una determinada entidad.

No muestra un histórico de códigos de entidades seleccionadas como el Panel de Tentativos, sino que siempre muestra los códigos de la última entidad seleccionada. Si la entidad tiene un único código, te mostrará en el listado superior únicamente ese código. Si la entidad tiene más de un códigos, te mostrará en la parte superior todos sus códigos.

Si seleccionas un código (por defecto Digi3D.NET seleccionará automáticamente por ti el primer código de la entidad según la tentativas/seleccionas), y este código tiene enlace a base de datos, en la parte inferior se mostrarán los valores de los campos almacenados en la base de datos para el registro al que apunta el código. Esto es así únicamente si estás conectado con base de datos.

¿Cómo conectarme con una base de datos?

Si estás trabajando con un archivo de dibujo .bin o .bind, rellenando los campos Modelo de datos y Cadena de conexión en la pestaña Archivo de Dibujo del cuadro de diálogo Nuevo proyecto.

Si estás trabajando con archivos Shapefile o con archivos de Geomedia, no tendrás que hacer nada, por el mero hecho de cargar archivos, ya tienes asociada su base de datos.

Puedes ver este nuevo panel en el siguiente vídeo:

 

 

 

Carga nativa de orientaciones RPC de archivo NITF

Acabamos de añadir a Digi3D.NET la posibilidad de cargar de forma nativa imágenes satelitales en formato NITF.

Esta imágenes incorporan como metadatos dentro del propio archivo .NITF los parámetros de los polinomios RPC que definen la orientación de la imagen, de manera que no es necesario rellenar los campos de Archivo de orientación RPC en la pestaña Sensores fotogramétricos del cuadro de diálogo Nuevo Proyecto. Con indicar la ruta a los archivos RPC ya es suficiente.

De esta manera, Digi3D.NET es capaz de cargar de forma nativa los siguientes formatos de orientaciones satelitales:

  • Ikonos
  • Inpho
  • Isd
  • Lps
  • Nitf
  • Pleyades
  • SocetSet
  • Summit Evolution

Puedes ver esta nueva funcionalidad en el siguiente vídeo:

 

 

Mejoras en la personalización de campos de BBDD

Si trabajamos en Digi3D.NET con bases de datos, al seleccionar un código asociado a una tabla de base de datos se muestran los campos de dicha tabla en el panel de Campos de la base de datos tal y como puedes ver a continuación:

Panel campos de la base de datos

En las primeras versiones del programa se mostraba el nombre del campo en la tabla, pero como el nombre puede ser algo poco descriptivo como FUN o WID por ejemplo, añadimos la posibilidad de indicar en el Editor de Tablas de códigos:

Título en los campos de BBDD en DigiTab

…e hicimos que Digi3D.NET por defecto mostrase ese título en los campos de las tablas en el panel de Campos de la base de datos, haciendo que ya no apareciera el nombre original del campo.

El problema es que no siempre llueve a gusto de todos, y nos han solicitado la posibilidad de mostrar el nombre del campo y no el título, así que hemos añadido en la configuración del programa una nueva sección denominada Base de datos con un único parámetro de configuración denominado Nombre a mostrar. Este parámetro tiene tres posibles valores:

  • Nombre
  • Título
  • Nombre y título

De esta manera se mostrarán los campos en el formato que más te interese.

Puedes ver esta nueva funcionalidad en el siguiente vídeo: