Archivo del Autor: joseangelmt

Visualizando nombres de campos de BBDD por su nombre original o por título

Si estás trabajando en Digi3D.NET con bases de datos, es posible que los nombres de los campos a rellenar en la base de datos no sean muy descriptivos.

Puedes asignar un título a los campos de base de datos en el campo Título que aparece en cada uno de los campos en la tabla activa en la pestaña Base de datos en el programa Editor de tablas de códigos.

Luego debes indicar a Digi3D.NET  (mediante la opción del menú Herramientas/Configuración/Base de datos/Nombre a mostrar) que muestre en el panel de Campos de la base de datos una de las siguientes opciones:

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

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

https://youtu.be/i9cHKzAydes

Selección automática de código en función de atributos de base de datos al cargar Shapefiles o Geomedia

Si cargas una cartografía contenida en una base de datos, como por ejemplo Geomedia o Shapefile, las coordenadas de la geometría son un campo más de entre todos los campos que tiene cada una de las tablas de la base de datos.

Por ejemplo, supongamos un shapefile denominado Via que almacena las geometrías de vías de comunicación:

En la tabla tenemos un identificador de la geometría, la geometría en sí, además de un campo en el que se almacena el número de carriles de la vía y su nombre, tal y como puedes ver a continuación…

ID Geometría* Carriles Nombre
1233 100,100,
110, 100,
2 C230
1234 200,200,
210, 200,
6 M-30
* En realidad en un shapefile las geometrías están almacenadas en el archivo .SHP y no en la propia base de datos, pero existe una relación 1 <-> 1 entre el número de registros en la base de datos y el número de geometrías almacenadas en el archivo .SHP, así que podemos asumir que lo que hay en el .SHP es un campo más de la base de datos.

Podríamos crear una tabla de códigos con el código Vias que simplemente enlace con esta tabla de base de datos. De esta manera Digi3D.NET al cargar el shapefile de vías crearía dos entidades con el código Vias, pero quizás nos interese diferenciar el tipo de vía en función del número de carriles.

Esto podemos hacerlo mediante la opción Condiciones que aparece en la sección Base de datos para cada uno de los códigos que aparecen en la pestaña Codigos del programa Editor de tablas de códigos.

Las condiciones consisten en triplas [campo][operador][valor]. Puedes utilizar los siguientes operadores:

Operador Significado
< Menor
<= Menor o igual
= Igual
>= Mayor o igual
> Mayor

Puedes poner tantas condiciones como quieras (separadas por comas), incluso puedes utilizar el mismo nombre de campo varias veces,  y se deben cumplir todas ellas para que se decida seleccionar un código.

De modo que en nuestro ejemplo tendríamos que indicar las siguientes condiciones:

Código Condición
Carretera Carriles=2
Autopista Carriles>2

Descarga los archivos con los que hemos creado el vídeo del siguiente enlace.

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

https://youtu.be/rhaCxgdf-Ac

Localización inteligente de errores en atributos en Digi3D.NET

Digi3D.NET permite añadir inteligencia a la hora de analizar los atributos de base de datos de manera que se pueden detectar condiciones incompatibles.

Esta inteligencia se puede añadir en la tabla de códigos mediante un disparador que se dispara en el momento de almacenar una entidad. El disparador se encargará de analizar todas las restricciones y de informar a Digi3D.NET que la entidad no se puede almacenar pues si algún atributo o combinación de atributos no cumple con los criterios. En caso de que el disparador informe de alguna incompatibilidad, Digi3D.NET mostrará al usuario un cuadro de diálogo que por un lado mostrará un mensaje de error (proporcionado por el disparador)  y que por otro lado permitirá al usuario corregir el problema modificando los valores de los atributos a almacenar en la base de datos.

Esta inteligencia puede estar basada únicamente en atributos o tener en cuenta las particularidades de la geometría que se está intentando almacenar o incluso de todas las geometrías existentes en el archivo de dibujo.

Por ejemplo se podría detectar como error de atributo sin tener en cuenta la geometría que se está intentando almacenar el caso de que un edificio sea de tipo religioso pero que en tipo de religión se indique desconocido.

Un error de atributo teniendo en cuenta la geometría que se está intentando almacenar podría ser el caso del atributo País en una entidad de tipo Vía de comunicación. Si la geometría está en un rango de coordenadas se puede considerar que la geometría está en España y si está en otro rango de coordenadas se puede considerar que está en Francia. Si digitalizamos una entidad cuyas coordenadas están supuestamente en España y el atributo indica que está en Francia, se puede informar al usuario como un error de atribución.

Un error de atribución que tiene en cuenta la geometría que se está intentando almacenar y las geometrías ya existentes en el archivo de dibujo podría ser el caso del atributo Tipo de un polígono de Instalación. Si el tipo es militar y dentro encontramos una pista deportiva cuya área supera un 80% del polígono de instalación se debe indicar que el atributo Tipo debe ser Deportes.

Las posibilidades son ilimitadas.

En el siguiente vídeo puedes ver estos ejemplos en acción. Si quieres hacerlo tú mismo, puedes descargarte la tabla de códigos con la inteligencia añadida, la base de datos y el archivo de dibujo del siguiente enlace: ControlAvanzadoAtributosBBDD.zip. Debes utilizar la versión de 32 bits para conectarte con la base de datos, pues es Access y por limitaciones impuestas por Microsoft, un programa de 64 bits no puede conectarse con una base de datos Access. Para conectarte con la base de datos, en la pestaña Archivo de dibujo del cuadro de diálogo Nuevo proyecto, debes indicar en Modelo de datos (en la sección Motor de importación/exportación para archivos binarios de doble precisión) la opción CATDBS y en Cadena de conexión debes pulsar el botón de los tres puntos. Eso hará aparecer el cuadro de diálogo común Propiedades de vínculo de datos. Selecciona Microsoft Jet 4.0 OLE DB Provider (que es el proveedor que proporciona conexiones con bases de datos Access) y a continuación pulsa el botón Siguente. En la pestaña  Conexión pulsa el botón de los tres puntos en «Selecciona o escriba el nombre de una base de datos». Aparecerá el cuadro de diálogo común «Seleccione la base de datos de Access». Localiza la base de datos y pulsa Abrir. Acepta el cuadro de diálogo y ya has configurado Digi3D.NET para conectarse con la base de datos cuando abras el archivo de dibujo.

https://youtu.be/Y-03cQfe6cw

 

Digitaliza en una Ortofoto + DSM en 3D estereoscópico mediante el sensor Ortofoto Estereoscópica

Cada vez se recurre más a la opción de digitalizar cartografía 3D a partir de una ortofoto y de un DEM obtenido mediante Lídar.
La digitalización es 3D, pero el operador no ve lo que está haciendo en 3D, porque lo que visualiza es una ortofoto.
Digi3D.NET soluciona este problema mediante su sensor Ortofoto Estereoscópica que crea un modelo estereoscópico virtual al vuelo permitiendo al operador digitalizar en 3D estereoscópico objetos que serían muy difíciles de digitalizar visualizando una ortofoto.
Este es un modelo sintético y el operador puede indicar el factor de exageración vertical que quiere para incrementar o disminuir la sensación estereoscópica. La ortofoto puede haber sido obtenida por cualquier sensor: da igual que sea una ortofoto de una imagen satelital o una imagen cónica, etc. Y el DSM puede estar en cualquier formato: .LAS, .TIF, etc…
Esta solución añade «libertad estereoscópica» a la hora de digitalizar sobre una ortofoto imitando un modelo estereoscópico, pero obviamente siempre tendrás más precisión si dispones de un modelo estereoscópico real de la zona.
En el siguiente vídeo puedes ver este sensor en acción:

https://youtu.be/mHWjKjkZKtI

No pierdas el norte

El otro día un operador nos contó que cuando crean un proyecto fotogramétrico con la intención de utilizar la funcionalidad de cambio automático de modelos, rotan 180 grados las imágenes de pasadas impares, modifican el giro de kappa esas fotos en el archivo de aerotriangulación y luego crean los modelos de esas pasadas al revés, es decir, en vez de cargar el modelo 1-2, cargan el 2-1.

De esta manera evitan que se cambie el sentido del modelo si el cambio automático de modelos cambia a un modelo de otra pasada.

La verdad es que no habíamos pensado en este inconveniente, así que hoy hemos añadido una nueva funcionalidad a Digi3D.NET que realiza esta tarea de forma automática por nosotros.

Básicamente calcula la diferencia en grados entre el norte del modelo que tenemos cargado y el norte del modelo que se va a cargar. Si la diferencia es superior a un valor (que se puede configurar en Herramientas/Configuración/Proyecto fotogramétrico/Umbral para invertir modelo), el programa rotará automáticamente 180 grados ambas imágenes y además intercambiará los ojos izquierdo y derecho, de manera que veremos el modelo como si estuviera volado al revés y así no perderemos el norte.

Puedes deshabilitar esta nueva característica mediante la opción Herramientas/Configuración/Proyecto fotogramétrico/Invertir modelos para mantener norte.

A continuación un vídeo en el que te mostramos esta nueva funcionalidad:

 

El mundo es en 3D, pero nadie se acuerda del sistema de referencia de coordenadas vertical (si, el de la coordenada Z)

Digi3D.NET es puramente 3D, y desde el momento en el que empezó a solicitar al usuario Sistemas de Referencia de Coordenadas, siempre ha solicitado sistemas 3D. Lo tienes todo muy bien explicado en la página de Sistemas de Referencia de Coordenadas de la ayuda online.

Además Digi3D.NET carga de forma nativa proyectos creados por otros programas como Inpho o PhotoScan. Personalmente me encantan ambos formatos (quizás más el de PhotoScan), entre otras cosas porque indican el Sistema de Referencia de Coordenadas de las orientaciones que contienen (punto número 1) y además, lo hacen de una manera estándar, utilizando cadenas Well Known Text, que es como se tiene que hacer (punto número dos), pero ambas adolecen de lo mismo:

Se olvidan de la coordenada Z

No se yo qué les habrá hecho la pobre coordenada Z, pero siempre se olvidan de ella…

Primero sucedió con el sensor Digi3D.RPC, que es el que se encarga de trabajar con sensores satelitales. Una empresa nos solicitó la posibilidad de cargar aerotriangulaciones realizadas con Inpho en UTM (la verdad es que no me imaginaba que se pudieran realizar orientaciones RPC en UTM, pero si, olé por los desarrolladores de Inpho, porque eso funciona y bien), pero en los archivos del proyecto, no existía la componente vertical. Lo solucionamos solicitando al usuario el SRC vertical en caso de que al cargar proyectos satelitales de Inpho no apareciera en la cadena WKT la componente vertical.

En realidad en este caso no era tan importante, porque a las fórmulas de RPC le dan igual las coordenadas Z; da igual si están en elipsoidales o en ortométricas, no hay ninguna exigencia, sin embargo decidimos solicitar eso al usuario por si realizaba alguna transformación a otro sistema, para saber dónde están las cosas de verdad.

En el caso de PhotoScan además es peor, porque para poder trabajar con ese formato, hay que transformar sí o sí a coordenadas geocéntricas, y para transformar a coordenadas geocéntricas hay que utilizar siempre coordenadas Z elipsoidales, de modo que si las coordenadas de las orientaciones son ortométricas, digo yo que habrá que saber el sistema de referencia de coordenadas vertical en el que están ¿no?

Podrían estar perfectamente en EGM2008, o en EGM96 o REDNAP08 o Nivel medio del mar en Alicante, o lo que sea. Además, quizás las coordenadas Z estén medidas en millas o en pies o en micras, o en milímetros… ¿Quién sabe?

EDICIÓN EL dÍA 27/2/2019: PhotoScan sí que trabaja con sistemas de referencia verticales tal y como se explica en https://blog.digi21.net/2019/02/26/modificacion-en-el-modulo-de-carga-de-archivos-de-photoscan/

Digi3D.NET no hace jamás ninguna suposición, no tiene ninguna caja negra que tome una decisión por el usuario, así que hemos añadido también en el sensor Digi3D.ConicSensor, que es el encargado de cámaras cónicas la misma solución que en el caso del sensor satelital: Ahora el programa solicita el SRC vertical en caso de que el archivo de aerotriangulación que estés cargando proporcione uno pero que sea en 2D.

En el siguiente vídeo puedes verlo en acción:

Nota acerca de los drivers de NVidia

Esta semana llegó la fecha límite para actualizarse a Windows 10 y muchos os habéis decidido a hacerlo en el último momento.
Nos han llegado estos días múltiples solicitudes de soporte técnico porque Digi3D (tanto versiones antiguas como .NET y BETA) se comportan de manera extraña: Las imágenes se mueven con a tirones, el driver de NVidia dice que el programa ha solicitado más memoria de la disponible (cuando la tarjeta tiene prácticamente 1GB libre), ordenadores que de repente se paralizan unas décimas de segundo, continúan trabajando y se paralizan otra vez, y así en un bucle sin fin….

El problema no es ni de Digi3D ni de Windows 10 (que es según mi opinión personal el mejor sistema operativo que ha hecho Microsoft), sino de los drivers de NVidia.

NO instaléis el driver versión 386.96 (el último a día de hoy). No funciona bien. Instalad la versión 353.62 y se solucionarán estos problemas.

En el siguiente vídeo podéis ver cómo descargar de la página de NVidia versiones anteriores de los drivers.

Comandos de voz

¿Te gustaría utilizar la voz para ordenarle a Digi3D.NET que realice cualquier tarea como cambiar de código, cerrar la entidad que estás dibujando, ejecutar una macroinstrucción, etc.?

Pues ya puedes gracias a la nueva funcionalidad de reconocimiento de voz que hemos añadido a Digi3D.NET.

Por un lado hemos añadido la pestaña Reconocimiento de voz al programa Editor de Tablas de Códigos de Digi3D.NET.

En esta pestaña puedes añadir comandos de voz y una orden a ejecutar. Para añadir más de un comando de voz a una misma orden, puedes hacerlo separando con puntos y coma los distintos comandos de voz, o puedes añadir tantas entradas como quieras que ejecuten la misma orden.

En la captura de pantalla que encabeza esta entrada del blog puedes ver que hemos indicado que se ejecute la orden COD=020123 cuando el usuario diga por el micrófono del ordenador:

  • fina.
  • curva fina.
  • intermedia.
  • curva de nivel intermedia.
  • curva intermedia.

En Digi3D.NET hemos añadido la variable booleana RECONOCER_VOZ (accesible también desde la opción  del menú Inmediato/Reconocer voz o mediante la barra de herramientas Reconocimiento de voz) que cuando está activa reconoce todo lo que digamos por el micrófono del ordenador.

Puedes configurar el nivel de confidencia con el que se aceptan las palabras en el menú Herramientas/Configuración/Reconocimiento de voz/Confidencia. Mientras mayor sea el valor indicado ahí con mayor precisión estaremos obligando al programa a reconocer nuestra voz. El valor por defecto es 0.6.

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

Macroinstrucciones en el archivo de tabla de códigos

Hace años (año 2011) hicimos un primer paso para poder eliminar los archivos de macroinstrucciones (comúnmente llamados arrobas) del directorio de tablas: cuando modificamos el formato de la tabla de asignación de teclas para permitir asignar más de una orden a una pulsación de tecla.

Hoy presentamos un nuevo paso para conseguir eliminar estos archivos: Hemos añadido la posibilidad de crear macroinstrucciones dentro de las tabla de códigos Digi.tab.xml.

Puedes crearlas manualmente en la nueva pestaña Macroinstrucciones o puedes importar todos los archivos de macroinstrucciones que tengas en un directorio mediante la opción del menú Macroinstrucciones/Importar macroinstrucciones de un directorio… en el programa Editor de Tablas de Códigos de Digi3D.NET.

Si cargas en Digi3D.NET una tabla de códigos que tenga macroinstrucciones, cuando intentas ejecutar una macroinstrucción (recuerda que son órdenes cuyo nombre comienza siempre por @), el programa intenta localizar la definición de la macroinstrucción en la tabla de códigos. Si no la encuentra, intentará localizarla como un archivo externo en el directorio de tablas, de manera que no se ha perdido compatibilidad hacia atrás, pero se da prioridad a la nueva funcionalidad.

Con esto conseguimos tener tres archivos a copiar en caso de que tengamos que cambiar de ordenador:

  1. Archivo de tabla de códigos.
  2. Archivo de configuración de teclas.
  3. Archivo de menú (si es que tienes uno).

En vez de estos tres archivos más todos los archivos de macroinstrucciones que tuvieras en tu directorio de tablas.

El siguiente paso en esa unificación será hacer que el archivo de menú se incorpore a la tabla de códigos.

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

 

Mejoras en el sensor de la cámara A3 (VM-QuasiPanoramic)

Hemos mejorado el sensor A3 en Digi3D.NET, haciendo que se calculen automáticamente orientaciones epipolares al cargar un modelo, de manera que ahora no es necesario girar manualmente las imágenes 90 o 270 grados.

Puedes deshabilitar esta opción en el menú Herramientas/Configuración VM Quasi-Panoramic/Activar epipolar por defecto.

Por si no lo sabías, el sensor A3, fabricado por una empresa llamada VisionMap es una cámara que pendula según se mueve el avión, y tras un procesado de la imagen que recuerda al de los sensores ADS de Leica, permiten crear modelos enormes.

Puedes ver un vídeo de esta nueva funcionalidad a continuación: