Dominios y Subtipos en Geodatabase En el ámbito de los Sistemas de Información Geográfica podemos concretar dos tipos de validación de los datos geográficos y alfanuméricos, por un lado la validación Topológica (en las relaciones entre los objetos espaciales) y por otro la validación temática (en los atributos). En este artículo vamos a concretar un poco como se puede llevar a cabo un tipo de validación temática o de los atributos introducidos en una Geodatabase, mediante Subtipos y Dominios. Vamos a definir un poco qué es un Subtipo y qué es un Dominio. Definiciones: Subtipo: subdivisión de una clase de entidad (Feature Class) en distintos “tipos” válgame la redundancia, con características diferenciadoras y que nos permitirá digitalizar de forma separada. Además podremos incluirle dominios a cualquier campo que cumpla unas determinadas especificaciones para admitir dominios, y que nos permitirán ingresar en dichos campos valores válidos de dichos atributos o características. Los subtipos se implementan creando valores de código y son asociados a campos de tipo Short Integer o Long Integer. Dominio: rango de valores, ya sean alfanuméricos, o numéricos entre los que se mueve un atributo de un determinado campo de una Clase de Entidad (Feature Class). Este tipo de dominio puede ser de tipo RANGO o de tipo VALORES CON CÓDIGO como veremos a continuación. Este tipo de validación temática mediante subtipos o dominios podrá ser usada de forma independiente, o bien combinándolos para un mayor rendimiento de trabajo así como una mayor personalización de nuestra base de datos geográfica, como veremos a continuación. Llegados a este momento nos preguntaremos, ¿y cómo puedo implementar yo en mi proyecto este tipo de validaciones temáticas a mis bases de datos geográficas – geodatabases? Pues vamos a poner varios ejemplos que nos permitirán materializar los conceptos vistos hasta ahora. Pasos previos: 1. Crear una Geodatabase Personal o de Fichero. Para ello abrimos ArcCatalog. a. Inicio – Todos los Programas – ArcGIS – ArcCatalog. b. Una vez abierto pulsamos creamos un directorio de trabajo por ej. C:\Datos y creamos en su interior nuestra Geodatabase pulsando botón derecho del ratón sobre ese directorio New – Personal Geodatabase, creando por tanto un fichero de extensión (*.mdb – Microsoft Database – Access para el caso de una Geodatabase Personal). Fig. 1. Creación de una Geodatabase Personal desde ArcCatalog. A continuación vamos a realizar un caso supuesto donde tenemos que digitalizar una red de abastecimiento de agua y donde tenemos los siguientes elementos: - Tipos de Redes: o Red Principal o Red Secundaria Estos dos tipos de redes nos van a marcar los SUBTIPOS en los que podremos dividir nuestra base de datos, en este caso, nuestro Feature Class o Clase de Entidades. Para ello vamos a crear un Feature Class que contendrá la Red de Abastecimiento de Agua. Para ello vamos a ArcCatalog, a nuestra Geodatabase personal que creamos en el paso previo, y pulsamos botón derecho del ratón – New Feature Class, y le especificamos los parámetros Nombre y Alias, el Tipo de Entidad, Sistema de Referencia Espacial en mi caso ETRS89 UTM30 Norte, XYTolerance (dejo por defecto los valores), y llegados a la ventana de introducción de los campos creamos un campo que contendrá los subtipos denominado Tipologia, y será de tipo Short Integer (ya que no vamos a almacenar demasiados subtipos, sino tan sólo dos). Aquí podemos apreciar algunas de las ventanas que se han usado: Fig. 2. Creación de una Feature Class en nuestra Geodatabase desde ArcCatalog. Fig. 3 - 4.. Especificación de los parámetros de la Feature Class. A continuación aceptamos y ya tenemos tene nuestra Feature Class lista para ara aplicar los SUBTIPOS que creamos oportuno,, en nuestro caso Red Primaria y Red Secundaria. Para ra ello vamos a nuestra Feature Class y seleccionamos seleccionamos con el botón derecho del ratón Propiedades – Subtipos. Fig. 5. Propiedades de la Feature Class – RedAbastecimiento. Abastecimiento. Una vez estamos en las propiedades seleccionamos la pestaña SUBTIPES (Subtipos) y ahí vamos a ir especificando cada SUBTIPO. SUBTIP Para ello proseguimos el siguiente modo: 1. Seleccionamos en Subtype Field: el campo que antes habilitamos para contener los subtipos, en este caso el Tipo de Red de Abastecimiento. 2. En Default Subtype aún no tenemos ninguno, dado que no hemos delimitado de ningún tipo de red. 3. Vamos a Subtypes y asignamos el Código (Code) y la Descripción (Description) de cada subtipo, del modo en que aparece en la ilustración: Fig. 5. Definición de Subtipos en ArcCatalog para una Feature Class. Como podemos apreciar ya sí tenemos un Subtipo por defecto que podremos podremos modificar en el desplegable, y si nos fijamos en cada uno de esos subtipos podremoss especificar un Dominio para poder introducir valores válidos, valga la redundancia en nuestra nuestra base de datos geográfica, pero por ahora lo dejaremos así, y más adelante procederemos a su relleno. relle Por ahora sólo tenemos que ir a ArcMap, tras aceptar todos los cambios realizados en nuestra Feature Class y agregamos dicha Feature Class a ArcMap. Procederemos del siguiente modo: 1. Abrimos ArcMap en Inicio – Todos los Programas – ArcGIS –ArcMap ArcMap o desde el mismo ArcCatalog pulsamos el icono ArcMap o Tools – ArcMap. 2. Pulsamos Add Data y buscamos en C:\Datos\Abastecimiento\\ nuestra Feature Class llamada RedAbastecimiento, o la arrastramos desde ArcCatalog. 3. Si no hemos asignado una Referencia Espacial y Proyección nos arrojará un mensaje diciendo que los datos no disponen de información relativa a la proyección, pero podemos obviar este mensaje. Veremos que directamente tenemos los subtipos divididos en dos colores, con lo cual es una primera muestra de que nuestro proceso ha ido bien. Fig. 6. Tabla de contenidos que nos muestra nuestros subtipos en la Red de Abastecimiento desde ArcMap. 4. Una vez tenemos nuestra Feature Class Red de Abastecimiento vamos a comenzar la edición para comprobar que se ha cumplido nuestro cometido, crear un tipo de validación por Subtipos. Para ello pulsamos Editor – Start Editing (Comenzar Edición) y vamos a Target y veremos que se nos muestra dividida nuestra Feature Class mediante una cruz desplegable pudiendo seleccionar cualquiera de ellos para editar. Vamos a continuar un poco con nuestra validación. A continuación realizaremos lo mismo pero para los DOMINIOS. Como comentábamos anteriormente los dominios se podrían considerar como los atributos que nosotros vamos a introducir pero que cumplen con unas premisas, y es que van a ser sólo los valores válidos que habremos predeterminado y que no nos van a permitir introducir valores erróneos en los campos de nuestra geodatabase. En nuestro caso los valores válidos por ejemplo podrían ser:1 el diámetro de la red y será de tipo Range y Short Integer. Para la Red Principal: Diámetro de 50 a 100 centímetros. Para la Red Secundaria: Diámetro de 25 a 50 centímetros. Para crear un DOMINIO tenemos distintas alternativas, pero la más sencilla es crearlos desde la Geodatabase propiamente dicha en ArcCatalog, aunque tenemos otras posibilidades como son la importación desde tablas (en ArcToolbox – Data Management Tools – Domains). El proceso es el siguiente: 1 En este ejemplo vamos a incluir un Dominio que bien puede ser diferente al que se generaría en un proceso real, por lo que el dominio que aquí se incluye se muestra sólo a título informativo. Para incluir los dominios anteriormente citados vamos a proseguir con nuestra geodatabase. 1. Cerramos ArcMap para no provocar conflictos con nuestra Geodatabase. 2. Vamos a ArcCatalog y en nuestra Geodatabase, en la raíz de la misma, vamos a las propiedades pulsando botón derecho del ratón – Propiedades y ahí a la pestaña dominios. Fig. 7. Propiedades de la Geodatabase y la pestaña Domains (Dominios). 3. Una vez estamos en la pestaña Domains (Dominios), vamos a incluir los valores que nos permitirán validar e introducir los valores válidos de nuestros atributos de Diámetro, el campo que a continuación vamos a crear en nuestra Feature Class para que contenga esos valores válidos. Esto lo haremos para ambos sutbipos por lo que creamos dos dominios distintos. 4. En la pantalla que se muestra en la parte derecha de la figura 7 vemos que aparecen los siguientes elementos (de los cuales sólo nos hará falta rellenar los que detallo a continuación): a. Domain Name (Nombre del Dominio): Por ejemplo Diámetro. b. Description (Descripción del Dominio): Diámetro de la Red de Abastecimiento por Subtipos. c. Field Type (Campo del Subtipo): será en principio Short Integer. d. Domain Type (Tipo de Dominio): Range. e. Minimum Value (Valor Mínimo): para la Principal 50, para la Secundaria 25. f. Maximum Value (Valor Máximo): para la Principal 100, para la Secundaria 50. g. El resto de parámetros se puede dejar tal y como está. Quedaría del siguiente modo: Fig. 8. Dominios para cada subtipo referidos al Diámetro de la Red de Abastecimiento. A continuación aceptamos y vamos a nuestra Feature Class donde creamos un campo denominado DIÁMETRO y de tipo Short Integer para que sea del mismo tipo que el dominio antes creado (este proceso puede ser inverso, y crear primero el campo pero siempre deberán ser del mismo tipo, ya que sólo nos mostrará los dominios permitidos para este tipo de campos). Para ello vamos a nuestra Feature Class (RedAbastecimiento) pulsamos botón derecho del ratón Propiedades y ahí vamos a la pestaña Fields. En esta pestaña crearemos un campo con el nombre Diámetro y de tipo Short Integer y en la parte inferior veremos que tenemos para seleccionar el dominio correspondiente, pero en nuestro caso debemos ser cuidadosos, porque si asignamos en este lugar el dominio estaremos sesgando los resultados que deseamos obtener y asignando un dominio a toda la Feature Class y no sólo a los subtipos por separado. Para asignar el dominio a cada subtipo debemos ir a la Pestaña Subtypes (Subtipos) y asignarlos a cada uno de éstos tal y como se muestra a continuación: Fig. 9. Creación del campo de Diámetro que contendrá los valores válidos de nuestros dominios para cada subtipo. Como comentábamos vamos a la pestaña subtipos y le incluimos los dominios a cada uno de éstos: Fig. 10. Asignación de los dominios a cada subtipo. Una vez asignados los dominios vamos a probar nuestra validación en ArcMap digitalizando alguna entidad y probando los subtipos y sus respectivos dominios. Vamos a ArcMap y agregamos nuestra Feature Class (Red Abastecimiento), del mismo modo que hicimos anteriormente (si hemos guardado el proyecto deberíamos tener ya nuestra Feature Class agregada). Empezamos la Edición y digitalizamos dos entidades para cada subtipo seleccionándolas en el Target. Veremos que si visualizamos los atributos, el campo del subtipo tendrá un desplegable y si cambiamos el nombre del subtipo su simbología también lo hará. Fig. 11. Digitalización de cada subtipo en ArcMap y visualización del atributo Subtipo de Red. A continuación vamos a introducir los valores de DIÁMETRO que creamos oportunos dentro de los rangos antes comentados para cada subtipo (por ejemplo 75 para la principal, y para la segundaria 30), si posteriormente nos vamos a Editor – Validate Features teniendo seleccionada las entidades, nos dirá que todos los datos son válidos, sin embargo si introducimos por ejemplo un valor de 150 para la red principal y validamos nos dirá que el valor no está en el rango especificado, he ahí nuestra validación temática. Fig. 12. Validación de las entidades. Como habréis podido comprobar no hemos creado un tipo de validación de CODED VALUE aunque se podría haber usado por ejemplo con materiales, etc. Pero os pongo un ejemplo para que veáis en el paso de crear DOMINIOS de este tipo desde ArcCatalog y posteriormente como beneficia en el uso mediante ArcMap estando en edición. En ArcCatalog para crear un DOMINIO de tipo CODED VALUE, es decir pares CLAVE – VALOR vamos a nuestra geodatabase y agregamos un dominio tal y como hicimos antes pero especificando los siguientes parámetros: a. Domain Name (Nombre del Dominio): Tipo de Material. b. Description (Descripción del Dominio): Diámetro de la Red de Abastecimiento por Subtipos. c. Field Type (Campo del Subtipo): será en principio Short Integer. d. Domain Type (Tipo de Dominio): Coded Value. e. En la parte inferior asignamos cada código y su descripción en nuestro caso los materiales como podrían ser los siguientes (véase ilustración Fig. 13). Materiales: Codigo Descripción 1 PVC 2 Hierro 3 Otros Materiales Fig. 13. Creación del Dominio Tipo de Material en ArcCatalog. Podremos opcionalmente crear un dominio de tipo CODED VALUE para cada subtipo o simplemente como hemos hecho aquí para toda la Feature Class. Si decidimos crearlo por cada subtipo, posteriormente crearemos un campo del mismo tipo y lo llamaremos MATERIAL, y ahí le especificaremos a cada subtipo su dominio correspondiente en la pestaña Subtypes de las Propiedades del Feature Class. Fig. 14. Creación del Campo Material y asignación del Dominio del mismo nombre. Una vez tenemos nuestro campo y su método de validación mediante dominio de tipo Coded Value vamos a ArcMap y veremos cómo nos aparecerá un desplegable para no introducir valores erróneos. Procedemos a abrir el proyecto anterior ya que lo debemos tener cerrado para no importunar a ArcCatalog en cualquiera de los procesos anteriores. Empezamos la edición y vamos a seleccionar los valores de tipo de Material para cada tramo digitalizado. Fig. 15. Selección del código de cada tipo de Material. Nota Aclaratoria: debemos tener en cuenta que los dominios se almacenan según el código en el caso de los CODED VALUE por lo que si exportamos a formato Shapefile u otro tipo de entidades, tendremos que reconvertir a su correspondiente descripción ya que los campos contendrán el valor del código y no la descripción propiamente dicha. Bueno espero que os sea útil este artículo y recordar que las marcas aquí mencionadas de software ArcGIS TM – ArcCatalog TM y ArcMap TM y derivados son marcas registradas por sus dueños © ESRI USA (http://www.esri.com) por lo que deberemos disponer de licencia para su uso. Este documento podrá ser distribuido sin ningún tipo de limitación. Podéis encontrar más información en: http://www.esri.com