HERRAMIENTAS DE ANÁLISIS COMBINADO RÁSTER/VECTOR EN UN ENTORNO SIG

Pesquer Ll.1 Maso J.1 Pons X.2,1
1Centro de Investigación Ecológica y Aplicaciones Forestales Facultad de Ciencias. UAB
2Departamento de Geografía. Universidad Autónoma de Barcelona
08193 Bellaterra, Barcelona, Spain

1. Introducción

Dentro del entorno SIG se han ido desarrollando de forma paralela dos mundos, el mundo ráster y el mundo vectorial sin, algunas veces, los necesarios puntos de encuentro. Muchas veces, la única manera de trabajar analíticamente y de manera conjunta una capa vectorial con una capa ráster era transformar una de ellas al otro formato y, con las dos capas en el mismo formato, utilizar la herramienta adecuada, que a menudo solamente existía para uno de los dos mundos. Esta manera de trabajar implica una duplicidad de la información, se necesita la misma capa en los dos formatos porque para según qué propósitos es necesaria su versión vectorial y para según qué propósitos su versión ráster, lo que comporta un problema de espacio y, especialmente, de mantenimiento de la misma información en dos formatos al mismo tiempo. Evitar esta transformación (que no siempre tiene sentido, como por ejemplo vectorizar un ráster de valores continuos) es, en cualquier caso, un beneficio para el usuario.

Por ejemplo, un SIG popular como Idrisi (versión 2.010), tiene las herramientas básicas de análisis desarrolladas únicamente para rásters (Image Calculator, Crosstab, etc). También Envi (versión 3.0) dispone de múltiples aplicaciones específicas para el formato ráster como BandMath pero adolece de menos potencialidades en el caso vectorial, en parte por su vocación principal de programa de teledetección. En ArcInfo (ArcInfo 7.2) es necesaria la conversión de ráster a capa vectorial para la realización de determinados análisis vectoriales como Buffer, y, en cambio, deben convertirse al formato ráster (Grid o VAT, formato ráster con tablas asociadas), aquellas capas que formen parte de la secuencia de comandos, operadores y funciones que definan un análisis aritmético ráster. Al mismo tiempo operaciones comunes como la reclasificación de valores no suelen poderse incluir en el interior de la secuencia de procesos como una operación más, o no es posible tener un control fino de los tipos numéricos de salida, o es necesario decantarse por operadores matemáticos o por operadores lógicos, cuando a menudo ambos son precisos en este mismo análisis.

Las herramientas que se describirán durante este trabajo tienen como objetivo principal reducir de manera significativa la barrera que hay entre estos dos mundos. El modelo ráster y el modelo vectorial evidentemente seguirán existiendo dada su razón de ser (Burrough & McDonell, 1998), pero se pretende minimizar dicha división. Se propone, pues, trabajar con rásters y vectores de forma combinada e indistinta, y tener definidas las mismas funcionalidades para ambos mundos. Sólo entonces la elección de un formato u otro será función de la visión que se adapte mejor a la información de que disponemos y del tipo de resultado que deseemos, y no dependerá de las herramientas disponibles para trabajar con ella. Esta aproximación entre ambos mundos ha obligado a los autores a revisar algunos conceptos típicamente ráster como es el valor de fondo o valor NODATA, bien definido para el caso ráster (aunque a menudo no contemplado funcionalmente en los módulos de los programas) pero para el cual se debía encontrar su analogía en el formato vectorial y así generalizar algunas funciones matemático-lógicas especialmente sensibles a este valor. Un tratamiento especialmente riguroso del concepto de valor NODATA ha permitido integrar funciones matemáticas con funciones lógicas, capas ráster de distinto formato con capas vectoriales con o sin topología y valores NODATA documentados de manera muy diversa pero que, en cambio, se integran en una misma expresión analítica.

La velocidad es también un criterio prioritario en el diseño de estas aplicaciones. Debido a que cada vez se manejan un mayor número de capas con más información, a menudo, los usuarios no tienen la posibilidad de que sus recursos informáticos progresen al mismo ritmo ni el mismo momento en que disponen de más datos, se han estudiado y probado los algoritmos de cálculo para que los procesos sean lo más veloces posible. El desarrollo de estas herramientas, en lenguaje C, permite el diseño de estrategias para acelerar los cálculos sin perder las indispensables características de funciones y operadores polivalentes que trabajan con distintos tipos de datos, capas, etc. Con estas directrices se han construido dos herramientas, la Calculadora/Reclasificadora de Capas y la Combinación Analítica de Capas, habilitadas para realizar complejos y rigurosos estudios en el campo del Análisis SIG.

Las dos herramientas de análisis que se presentan están integradas en MiraMon versión 3.x, un Sistema de Información Geográfica y software de Teledetección, aplicación nativa de 32 bits que funciona en cualquier plataforma Windows. Ambas herramientas, pueden ejecutarse en línea de comandos o ser llamadas desde el menú correspondiente donde una interfaz Windows facilitará la simple ejecución o bien la construcción de la línea de comandos que puede ser volcada sobre un fichero .BAT o un código en otro lenguaje con el objetivo de lanzar procesos masivos o automatizados.

2 Metodología

2.1 Introducción

En el desarrollo que presentamos se han incorporado diferentes metodologías con el fin de trabajar indistintamente con rásters y vectores cuando sea necesario, pero sin abandonar algunos procedimientos exclusivos de alguno de los dos formatos. El principal desarrollo, detallado en el siguiente apartado, consiste en la emulación ráster de un vector. Permite adaptar de forma directa vectores que necesitarían ser rasterizados para definir algunas operaciones cuyo resultado es un ráster. Un ejemplo muy simple sería la multiplicación de una máscara vectorial (p. ej. un límite administrativo) por un mapa temático. Con la emulación ráster de un vector se evita convertir el fichero vectorial a fichero ráster (es posible que la versión ráster en disco de este fichero se necesitara en distintas resoluciones para distintas utilidades) y la multiplicación se realiza de forma natural entre la máscara vectorial y el ráster temático. Naturalmente el programa no ejecuta una rasterización del fichero previa al análisis, ya que ello comportaría ocupar disco con tantos rásters como vectores intervinieran en la expresión.

También se ha desarrollado un procedimiento puramente vectorial para aquellos análisis donde se desee una superposición espacial entre atributos para capas vectoriales con el objetivo de obtener una nueva capa vectorial que combina tanto los elementos gráficos originales como todos sus atributos temáticos. El análisis netamente vectorial permite el trabajo con diversos registros y campos para cada objeto gráfico, lo que lo diferencia del análisis ráster donde tradicionalmente se maneja un único atributo y un único registro por celda. Un ejemplo de este proceso sería el enriquecimiento de la base de datos de un mapa de carreteras con un campo de denominaciones de una capa de municipios.

Para lograr una mayor completitud en el análisis combinado ráster/vector debería añadirse un procedimiento de vectorización automática de capas ráster. Este procedimiento que se encuentra en fase de desarrollo y cuyo algoritmo se basará en un procedimiento línea a línea, sin grandes requerimientos, de memoria, permitirá obtener la versión vectorizada de un ráster de forma dinámica (sin necesidad de generar una capa intermedia) para, por ejemplo, transferir como atributo a una capa vectorial de líneas los índices de vegetación reclasificados por los que discurre cada línea. Cabe señalar que la vectorización de un ráster no tendrá sentido en la mayoría de operaciones aritméticas definidas en la Calculadora si previamente no se reclasifican los resultados, generalmente continuos, a valores discretos, posibilidad ya existente en la Calculadora. Por ello, el formato resultado habitual de esta aplicación seguirá siendo ráster.

2.2 Emulación ráster de las capas vectoriales

El mecanismo de emulación ráster de un vector, es aquél que permite incorporar todas las utilidades ráster a las capas vectoriales y trabajar combinadamente con rásters y vectores, cuando el fichero de salida es ráster. El proceso que se describe a continuación se realiza fila a fila, es decir, lleva asociado un ámbito geográfico y una resolución de muestreo, que por tanto determinan el número de filas, así como el número de celdas de cada fila.

El objetivo de este proceso es generar una fila de valores numéricos determinados a partir de los atributos correspondientes a la capa vectorial. Debe inicializarse con el valor de fondo definido, y en el proceso se reemplazarán estos valores de inicio por los valores rasterizados. Los valores numéricos rasterizados se obtendrán a partir del atributo del campo seleccionado; si este campo no es numérico realizaremos una transformación previa para obtener valores numéricos. Para un campo lógico el valor falso se convertirá a 0, y el valor verdadero a 1. Para un campo fecha, se genera un valor AAAAMMDD (4 cifras del año, 2 cifras del mes y 2 cifras del día, formato que permite ordenaciones de campos fecha con los criterios habituales). Para un campo alfanumérico se intenta convertir a numérico si dicho atributo esta formado únicamente por cifras, o se propone una operación lógica de igualdad o desigualdad del atributo a un determinado texto alfanumérico. En cualquier caso si la conversión de un atributo no es posible, el registro no se tiene en cuenta.

La rasterización tiene algunas particularidades en función del tipo de entidades gráficas. Para puntos, cada elemento gráfico es rasterizado sobre la celda del ráster que lo contiene (criterio del vecino más próximo). En el caso de líneas, en primer lugar, sus vértices son rasterizados en el píxel que los contiene. Los segmentos entre vértices son rasterizados por un proceso que garantiza que dicho segmento recibe, en todo momento, una representación de grosor 1 píxel y no se pierde la continuidad de la línea. El algoritmo es un perfeccionamiento del de Bresenham (Hill, 1990), que en nuestro caso, permite trabajar con coordenadas subpíxel de forma precisa y jamás afecta píxeles dónde la línea ni siquiera toca. Cuando el vector es de polígonos, los elementos gráficos a rasterizar son polipolígonos. Un polipolígono es una descripción de la secuencia de polígonos elementales formada por el borde exterior del polígono y todas sus fronteras interiores (huecos). En el caso de grupos de polígonos pueden existir varios bordes exteriores (p. ej. Islas Baleares) Para cada fila de ráster se determinan las intersecciones de la línea del nivel central de la fila con las líneas de frontera de cada polígono. Una vez eliminadas todas las singularidades, se determinan los píxeles candidatos a ser rasterizados, contando intersecciones, avanzando desde la izquierda y rasterizando cuando el número de intersecciones sea par (simplificación del algoritmo del punto en el polígono). Cuando un píxel toca a 3 o más polígonos, el valor rasterizado es el del polígono que tiene mayor presencia en la línea central del pixel. Es importante subrayar que esta rasterización es totalmente dinámica en cada fila, no generando, en ningún momento, ningún fichero temporal del vector rasterizado.

La emulación ráster de un vector admite una parametrización en función de los objetivos deseados, y tiene sus particularidades según la herramienta de análisis utilizada.


Figura 2.1 Imagen de la interfaz de configuración de los parámetros en la rasterización de un vector que forma parte de una fórmula matemático-lógica en la Calculadora/Reclasificadora de Capas.

Para un vector estructurado topológicamente y con base de datos asociada debe indicarse el campo que determina el atributo de cada registro y el registro que determina el atributo para entidades multiregistro (relación de cardinalidad 1->n), aquellas entidades gráficas enriquecidas con más de un atributo. En el caso de campos alfanuméricos, puede elegirse una rasterización a verdadero (1) o falso (0) determinada por la operación de igualdad o desigualdad del un atributo correspondiente al registro seleccionado con una determinada cadena, o bien un tratamiento numérico de cada registro. Para cualquier vector debe definirse el valor exterior a todas las entidades o el valor de aquellas entidades que no tienen un atributo válido. Si en una misma capa vectorial hay más de un campo de interés, puede indicarse su inclusión tantas veces como se desee.


Figura 2.2 Imagen de la interfaz de configuración de los parámetros en la rasterización dinámica de un vector estructurado en la Combinación Analítica de Capas.

La parametrización de la rasterización en la Combinación Analítica de Capas es ligeramente distinta: debe seleccionarse un campo numérico de la base de datos (en el enfoque ráster, la combinación representa el cruce de las variables numéricas no continuas, datos categóricos), y un campo descriptivo (categoría) asociado al valor numérico. Para entidades con multiregistro debe señalarse qué registro seleccionar.

La asignación del valor exterior al vector se realiza de forma automática: aquellas zonas donde no existen elementos gráficos definidos o a éstos no les corresponde un registro válido serán representadas por el concepto NODATA.

2.3. Superposición vectorial

Un análisis puramente vectorial que combine diversas capas vectoriales permite un tratamiento enteramente vectorial del problema. Los conceptos de 'en la misma celda' inherentes del formato ráster, son sustituidos por un análisis de intersecciones entre objetos y una fragmentación del espacio regido por una regla de correspondencia entre objetos gráficos del nuevo espacio fragmentado (intersectado) con cada una de las capas originales. Generalmente esta regla de correspondencia es el punto en el polígono (Laurini & Thompson, 1995) pero podría aplicarse alguna otra como la proximidad geográfica, etc. Estos conceptos solamente quedan perfectamente establecidos si las capas tienen topología definida.

El resultado y el procedimiento de la superposición de vectores dependen de la naturaleza de cada una de las capas implicadas. En el caso general de superposición de n capas vectoriales de tipo punto/nodo línea/arco o polígono simultáneamente, el procedimiento se inicia con la determinación de todas las intersecciones entre las entidades gráficas de las capas no puntuales que terminará con una nueva fragmentación del espacio. La decisión de que dos elementos gráficos ocupen una parte común en el espacio viene dominada por criterios de tolerancias infinitesimales y de insignificancia de geográfica (eliminación de micropolígonos), previamente parametrizados por el usuario si lo desea. Dicha fragmentación, puede implicar la creación de nuevos nodos localizados en las intersecciones halladas. La correspondencia de cada nuevo elemento gráfico del nuevo espacio fragmentado con los elementos de cada una de las capas originales establece una relación entre los atributos de los objetos originales y los registros de la base de datos del nuevo espacio fragmentado. Como ya se ha indicado, la regla de correspondencia aplicada es la del punto en el polígono. Los atributos de las nuevas entidades resultantes vendrán determinados por los atributos de las entidades originales y por el tipo de análisis, pudiendo limitarse a una simple herencia de registros o una operación aritmética entre los campos de las capas implicadas una vez conocidos todos los atributos para cada nuevo objeto.

3. Detalle de las herramientas de análisis

En este apartado se particulariza cada una de las dos herramientas propuestas, profundizando en sus características más fundamentales y enfatizando en su aspecto combinado ráster/vector.

3.1 Calculadora/Reclasificadora de Capas

Esta herramienta de análisis, permite definir una expresión analítica con un número ilimitado de operaciones matemáticas y lógicas de un número ilimitado de capas en cualquier formato. Todas las capas que forman parte de la expresión, y también la capa resultado, pueden hallarse en cualquier ubicación lógica o física (..\Datos\limites, \\servidor\GIS\Cartografia\, etc). Todos los rásters que formen parte de la expresión deben corresponder al mismo ámbito geográfico, así como tener la misma resolución y las mismas unidades referidas al mismo sistema de referencia, si bien estas limitaciones podrían obviarse en un futuro próximo. En cambio, pueden ser de diferente tipo (byte, real...) y no importa su grado de compresión. Se sobreentiende que el ámbito de las capas vectoriales queda definido por el ámbito de las capas ráster de la expresión, cuando las haya. El resultado de dicha expresión será un ráster, de manera que para expresiones donde solamente participen capas vectoriales habrá que definir el ámbito de manera explícita. El tipo de datos del fichero resultado será, en el modo automático, aquél que, sin perder precisión, se ajuste mejor al rango de los valores generados o el que defina explícitamente el usuario. Para completar esta capa resultado pueden definirse una serie de parámetros como título, descripción de valores (típicamente unidades), heredar categorías temáticas de un fichero patrón, etc., que facilitan la creación de los metadatos de salida.

Todas las funciones y operaciones definidas admiten argumentos numéricos, vectoriales o ráster indistintamente; por ejemplo es posible realizar un producto de un número por una capa, un producto entre dos capas o entre dos números (esta última operación no sería válida si fuera la única definida, ya que es condición necesaria que como mínimo una capa vectorial o ráster se incluya en la expresión). Por el momento, no se han incorporado funciones convolutivas que se alejan excesivamente del esquema general de esta aplicación, debiéndose ejecutar a través de los módulos específicos para tal fin.

3.1.1 Interfaz
Si en muchas aplicaciones la interfaz es un apoyo para facilitar la configuración de los parámetros que determinan la ejecución de un programa, en el caso de la Calculadora/Reclasificadora de Capas, es prácticamente imprescindible, dada la complejidad de la expresión que a menudo se construye y de sus múltiples variantes.

La interfaz se usará para construir correctamente la sintaxis de la expresión analítica, definir las capas origen que participan en dicha expresión, configurando sus parámetros particulares para capas vectoriales, insertar las funciones u operadores con sus argumentos, editar los ficheros de reclasificación, guardar o recuperar configuraciones completas, definir el formato de salida, completar la metainformación del fichero de salida (título, unidades, categorías...), definir el ámbito del ráster resultante si es necesario, informar del espacio de disco necesario en función del tipo de datos resultante, etc. Se ha hecho un esfuerzo importante en automatizar muchas de estas opciones, con los criterios más habituales y coherentes con el análisis que se está introduciendo, facilitando al usuario no experto la toma de decisiones sobre las cuales no tiene un criterio definido. El usuario avanzado podrá configurar todos los parámetros, aunque el programa avisaría en el caso que existiera alguna incoherencia entre ellos.


Figura 3.1 Imagen de la interfaz de la Calculadora/Reclasificadora de Capas.

3.1.2. Algoritmo
Inicialmente, el programa interpreta la expresión matemática, identificando todas las funciones, operadores, precedencia, capas, números y formatos. Así mismo, verifica la validez de todos los parámetros, el acceso a los ficheros y la sintaxis de la expresión lógica. Construye entonces las estructuras necesarias, paquetes de información en memoria donde se almacenan conjuntos de parámetros que singularizan cada elemento que forma parte de la expresión analítica. Se crea a continuación una secuencia de punteros a funciones y sus argumentos, que pueden ser capas, números o cálculos intermedios, cuyo orden viene regido por la siguiente jerarquía (de mayor a menor precedencia): dentro de la misma categoría prevalece el criterio de izquierda a derecha

Transformar la expresión matemática en una secuencia jerarquizada de operaciones significa que la sintaxis se examina una sola vez, acelerando el proceso de manera extraordinariamente significativa respecto a métodos que iteren este examen píxel a píxel. Entonces se procede al cálculo gobernado por esta secuencia de operaciones. La lectura de capas se realiza fila a fila, (fila de celdas ráster o fila del vector rasterizado en la región correspondiente a dicha fila) los cálculos se realizan celda a celda, y una vez calculada una fila completa se escribe en el fichero resultado. El análisis de qué entidades vectoriales afectan a cada fila ráster se ha optimizado utilizando criterios geométricos. Se ha comprobado que este procedimiento es el que mejor alcanza un compromiso velocidad/requerimientos de memoria.

Finalmente se almacena la metainformación obtenida durante el proceso de cálculo, se cierran los ficheros y se libera la memoria solicitada. Durante el proceso se informa de su evolución, así como de la detección de cualquier anomalía. El diseño modular y el uso de punteros a funciones permite con suma facilidad añadir en el futuro nuevos operadores y funciones, sin que se le exija ningún prototipo determinado y sin que ello implique ninguna reestructuración del código fuente.

3.1.3 Tratamiento de los valores NODATA
Debido a la posible complejidad de la expresión y de la distinta naturaleza de las capas que forman parte de ella, no es trivial la elección del valor de fondo (NODATA) en la capa resultado, en caso que éste exista. La capa resultado puede presentar valor de fondo en una determinada celda por dos motivos: alguna de las capas origen ya lo presentaba en esa posición, o se ha generado una operación matemática no válida. En el primer caso, se parte de la premisa de que cualquier operación donde participe un valor NODATA da como resultado un valor NODATA, sea cual sea el valor concreto de NODATA (más adelante detallamos las excepciones a esta norma general: Reclasificación y Transparentar). Una operación matemática incorrecta, por ejemplo una división con denominador cero, generará valor NODATA permitiendo de esta manera continuar calculando en las siguientes posiciones geográficas sin interrumpir el proceso.

No existe ninguna restricción sobre el valor de fondo de las distintas capas que participan en la expresión. El programa asigna automáticamente el valor de NODATA en función del formato del ráster resultado: 255 para tipo byte, 0 para tipo bit, y el valor más negativo posible para el resto de tipos, o permite que sea el usuario quién decida cual será dicho valor, verificando que sea compatible con el tipo de salida elegido.

Debe tenerse en cuenta que la existencia de NODATA en la capa resultado disminuye el rango de posibles valores válidos. Es absolutamente aconsejable, y con mayor razón para el caso byte, definirlo en uno de los extremos del rango válido de los datos resultado, sin insertarlo en medio de una zona de valores permitidos y posibles. De esta forma un valor resultado perfectamente válido que coincida con el valor asignado a NODATA se convertirá en el valor posible más cercano. Por ejemplo, para un fichero de salida en formato byte, que tenga valor de fondo definido en 255, el resultado de 250+5 se asignará a 254, valor válido más próximo a 255, ya que 255 queda reservado para NODATA.

3.1.4 Doble precisión y singularidades matemáticas
Sea cual sea el formato de las capas origen como el de la capa resultado, los datos son transformados, inmediatamente después de su lectura en el formato correspondiente, al formato real de doble precisión, 15-16 cifras significativas y rango aproximadamente entre -1.7E-308 y +1.7E+308. Todos los cálculos se realizan en doble precisión y únicamente en el momento de la escritura definitiva se saturan o escalan al formato de salida. Si fuera necesario crear un fichero temporal de valores numéricos, circunstancia que ocurre únicamente cuando se decide realizar un escalado o cuando el programa debe decidir el tipo de datos de salida de forma automática (ya que es imprescindible conocer a priori el rango de valores del fichero completo), éstos quedan grabados en doble precisión, ya que a pesar de necesitar un espacio de disco elevado, mantienen la precisión en los cálculos. Como ya se ha indicado en el apartado de tratamiento de valores NODATA, el programa es cuidadoso con las singularidades matemáticas, evitando operaciones con argumentos fuera del dominio de definición de dicha función/operación y señalando en el ráster salida la singularidad con un valor de fondo. Este procedimiento evita que el programa caiga en un cálculo no permitido y, a la vez, lo hace matemáticamente riguroso con los dominios de cada función.

Cabe señalar que el concepto de singularidad en un proceso de cálculo numérico como éste es cualitativamente distinto al concepto teórico-matemático; es decir, en la teoría podemos realizar cálculos en un entorno infinitesimalmente cercano a una singularidad, pero en la práctica esta singularidad no es un punto concreto (o una región perfectamente confinada según el caso), sino que existe un entorno más o menos infinitesimal alrededor de la singularidad que depende de la precisión utilizada y del valor mismo. Puede minimizarse este efecto, pero nunca ajustarse ilimitadamente al modelo teórico. Este error intrínseco, solo apreciable en cálculos extremadamente finos o con valores muy elevados puede llegar a repercutir también en algunas funciones de comparación con reales y en los intervalos de reclasificación, si estos son excesivamente infinitesimales. El programa sustituye internamente los operadores de comparación con reales de doble precisión por funciones que garantizan que estos entornos están convenientemente definidos. (DJ Delorie, 1998)

3.1.5. Algunas funciones particulares
Para enfatizar que esta herramienta está acoplada en un SIG y como ampliación de las clásicas funciones matemáticas, detallamos a continuación las siguientes funciones:
3.1.5.1 Escalar
La función 'Escalar', llamada Stretch en otros entornos, tiene la particularidad respecto a todas las otras funciones definidas, que no puede aplicarse como un paso intermedio dentro la secuencia de operaciones derivada de la expresión matemático-lógica. Su funcionalidad consiste en, una vez obtenido el ráster resultado, aplicar una transformación lineal entre el valor máximo y mínimo de los valores obtenidos y los parámetros máximo y mínimo escalado introducidos por el usuario. Para ello es imprescindible almacenar los resultados previos (obtenidos a partir de cualquier combinación de operaciones o de la lectura de una única capa vectorial o ráster) al escalado en un fichero temporal de doble precisión, para una vez conocido los valores extremos poder aplicar dicha transformación lineal y así generar el resultado definitivo.
3.1.5.2 Reclasificación
La reclasificación incorporada como una función dentro del engranaje de cálculo de esta aplicación adquiere una mayor potencialidad. Permite reclasificar tanto una capa original (ráster o vector), un cálculo intermedio o el resultado final. Una expresión puede incluir cuantas reclasificaciones se desee, anidadas o no. Para definir dicha función es necesario editar un fichero de texto (desde la propia interfaz o cualquier editor de texto sin formato) donde se construyen las asignaciones entre valores o rangos de valores. Existen pues, dos formatos perfectamente compatibles dentro del mismo fichero de reclasficicación:
[valor antiguo] [valor nuevo]
[límite inferior antiguo] [límite superior antiguo] [valor nuevo].
En el primer caso se realiza una sustitución del valor antiguo por el nuevo y, en el segundo caso, a los valores mayores o iguales al límite inferior y estrictamente menores al límite superior se les asignará el valor nuevo. El programa permite que haya solapamientos en la definición de los intervalos a reclasificar (en algunos casos puede simplificar la notación); en este caso, las regiones que pertenezcan a más de un intervalo se asignaran al valor definido correspondiente al primer intervalo definido al cual pertenece dicha región.

La Reclasificación tiene un comportamiento especial con el tratamiento de los valores de fondo. Podemos 'eliminar' el valor de fondo definiendo la asignación:

NODATA [valor_valido]
De esta forma, sea cual fuera el valor de NODATA, deja de ser valor de fondo y pasa a ser el valor especificado, pudiendo ser un valor ya existente o un nuevo valor. También es posible asignar el valor de fondo desde un valor o intervalo de valores:
[Valor_valido] NODATA
[Límite_inferior] [Límite superior] NODATA


Figura 3.2 Imagen de la interfaz de edición del fichero que define los intervalos de reclasificación en la Calculadora/Reclasificadora de Capas. En este ejemplo tanto los valores NODATA como los -9999 pasan a 0, mientras que los valores entre 2 y 250 pasan a valer 1, etc.

3.1.5.3 Transparentar
La función Transparentar, también llamada Cover en otros entornos, devuelve el valor del segundo argumento cuando el primer argumento es igual al valor de fondo, y devuelve el primer argumento cuando es diferente a este valor. De este modo, los valores de la segunda capa se ven a través de las zonas "sin datos" de la primera capa. Como en los otros casos, cualquiera de los argumentos de Transparentar puede ser los resultados parciales de otras operaciones entre capas y escalares. Esta función sólo generará valores NODATA en las zonas que sus dos argumentos lo sean.
3.1.6. Operadores y funciones matemáticas
A continuación se muestra la lista completa de funciones matemáticas implementadas agrupadas según conceptos. Funciones matemáticas de un solo argumento: Funciones matemáticas de dos argumentos: Funciones de comparación de dos argumentos: Funciones trigonométricas con ángulo en radianes: Funciones trigonométricas con ángulo en grados: Operadores lógicos y de comparación El criterio elegido es: en caso verdadero el resultado es 1 y en caso falso es 0.

3.2 Combinación analítica de Capas

Esta herramienta analiza el cruce de dos capas ráster, una capa ráster y una capa vectorial o dos capas vectoriales. La combinación de capas ráster puede originar una nueva capa ráster y/o un informe estadístico de los cruces. La combinación de capas vectoriales generará una nueva capa vectorial con su topología o, bajo un enfoque ráster de las capas vectoriales, puede generar una capa ráster o informe estadístico.

Finalmente, la combinación de una capa ráster con una capa vectorial emulará siempre la opción ráster con ráster, así como, la combinación donde participe una capa vectorial no estructurada topológicamente, sea cual sea la naturaleza de la otra capa. No es posible un enfoque vectorial, durante la combinación de capas de vectores sin topología debido a que no se garantizaría una mínima coherencia en la definición de las entidades gráficas (elementos no conectados, superposición de polígonos, etc.).

3.2.1 Enfoque vectorial
En la combinación de dos capas vectoriales estructuradas podemos elegir la opción que en todo momento estas capas mantengan su carácter vectorial, generando un vector, cuyo sentido dependerá del tipo de capa involucrada. En todos los casos, la capa vectorial resultante tendrá reconstruida su topología de forma automática y heredará todos los atributos temáticos que tuviese. A continuación detallamos todas las posibilidades del enfoque vectorial de la herramienta:
POL + POL = POL
El fichero de polígonos resultante de la combinación de dos polígonos se obtiene a partir de la fragmentación del espacio producida por el cruce de las fronteras de las capas originales en las regiones comunes y por la adición de las entidades no comunes al ámbito global. Cada fragmento hereda los atributos de ambos polígonos originales.
POL + ARC = ARC
Cada arco queda partido en fragmentos producidos por las intersecciones de las fronteras del fichero de polígonos. A los propios atributos del fichero de arcos se les añaden los atributos del fichero de polígonos.
POL + ARC =POL
La geometría del fichero de polígonos permanece inalterada; sin embargo sus registros se enriquecen con los atributos de cada arco que atraviesa el polígono o que está totalmente incluido en él, generando multiregistros si es necesario.
POL + PNT = PNT
Sin alterar la geometría del fichero de puntos, a cada punto se le añaden los atributos del polígono en que aquél está contenido.
POL + PNT = POL
Cada punto añade sobre el fichero de polígonos sus atributos, sin modificar la geometría de éste, generando multiregistros si es necesario.
POL + NOD = NOD
Sin alterar la geometría del fichero de nodos, a cada nodo se le añaden los atributos del polígono en que aquél está contenido.
POL + NOD = POL
Cada nodo añade sobre el fichero de polígonos sus atributos, sin modificar su geometría y generando multiregistros si es necesario.
Obsérvese que en todos los casos se considerarán todos los atributos de las tablas principales y sus relaciones con las tablas asociadas, incluso con relaciones de cardinalidad 1->n.

Cuando las capas analizadas presenten nombres de campos iguales en la tabla principal, éstos se modificarán automáticamente en la capa resultante, añadiendo _A para la primera capa y _B para la segunda para poder diferenciarlos. Esta posibilidad es especialmente útil para estudios de los mismos parámetros en dos instantes de tiempo (p. ej.: cambios en los usos del suelo).

En las combinaciones de polígonos donde las fronteras no provengan de la misma fuente pueden aparecer pequeñas regiones no deseadas, que identificamos como micropolígonos. El programa permite la eliminación selectiva de estos elementos cuando se cumplan criterios de insignificancia geográfica: área muy pequeña y/o relación perímetro/área muy grande.

3.2.2 Enfoque ráster
El programa adoptará una visión ráster del problema cuando una de las capas origen sea un ráster o cuando, a pesar de tratarse de dos capas vectoriales deseemos obtener un ráster resultante o un informe estadístico del cruce entre un campo numérico de la primera capa y otro campo numérico de la segunda capa. También se da un tratamiento ráster a las capas vectoriales no estructuradas, donde la ausencia de topología impide realizar un análisis vectorial con cierto rigor de sus combinaciones.

Si deseamos combinar dos capas ráster, éstas deben corresponder a idéntico ámbito geográfico, tener la misma resolución y las mismas unidades referidas al mismo sistema de referencia. En la combinación ráster / vector, el ráster definirá el ámbito de la capa ráster resultante, si ésta se ha solicitado, o en su defecto, del ámbito implícito de la zona de estudio sobre el cual se generan los informes. En la combinación ráster de dos capas vectoriales debe explicitarse dicho ámbito y resolución.


Figura 3.3 Resumen figurativo de las principales posibilidades en al Combinación Analítica de Capas. Para mayor claridad se han indicado un solo campo y registro para cada objeto, pero cualquier combinación es posible,
3.2.3 Interfaz
La interfaz ha sido diseñada para facilitar la correcta construcción de la línea de comandos, la exploración de las capas implicadas, la visualización y elección de los campos en capas vectoriales, definición del ámbito, formato del informe, criterios de eliminación de micropolígonos y otros parámetros cuando ello fuera necesario.

Figura 3.4 Imagen de la interfaz de la aplicación de Combinación Analítica de Capas, junto con la ventana de configuración avanzada para el enfoque vectorial.
3.2.4 Algoritmo
El programa empieza por determinar el tipo de análisis requerido, verifica el acceso de los ficheros implicados, la validez de los parámetros definidos o a la presencia de aquellos que sean imprescindibles. En este punto el programa bifurca en dos procedimientos totalmente separados, el enfoque ráster o el enfoque vectorial.

El primer paso del procedimiento desde el enfoque vectorial consiste en construir la estructura de la base de datos combinada de la capa resultado a partir de las estructuras de la base de datos de las dos capas a analizar. El siguiente paso consiste en determinar las intersecciones lineales de las entidades gráficas entre ambas capas. En las combinaciones donde intervienen polígonos, son las líneas frontera de los polígonos las que determinan dichas intersecciones. Finalmente se determina qué elementos de una capa ceden sus atributos a qué elementos de la otra capa. Este paso se realiza por criterios de superposición o inclusión, implementados a través de la rutina del punto en el polígono.

En el segundo caso, desde un enfoque ráster, se realiza la lectura de las dos capas y se contabilizan los cruces de valores fila a fila. Esta fila, para una capa vectorial, corresponderá a la rasterización en memoria de la región del vector definida por el ámbito preestablecido y la fila en tratamiento. Al finalizar la lectura de las dos capas se ha recopilado la información necesaria, bien para generar una capa ráster resultado donde se localizará geográficamente cada cruce, bien para generar las tablas y cálculos asociados del informe correspondiente. En cualquier caso, antes de volcar sobre el fichero resultado dicha información, se ordena, se asignan las nuevas categorías y se realizan los cálculos estadísticos solicitados.

Finalmente se almacena la metainformación, se cierran los ficheros y se libera la memoria, informando de los eventos más significativos del proceso.

3.2.5 Detalle del informe resultado
Hemos visto que el enfoque ráster del análisis de capas podía generar un informe estadístico de su combinación. El formato del informe puede ser un fichero de texto o una hoja de cálculo CSV (perfectamente compatible con Microsoft Excel) con separador de listas definido.

Figura 3.5 Ejemplo de alguna de las tablas que forman el informe en formato texto generado en la Combinación Analítica de Capas.
Este informe consta de cinco tablas: frecuencias (número de píxeles) de cada combinación, porcentajes respecto a la primera capa, porcentajes respecto a la segunda capa (muy útiles para analizar evoluciones de usos del suelo o interacciones litología / vegetación), superficies de cada combinación en las unidades superficiales del sistema de referencia (típicamente m2) y superficies de cada combinación en las unidades secundarias preferidas por el usuario (típicamente ha o km2). En cada tabla, los valores existentes de la primera capa definen las columnas y los valores existentes de la segunda capa definen las filas. También se muestran los totales por filas y columnas, y cuando las categorías definidas coinciden en ambas capas, se calcula el coeficiente Kappa, parámetro estadístico de similitud entre ellas (Chuvieco, 1996).

4. Aplicaciones y ejemplos

4.1 Aplicaciones prácticas

A continuación se indican tres publicaciones en papel y una en soporte digital donde se han realizado análisis utilizado las herramientas que en esta comunicación se presentan.
Mapa ecológico de Barcelona (Burriel et al. 2000)
Se usó la Combinación Analítica de Capas para realizar estudios evolutivos de los usos del suelo en la ciudad de Barcelona.
Inventario Ecológico y Forestal de Catalunya: Región IV y Región V (Gracia et al. 2000)
La Combinación Analítica de Capas permitió generar informes de los cruces de mapas de cubiertas con espacios de interés natural (PEIN) y se realizaron análisis por municipios y comarcas. Estos informes contabilizan y detallan la distribución de las distintas cubiertas en espacios de interés natural y en cada región de estudio.
Proyecto Vulcano: un sistema de información aplicado a la gestión del Parque Natural de la Zona Volcánica de La Garrotxa (Marcer et al. 2000)
Ambas aplicaciones, la Combinación Analítica de Capas y la Calculadora/Reclasificadora de Capas, fueron útiles herramientas para elaborar estudios de impacto de proyectos de nuevas infraestructuras, evaluación en el cambio de usos del suelo y confección de mapas de vulnerabilidad.

4.2 Ejemplos:

4.2.1 Mosaico ráster de capas vectoriales
Se dispone de cuatro capas vectoriales en regiones contiguas y se desea realizar un mosaico ráster del atributo usos del suelo de dichas capas. Se comprueba que la capa3 y la capa4 tienen alguna región en común y se decide que la información de la capa3 es la válida en las regiones comunes. Las otras capas no tienen ámbito común. Una vez realizado el mosaico se desea aplicar una máscara correspondiente a un límite administrativo, p. ej. el municipio de Berga:

La fórmula que rige dicha operación es:

([Capa1;usos]+[Capa2;usos]+
RECL(CVR([Capa3; usos], [Capa4; usos]), [recl_ND])*
([Limites;municipio]="Berga")
Las capas sin intersecciones deben sumarse definiendo 0 como valor exterior al vector. La función Transparentar (CVR) permitirá completar con la capa4 las regiones donde capa3 no está definida (NODATA); debe reclasificarse el resultado de esta operación con un fichero que asigna NODATA a 0 para poder sumar de forma correcta este resultado con las otras capas. Finalmente al multiplicar por una máscara que limita al municipio requerido se obtiene el resultado deseado.
4.2.2 Superposición de polígonos
Se desea integrar una capa de polígonos con las comarcas de Cataluña en una capa vectorial de polígonos del Plan de Espacios de Interés Natural (PEIN). La herramienta de Combinación Analítica de Capas genera una capa resultado con la información cruzada de ambas capas.

Figura 4.1 Ejemplo de combinación de una capa espacios naturales con límites comarcales con el fin de completar la base de datos original.
4.2.3 Mapa de sensibilidad
El objetivo es elaborar un mapa de sensibilidad en base a distintos factores ambientales. Cada valor o atributo se asignará a un grado de sensibilidad de 0 a 3 (3 valor más sensible); se totalizarán las distintas sensibilidades y se reescalaran a un rango [0,5]. Se tendrán en cuenta los siguientes factores: suelos singulares, capacidad agrológica, vegetación y clases de pendiente, obtenidas al reclasificar un modelo de pendientes. Además, a las zonas calificadas como Reserva Natural se le aplicará directamente el nivel de sensibilidad máximo: 5.

La fórmula introducida es la siguiente:

([Limres;Régimen de protección;]="Reserva natural")* 5 + 
([Limres;Régimen de protección;]=/="Reserva natural")*
(5*(RECL([Veget],[Veget])+RECL([CapAgro],[CapAgro])+
RECL([Pendien],[Clas_pen])+RECL([SolSing;nivel],[SolSing]))/12)
La sintaxis de la función de reclasificación es RECL([capa], [fichero intervalos]). El fichero de intervalos, como el mostrado en la figura 3.2, asignará valores discretos a valores continuos de la capa a reclasificar.

En la fórmula se observa que intervienen operaciones lógicas sobre un campo alfanumérico de una capa vectorial (régimen de protección de Limres), reclasificaciones de capas ráster (vegetación, capacidad agrológica y modelo de pendientes ), y de una capa vectorial (suelo singular), operaciones de una capa con un número y una suma dinámica de capas (capas en memoria como resultado parcial de otras operaciones), correspondiente ésta al criterio de zonas de reserva natural por un lado y a los criterios de clasificación para el resto.

El resultado es, por lo tanto un ráster, donde en cada celda queda definido un nivel de sensibilidad de 0 a 5 en función de los criterios adoptados.

6. Referencias

Libros:
Burriel, J.A.; Pons X. y Terradas J. (2000): El mapa ecològic de Barcelona. Ajuntament de Barcelona, Sector de Manteniment i Serveis.
Burrough P. y McDonnell R.(1998): Spatial Information Systems and Geostatistics. Oxford University Press.
Chuvieco, E. (1996): Fundamentos de Teledetección espacial. Ediciones Rialp
Gracia C, Burriel JA, Ibàñez J, Mata T y Vayreda J (2000) Inventari Ecològic i Forestal de Catalunya. Regió Forestal V. CREAF.
Gracia C, Burriel JA, Ibàñez J, Mata T y Vayreda J (2000) Inventari Ecològic i Forestal de Catalunya. Regió Forestal IV. CREAF. En prensa.
Hill, F.S. (1990): Computer graphics Macmillan. Publishing Company.
Laurini R. y Thomson D. (1995): Fundamentals of spatial information systems. Academic Press.

CD_ROM:
Marcer, A; Pons, X. y Vicens, J. (2000): Vulcà. Un sistema d'informació aplicat a la gestió del Parc Natural de la Zona Volcànica de La Garrotxa. CREAF. En prensa.

Internet:
DJ Delorie (1998): Fórum de programción de DJGPP. http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp/1998/07/14/03:21:27