Archivo del Autor: joseangelmt

Añade inteligencia mediante guiones en tablas Digi.tab al almacenar una geometría

Estamos orgullosos de presentaros esta nueva característica (que aún está en desarrollo) que hemos añadido a Digi3D.NET: La posibilidad de programar guiones asociados a cada código en una tabla de códigos Digi.tab.xml que se ejecutarán cada vez que se almacena una geometría.

Estos guiones por ahora pueden estar programados en cualquier lenguaje de programación .NET como C#, Visual Basic.NET o Java Script, y en breve podrán programarse en Python.

Gracias a esta característica, podemos programar la guía de extracción de cualquier proyecto en la propia tabla de códigos, de manera que el operador no tenga que recordar el criterio para digitalizar o no una determinada entidad, y que sea Digi3D.NET quien lo recuerde.

Por ahora está en desarrollo y faltan cosas, como un editor de código en el programa Editor de tablas de códigos, pero ya es completamente funcional como puedes ver en el siguiente vídeo:

Panel de cambio rápido de modelos con fotos

Cambio rápido de imágenes

Acabamos de añadir a Digi3D.NET una novedad que nos va a permitir incrementar mucho nuestra productividad al trabajar con proyectos fotogramétricos creados con programas que no tienen el concepto de Modelo, como por ejemplo PhotoScan.

Históricamente el panel Proyecto Fotogramétrico (que antiguamente se denominaba panel de Cambio Rápido de Modelos) únicamente permitía cargar proyectos de programas que tenían concepto de modelo, como por ejemplo Inpho. Bien, pues acabamos de modificar este panel para que permita cargar proyectos de formatos que no tienen concepto de modelo, sino que tienen concepto de imagen.

Si cargamos un proyecto que tiene concepto de imagen como uno creado por PhotoScan, el programa detecta que el proyecto es de tipo imagen y cambia el interfaz de usuario del panel Proyecto Fotogramétrico, mostrando dos listas, una a la izquierda y otra a la derecha con todas las imágenes que forman parte del proyecto, de manera que cambiar la imagen izquierda es tan sencillo como hacer clic con el ratón en el nombre de la imagen izquierda que nos interesa, y lo mismo con la imagen derecha.

El programa no nos va a permitir seleccionar la misma imagen para las dos cámaras. Si seleccionas la misma imagen, te mostrará un cuadro de diálogo comunicándote el error.

Con este cambio, trabajar con proyectos de PhotoScan es mucho más rápido, pues no tienes que crear archivos de proyecto estereoscópico (.d3d) por cada modelo que cargues.

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

Acciones a ejecutar al seleccionar cualquier código de una tabla de códigos

Personalmente no me gustan las cajas negras, y Digi3D.NET escondía una que ha heredado por compatibilidad hacia atrás con los primeros días de Digi en MS-DOS. Hoy ha llegado el momento de cambiar eso.

¿Sabías que la orden COD no solo cambia de código sino que también realiza las siguientes acciones cuando seleccionas un código?:

  • Cambia el valor de la variable C a falso.
  • Cambia el valor de la variable S a falso.
  • Cambia el valor de la variable IR_PRINCIPIO a falso.
  • Cambia el valor de la variable Orto a falso;
  • Cambia el valor de la variable Orto_aa a falso.
  • Cambia el valor de la variable FIJA_Z a falso.
  • Cambia el valor de la variable MAXPUNTOS a 0.
  • Cambia el valor de la variable FORMATO_AUTONUM a %d.
  • Cambia el valor de la variable TIPO_DE_Z a 2.
  • Desbloquea la Z de la ventana fotogramétrica.

Esto lo hace la orden COD por código duro y no hay forma de cambiarlo. Si querías cambiar de código pero no querías que se cambiase ninguna de estas variables enumeradas anteriormente, tenías o que clonar una entidad existente o que programarte tú mismo una orden COD tal y como se explica en mi curso de programación de Digi3D.NET

Por otro lado, hace un tiempo ya añadimos a Digi3D.NET la posibilidad de que éste ejecute una serie de órdenes por el mero hecho de seleccionar un código. Puedes indicar las órdenes a ejecutar en la propiedad Ordenes (seleccionar código) en la sección Propiedades del código  de la pestaña Códigos del programa Editor de tablas de códigos.

Esto está genial, nos sirve por ejemplo para indicar que si se selecciona el código de curva de nivel se seleccione automáticamente el modo de búsqueda 12, o que por el mero hecho de seleccionar el código de árbol puntual, se ejecute la orden PUNTO_R.

Lo que no teníamos era la posibilidad de indicar que se ejecute una orden al seleccionar cualquier código, de modo que si queríamos que se ejecutase la orden MODELO_SEMANTICO=1 al seleccionar cualquier código, no podíamos, y no teníamos más remedio que añadir dicha orden a todos los códigos de nuestra tabla de códigos.

Para solucionar los dos problemas (quitar de la orden COD la lógica que cambia si o si el valor de las variables C, S, IR_PRINCIPIO, etc…) y hacer que se puedan indicar una serie de órdenes que se ejecutarán cuando el usuario seleccione cualquier código, hemos añadido una nueva pestaña al programa Editor de Tablas de códigos denominada Acciones que nos va a permitir indicar una serie de órdenes a ejecutar al seleccionar un código, y por defecto todas las tablas de códigos van a tener relleno ese campo con las siguientes órdenes:

C=0
S=0
IR_PRINCIPIO=0
ORTO=0
ORTO_AA=0
FIJAZ=0
MAXPUNTOS=0
FORMATO_AUTONUM=%d
TIPO_DE_Z=2
BLOQUEA_Z=0

y hemos eliminado de la orden COD esas acciones que se ejecutaban si o si, de modo que si no te interesa que se cambie el tipo de FORMATO_AUTONUM al cambiar de código, tan solo tienes que eliminar esa línea, o si quieres que se ejecute la orden MODELO_SEMANTICO=1, tan solo tienes que añadir esa línea.

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

 

 

Sayonara XP

Sayonara XP

Llegó el momento de decir adiós a Windows XP.

Microsoft ya se olvidó de él hace ya dos años y después de él hemos pasado por Windows Vista, Windows 7, Windows 8, Windows 8.1 y ahora Windows 10, sin embargo aún hay muchas instalaciones que lo siguen utilizando con nuestros programas. Ya es hora de renovar tanto el ordenador como el sistema operativo.

De todos nuestros programas, el único que aún  mantenía compatibilidad con Windows XP era Digi3D.NET hasta su versión 2015.43.51.0, que se publicó el día 25 de febrero de 2016 a las 12 horas, 7 minutos y 27 segundos exactamente.

Desde entonces Digi3D.NET ha crecido mucho (lo has podido comprobar en este blog), pero en su versión BETA. La versión BETA pasará a estable el próximo día 15 de julio 2016. La versión que publicaremos ese día no será compatible con Windows XP.

Como tenemos miedo de que alguien se la descargue e intente instalarla en su Windows XP (recuerda, nosotros no almacenamos copias de seguridad de los instaladores) y no tenga copia de seguridad de la versión anterior, vamos a publicar la versión 2015.44.52.0 con fecha 25 de febrero de 2016 a las 12 horas, 7 minutos y 28 segundos, es decir, con fecha de publicación un segundo después que la versión pública. Esta versión sigue siendo compatible con Windows XP, y al tener una fecha de publicación un segundo después que la anterior, es seguro que se la descargue e instale en equipos que aunque a día de hoy no tengan subscripción de soporte técnico, sí que la tuvieran el día 25 de febrero.

¿Qué modificaciones tiene esta versión que acabamos de publicar?

Dos modificaciones relativas a las actualizaciones.

  1. Al arrancar el programa mostrará un cuadro de diálogo indicando que la siguiente versión del programa que descarguemos ya no será compatible con Windows XP. Este cuadro de diálogo aparecerá cada vez que arranquemos el programa. Dispone de dos botones para cerrar el cuadro de diálogo: uno que simplemente lo cierra y otro que hace que no vuelva a aparecer (para este usuario, si cambias de usuario en la misma máquina, volverá a aparecer). De esta manera tenemos la seguridad de que el usuario se da por comunicado.

    Puedes ver una captura de pantalla de este cuadro de diálogo a continuación:

    Pérdida de compatibilidad con Windows XP

  2. Si se detecta una versión nueva pero la llave de protección activa ya no dispone de una subscripción de soporte técnico, el programa avisa de que no es seguro descargar la nueva versión pues no se podrá utilizar a menos que se adquiera una subscripción de soporte técnico o un alquiler.

    Puedes ver una captura de pantalla de este cuadro de diálogo a continuación:

    No tienes licencia para la versión a descargar
    Y esta versión es la última con soporte para Windows XP. A partir del 15/07/2016 diremos definitivamente Sayonara a Windows XP.

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: