Archivo de la categoría: DigiNG

Nuevo menú «Modelo semántico»

 

La práctica mayoría de las funcionalidades que hemos añadido a Digi3D.NET en los últimos meses estaban enfocadas en realizar controles de calidad de la cartografía en tiempo real.

Gracias a estas funcionalidades el programa le informa de errores al operador en el mismo instante en el que digitaliza una entidad, pero no teníamos una herramienta que ejecutase esos test sobre cartografía existente.

Acabamos de añadir un nuevo menú a Digi3D.NET denominado Modelo semántico.

Este menú nos va a permitir por un lado habilitar o deshabilitar los test en tiempo de ejecución (mediante la opción Modelo semántico/Analizar modelo semántico al digitalizar entidad),  y por otro lado ejecutar test a geometrías existentes mediante el submenú Modelo semántico/Analizar modelo semántico.

Este submenú es dinámico y muestra todas las etiquetas que aparezcan en la tabla de códigos (si es que en la tabla de códigos hemos añadido alguna etiqueta a algún código).

En la captura que encabeza esta entrada puedes ver que algunos códigos tienen la etiqueta RoadTranspFeatureOnGround, otras tienen Anexo_E, etc. Si seleccionamos por ejemplo Anexo_E, se realizará un análisis de modelo semántico a todos los códigos que tengan la etiqueta Anexo_E.

Este menú además dispone de una opción denominada Por código que muestra un cuadro de diálogo que nos permite seleccionar el o los códigos de las entidades a las cuales queremos realizar un análisis de modelo semántico, y por último dispone de la opción Geometrías visibles, que realiza el análisis a las geometrías que tengamos en este momento activadas en la ventana de dibujo.

El resultado de los test se muestra en el panel de resultados como puedes ver en la siguiente captura de pantalla:

ResultadoAnalisisModeloSemantico.PNG

Los test se programan como guiones en la tabla de códigos. Lo que ves en estas capturas de pantalla son test para el proyecto MGCP. Hemos publicado el código fuente de los test para que aprendas a añadir tus propios test en nuestro repositorio de código fuente en GitHub en https://github.com/digi21/mgcp

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

https://youtu.be/OgzmmqBP-G0

 

Propiedades de la entidad seleccionada

Hasta ahora en Digi3D.NET teníamos tres herramientas para comprobar las propiedades de una entidad existente:

  • Ejecutar la orden LISTA y seleccionar la entidad. En el panel de Resultados podemos ver las coordenadas de sus vértices así como sus códigos y atributos de BBDD.
  • Tentativar la entidad con el panel Tentativos abierto. Aparecen en dicho panel todos los códigos que tenga asignada dicha entidad.
  • Ejecutar la orden EDITAR_COD y seleccionar la entidad. El programa nos mostrará los códigos de la entidad así como los atributos de BBDD que tenga asignado cada código.

Ninguna de estas opciones es productiva si queremos ver los atributos de BBDD de una entidad para tomar o no decisiones, como por ejemplo seleccionar uno u otro códigos si el atributo de BBDD «Estado de la vía» de una entidad existente tiene uno u otro valor.

Para solucionar este problema, hemos creado el panel Propiedades de la entidad seleccionada. Este panel muestra los códigos de la entidad que acabas de tentativar (independientemente del motivo por el cual has tentativando la entidad).

Muestra los códigos de la entidad y además los enlaces a BBDD de cada uno de los códigos, de manera que incrementarás exponencialmente tu productividad.

Puedes ver un ejemplo en el siguiente vídeo:

https://youtu.be/O8qhf8bGq04

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

 

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:

 

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:

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

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.