Archivo de la etiqueta: base de datos

Añadido soporte para codificación (encoding) en los archivos DBF asociados con Shapefiles

Acabamos de añadir a Digi3D.NET soporte para almacenar la codificación con la que están almacenados los textos dentro de los archivos de base de datos .DBF asociados a los Shapfiles.

Hasta ahora el programa no almacenaba ni leía el parámetro de codificación en el archivo .DBF, de manera que era necesario indicar en la carátula de entrada la codificación con la que estaban almacenados los registros.

A partir de ahora el programa hará caso del parámetro indicado en la carátula de entrada únicamente cuando se encargue de crear el archivo de base de datos o cuando la base de datos a cargar no informe de la codificación. Si el archivo ya existe y éste informa de su codificación, Digi3D.NET utilizará como codificación la indicada en el propio archivo.

Además hemos modificado la lista de posibles codificaciones, de manera que ahora el programa es compatible con el resto de programas SIG del mercado.

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

Vistas de base de datos

Acabamos a añadir a Digi3D.NET una nueva herramienta que te va a permitir visualizar gráficamente la información de base de datos asociada a un archivo de dibujo.

Básicamente consiste en crear un archivo de referencia virtual que apunta a alguno de los archivos que tenemos cargados, pero en vez de mostrar geometrías, muestra etiquetas cuyo contenido se extrae de la base de datos.

Crear una vista de base de datos es muy sencillo, tan solo tenemos que seleccionar la opción del menú Base de datos/Crear vista de base de datos. Una vez ejecutado, el programa analiza si tenemos cargado algún archivo de dibujo con información de base de datos. Si no tenemos cargado ningún archivo con información de base de datos nos muestra un mensaje de error. En caso contrario, nos muestra el cuadro de diálogo Crear una vista de base de datos que nos va a permitir indicar de cuál de entre los archivos de dibujo que tenemos cargados con información de base de datos queremos crear la vista de base de datos.

Crear vista de base de datos

Cuando aceptamos este cuadro de diálogo, el programa crea un archivo virtual y lo carga como archivo de referencia, de manera que éste aparece en el Panel de archivos de dibujo, de manera que podemos interactuar con los parámetros que muestra el archivo en el panel.Vista de base de datos en el panel de archivos de dibujo

Como puedes comprobar, podemos especificar por un lado la tabla de la cual queremos extraer información y por otro el campo que queremos mostrar en la ventana de dibujo.

También nos permite indicar los parámetros de visualización de las etiquetas como es la altura de los textos a mostrar así como el color de fondo de la etiqueta y el color del texto.

Cada vista puede visualizar únicamente una tabla y un campo de dicha tabla, de manera que si queremos mostrar más de un tipo de etiqueta de un mismo archivo de dibujo, tendremos que crear tantas vistas de base de datos sobre el mismo archivo como tipos de etiquetas queramos visualizar.

Si te fijas en la captura de pantalla anterior, el nombre del archivo virtual generado se denomina «Vista de base de datos de: [nombre del archivo]». Cuando hayamos terminado de trabajar con la vista, podemos descargarla con la orden DEJAR o con el menú contextual que aparece al pulsar el botón derecho sobre el nombre de ésta en el panel de archivos de dibujo.

Si descargamos el archivo original la vista de base de datos no se descarga y sigue funcionando correctamente.

La vista de base de datos únicamente muestra etiquetas en los elementos de tipo punto del archivo original, de manera que si tienes otro tipo de geometrías no se mostrarán etiquetas en dichas geometrías, independientemente que éstas tengan un enlace de base de datos a la tabla especificada.

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

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:

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:

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.

 

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:

 

 

 

Busca entidades en función de sus atributos en la BBDD

Acabamos de añadir un nuevo buscador en el panel de buscadores de Digi3D.NET que te va a permitir buscar las entidades que tengan asociado algún atributo de base de datos.

Tan solo tienes que cargar un modelo con base de datos (como un archivo .shp por ejemplo) y seguir los siguientes pasos:

  1. Buscar por atributos de BBDDAbre el panel de búsqueda (menú Editar/Buscar).
  2. Selecciona el buscador Buscar por atributos de BBDD.
  3. Pulsa el botón con el icono de regenerar para que se regeneren los desplegables de Tabla y Campo.
  4. Selecciona la tabla, el campo y el valor que quieres localizar.
  5. Selecciona dónde quieres enviar el resultado de la búsqueda (Ventana de resultados 1, Ventana de resultados 2 o a la orden activa)
  6. Pulsa el botón Buscar.

La herramienta te permite buscar palabras completas, palabras dentro de los registros e indicar si deben coincidir las mayúsculas/minúsculas.

Como sabes, publicamos el código fuente de todos los buscadores en nuestro repositorio en GitHub. Puedes ver cómo programar tú mismo esta funcionalidad siguiendo el siguiente enlace: https://github.com/digi21/Buscadores/blob/master/BuscarPorCampoBBDD.cs

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

Rellenando una base de datos Access con el esquema especificado en una tabla de códigos

Hemos añadido al programa Editor de Tablas de Códigos la posibilidad de rellenar una base de datos vacía Access con la definición de las tablas especificadas en la pestaña Base de datos.

Además se crea la tabla CATDBS y se rellena con la información necesaria para que Digi3D.NET permita utilizar esa base de datos para añadir información alfanumérica.

Sigue los siguientes pasos para realizar esta tarea:

  1. Crea una base de datos Access vacía con Access (extensión .mdb).
  2. Carga en el programa Editor de Tablas de Códigos una tabla de códigos que disponga de un esquema, o en su defecto, añade tablas en la pestaña Base de datos de la tabla de códigos.
  3. Selecciona la opción del menú BASE DE DATOS/Crear tablas en una base de datos vacía Access…
  4. Selecciona la base de datos vacía que has creado en el primer paso.
  5. Pulsa el botón Abrir

Y ya lo tienes.

Puedes ver en el siguiente vídeo cómo rellenamos una base de datos con muchas tablas.

[youtube:http://youtu.be/zlJq2ex4I-w%5D