Personal tools
You are here: Home gvSIG Projects gvSIG Desktop Documentation User documentation Extensions Topología Topología 0.1.0
gvSIG Desktop
gvSIG Desktop

Cached time 11/21/13 14:45:17 Clear cache and reload

 
Document Actions

Topología 0.1.0

by Grupo gvSIG last modified 2010-10-29 15:38


Introducción

La consistencia lógica como componente de la calidad del dato geográfico

El proyecto de Topología de gvSIG trata de garantizar un componente esencial de la calidad de los datos geográficos vectoriales gestionados por gvSIG: la "coherencia o consistencia lógica" [1].

Por consistencia lógica entendemos dentro de este contexto la ausencia de contradicciones en un almacén de datos geográfico. Es una medida de la validez interna, la confiabilidad, que tiene una base de datos y por tanto se establece haciendo uso de la información almacenada en la propia base de datos geográfica.

De los tres tipos de consistencia lógica comúnmente reconocidos (espacial, temporal y temática) la extensión de Topología y análisis vectorial avanzado de gvSIG se centra en garantizar la consistencia espacial. De acuerdo con Veregin [2] la consistencia lógica espacial trata sobre el cumplimiento por parte de los datos geográficos de una serie de reglas topológicas. Estas reglas establecen restricciones que debe cumplir la componente espacial de los objetos geográficos, tanto de forma individual como en sus relaciones con los objetos que le rodean, y dependerán de como se pretenda modelar la realidad.

En resumen, para modelar la realidad geográfica se pueden construir distintos tipos de modelos de datos geográficos, modelos que tienen asociadas una serie de restricciones o reglas que deben cumplir las entidades/objetos implementadas mediante dichos modelos. Las restricciones o reglas que hacen referencia a la componente espacial del dato por sí mismas o en sus relaciones con los demás son conocidas como "restricciones topológicas". El conjunto de restricciones o reglas topológicas asociadas a un modelo de datos geográfico determinado se conocen como "modelo topológico" o simplemente "topología". La consistencia lógica espacial es un parámetro de la calidad del dato geográfico que nos indica el grado de cumplimiento dentro de un origen de datos de las restricciones topológicas impuestas.

img//arcnodetopology

Modelo topológico de Arc/Info.

El modelo topológico de coberturas de Arc/Info, modelo muy parecido al de otros productos software como GRASS [3], establece, entre otras, las siguientes reglas topológicas:

  • Todo elemento lineal está cerrada por 2 elementos puntuales.
  • Todo elemento lineal es compartido por dos elementos poligonales.
  • Todo elemento poligonal está rodeado por un ciclo de elementos lineales y puntuales.
  • Todo elemento puntual está cerrado por un ciclo de elementos lineales o poligonales.
  • No hay intersección entre elementos lineales si no existe un elemento puntual (nodo) en ella.

Necesidad de garantizar el cumplimiento de ciertos modelos topológicos para la realización de operaciones en productos SIG

Todo formato de almacenamiento de información espacial lleva implícito un modelo de datos y un modelo topológico, con mayor o menor grado de restricción:

  • Así, los formatos de CAD (dxf, dwg, etc.) siguen un modelo topológico “en spaguetti”. Este modelo es el menos restrictivo, equivalente a “no tener topología”. Puntos, líneas, curvas y superficies pueden convivir en un mismo dibujo, junto con textos, imágenes, etc. Esto es debido a la finalidad principal de este tipo de programas, orientados a la realización de dibujos para su posterior impresión.
  • Algunos formatos, como SHP, GML, etc. establecen restricciones en las relaciones que debe cumplir una geometría consigo misma: los polígonos deben estar cerrados, no pueden autointersectarse, etc.
  • Otros formatos son mas restrictivos (coberturas de Arc/Info, archivos vectoriales de GRASS), y establecen las relaciones que deben existir entre los elementos de una misma geometría, como en el caso anterior, y con los de otras geometrías, de la misma capa o de otras.

Para unificar la forma de trabajar con la información espacial procedente de formatos que siguen diferentes modelos lógicos, gvSIG ha definido su propio modelo de datos geográfico: el modelo de geometrías de FMap, de forma que los componentes de FMap encargados de realizar el acceso a datos convierten la información en el modelo original a este modelo. Este modelo se encuentra en un nivel de abstracción muy próximo al modelo de java2D para favorecer el rendimiento de las operaciones de renderizado, las más frecuentes en una aplicación SIG. El modelo topológico asociado a este modelo es un modelo muy poco restrictivo: un modelo "en spaguetti". De este modo, gvSIG es capaz de dibujar el máximo de fuentes de información geográfica, con independencia de la consistencia lógica de sus datos.

En el otro extremo de la realización de operaciones de renderizado y acceso a datos se encuentra la realización de operaciones de análisis vectorial y geometría computacional. Este tipo de operaciones requieren que los datos puestos en juego cumplan un mayor número de requisitos de calidad. gvSIG se apoya para la realización de este tipo de operaciones en la librería JTS, que define su propio modelo de restricciones topologicas, basado en el modelo topológico implícito de la especificación SFS de OGC. Para la realización de operaciones de análisis de redes también es necesario que las capas puestas en juego cumplan una serie de restricciones topológicas (comúnmente conocidas como "topología de líneas").

En caso de que no se cumplan las restricciones impuestas por estos modelos (modelo topológico implícito de OGC, modelo topológico de redes) los componentes de gvSIG encargados de la realización de estos análisis (geoprocesamiento, análisis de redes, etc.) lanzarán errores en tiempo de ejecución, o producirán resultados incorrectos.

Esto motiva la necesidad de dotar a gvSIG de funcionalidades de gestión topológica que permitan:

  • Definir un conjunto de restricciones topológicas que han de regir las relaciones de los elementos geométricos consigo mismos, con otros elementos geométricos de una misma capa y con los elementos geométricos de otras capas (proceso conocido como "creación de topología").
  • Validar el cumplimiento de las restricciones topológicas definidas en la topología por las diferentes geometrías puestas en juego en el modelo topológico.
  • Visualizar aquellos casos que no pasaron el proceso de validación originando errores topológicos, tanto de forma gráfica como alfanumérica, proporcionando información sobre el tipo de error producido y los elementos vectoriales que intervinieron.
  • Aplicar correcciones topológicas a las geometrías que causaron un error topológico, bien de forma automatizada mediante la ejecución de geoprocesos dedicados bien de forma interactiva haciendo uso de las herramientas de CAD de gvSIG.

La extensión de topología y análisis vectorial avanzado de gvSIG viene a cubrir todas estos requisitos.


Extensión de topología y análisis vectorial avanzado de gvSIG

Introducción

Las herramientas proporcionadas por la extensión de Topología de gvSIG se pueden agrupar en tres grandes grupos:

  • Herramientas para la definición de modelos topológicos (en adelante topologías), validación y posterior corrección de errores.
  • Herramientas CAD de edición topológica, que garanticen que las capas resultantes del proceso de edición son topológicamente correctas, o cumplen cualquier otro requisito relacionado con la topología de la capa.
  • Herramientas de geoprocesamiento, que corrijan por lotes las incorrecciones topológicas de una capa o la adecuen para su posterior inclusión en una topología.

En los siguientes apartados procederemos a describir estos grupos.


Construcción de modelos topológicos: control de calidad y correcciones automatizadas

Asistente para la construcción de nuevas topologías

El primer paso para empezar a utilizar la extensión de Topología de gvSIG es crear una vista y cargar una ( o varias) capas vectoriales en ella.

img//toc0

Barra de herramientas de Topología.

Seguidamente, podemos establecer una serie de restricciones topológicas sobre los elementos constituyentes de cada capa mediante la creación de una topología. Una topología es un objeto gvSIG constituido por una agrupación de capas y el conjunto de restricciones que estas capas deben cumplir por sí mismas y en sus relaciones con el resto de capas. Para garantizar la consistencia lógica del modelo topológico definido por una topología de gvSIG, no pueden existir capas vectoriales que formen parte de dos topologías.

img//create

Botón "Crear nueva topología"

Pulsando sobre este botón, que estará activo siempre que exista al menos una capa vectorial cargada en la vista actual, se mostrará el asistente para la creación de nuevas topologías.

img//wizardnew0

Asistente de creación de nuevas topologías.

Una vez saltada la primera pantalla introductoria del asistente, se nos muestra una pantalla en la que hay que empezar a definir algunas de las propiedades de la topología a construir.

img//wizardnew1

Nombre, tolerancia de snap y capas constituyentes.

En primer lugar hay que introducir el nombre de la topología. Es recomendable emplear un nombre descriptivo, que dé información sobre el tipo de restricciones topológicas introducidas. Por ejemplo: "limites catastrales", "red de carreteras", etc.

Seguidamente, se especificará la "tolerancia de cluster". Esta tolerancia indica la distancia que debe existir entre dos coordenadas para que el sistema no las considere iguales.

El número máximo de errores representa el umbral máximo tolerable de falta de consistencia lógica espacial de la topología. Cuando durante el proceso de validación de las reglas topológicas que rijen la topología el número de errores detectados supera este umbral, el proceso de validación se detendrá. Esto indicará que la consistencia lógica de los datos que forman parte de la topología es muy deficiente, y por tante, antes de seguir validando este parámetro de calidad es conveniente aplicar correcciones bien desde entornos CAD bien mediante geoprocesos de corrección topológica como BUILD o CLEAN.

El último paso para completar esta fase del asistente será especificar qué capas, de las cargadas en la vista activa, formarán parte de la topología. En el cuadro de selección de capas se mostrarán las capas vectoriales cargadas en el TOC de la vista que no formen parte ya de alguna topología.

img//wizardnew2

Definición de reglas topológicas.

La siguiente pantalla del asistente nos permitirá definir las reglas topológicas a aplicar sobre las capas que forman parte de la topología. Al principio no habrá definida ninguna regla, por lo que habrá que pulsar el botón "Añadir Regla", y se mostrará el diálogo "Reglas de la topología".

img//wizardnew2b

Diálogo "Reglas de la topología".

El diálogo consta de dos partes bien diferenciadas:

  • La parte de la izquierda permite especificar sobre qué capa de la topología se va a aplicar una regla, y qué regla aplicar. En función del tipo de geometría de la primera capa de la regla (punto, línea, polígono o multigeometría) se podrán aplicar unas reglas topológicas u otras. Actualmente la extensión de topología de gvSIG permite definir reglas que aplican sobre una sola capa (reglas reflexivas) o reglas que rigen las relaciones existentes entre las geometrías de dos capas. Si la regla seleccionada en el diálogo se aplica sobre dos capas, se activará la lista desplegable "Segunda capa que interviene en la regla", permitiendo al usuario escojer una capa entre el resto de capas de la topología.
img//wizardnew2c

Las reglas dependen del tipo de geometría de las capas seleccionadas.

  • La parte de la derecha muestra documentación de ayuda sobre la regla seleccionada.

Podemos añadir tantas reglas topológicas como deseemos, en las que intervengan una o más de las capas que conforman la topología. Con los botones "Eliminar Regla" o "Eliminar todas" se pueden eliminar alguna o todas las reglas añadidas a la topología. Al final de esta sección se incluye una guía sobre las reglas topológicas implementadas en gvSIG. Existe una regla que se añadirá por defecto para todas las capas incorporadas a la topología: la regla Mayor que la tolerancia de cluster. Esta regla fuerza que no haya puntos a una distancia entre sí inferior a la distancia de cluster, líneas cuya longitud sea inferior a esta tolerancia o polígonos cuyo perímetro y área se colapsen como efecto de aplicar dicha tolerancia.

Podemos navegar por las distintas fases del asistente con los botones "Anterior" y "Siguiente" hasta que finalmente, pulsando el botón "Fin" del asistente concluiremos el proceso de construcción de una nueva topología.

La nueva topología creada se representará en el TOC de la vista como una nueva agrupación de capas (lo cual es lógico, pues dos de las características de una topología son el estar formada por varias capas, y el hecho de que una misma capa no pueda pertenecer a dos topologías de forma simultánea).

img//newtopologytoc

Topología creada


Estado de una topología. Representación en el ToC

Una de las características de una topología de gvSIG es su estado en relación con la verificación de su propia consistencia lógica, es decir, el grado de cumplimiento de las reglas topológicas por parte de los features de las capas que forman parte de la topología.

Los estados que puede tener una topología son:

  • No validada. Topología que acaba de ser creada, formada por capas y reglas topológicas, pero en la que no se ha chequeado el cumplimiento de las restricciones impuestas por las reglas sobre los features de sus capas.
  • Validada. Topología en la que se ha verificado el cumplimiento de las reglas topológicas por los features de sus capas y en la que no se ha detectado ningún incumplimiento o error topológico.
  • Validada con errores. Topología en la que se ha verificado el cumplimiento de sus reglas topológicas y en la que se han detectado features que incumplen las restricciones impuestas.
  • Validada con zonas sucias. Topología en la que viniendo del estado "Validada", alguna de sus capas ha sufrido una modificación como consecuencia de un proceso de edición. Una zona sucia es una zona en la que las geometrías contenidas han sufrido una modificación, y por tanto existe la posibilidad de que se hayan introducido errores topológicos. En subsiguientes procesos de validación solo se evaluarán las reglas topológicas para los features contenidos en las zonas sucias existentes.
  • Validando. Una topología se encuentra en este estado durante el proceso de validación de sus reglas topológicas. No es conveniente realizar ninguna operación con la topología (ni con sus capas) mientres esté en este estado.
  • Vacía. Este estado solo es de interés para los desarrolladores que vayan a hacer uso del API de topología de gvSIG, definido en el proyecto libTopology.

Recien construida la topología, esta se crea en estado "No Validado". Mientras no se valide la topología, no existirá ninguna certeza de que los elementos de las capas que forman parte de la misma cumplan ningún criterio de calidad topológico.

El icono asociado a la topología en el TOC variará para indicarnos así su estado, empleándose actualmente los iconos reflejados en la siguiente figura.

img//statusicons

Iconos con los que se refleja el estado de una topología en el TOC.

Es muy importante comprender el significado del estado de una topología, y las implicaciones que tienen sobre éste las operaciones que se puedan realizar con las capas de la topología. Así, a modo de ejemplo, podemos encontrarnos con alguna de las siguientes situaciones:

  • Tenemos una topología con estado "No validado". Cualquier operación de edición sobre las capas de esta topología no modificará su estado, ni por tanto supondrá la creación de zonas sucias en la topología.
  • Validamos una topología y no se detectan errores durante el proceso, por lo que su estado pasará a ser "Validado". Si editamos alguna de las capas de la topología en este momento, su estado pasará a ser "Validado con zonas sucias".
  • Validamos una topología y se detectan violaciones de las reglas (errores topológicos). Su estado pasa a ser "Validado con errores".
  • Editamos las propiedades de una topología, y añadimos una nueva capa o una nueva regla. Su estado pasa a ser "No validado".
  • Lanzamos el proceso de validación de las reglas topológicas de una topología. Su estado pasa a ser "Validando".
  • Tenemos una topología con estado "validada con errores". gvSIG nos da la posibilidad de tolerar la ocurrencia de determinados errores topológicos marcándolos como excepciones de la regla. Si marcamos todos los errores como excepciones, la topología pasará a estar en estado "Validada".

Muchas de las herramientas que la extensión de topología de gvSIG proporciona no serán visibles en la barra de herramientas, ni estarán activas en las barras de menú a menos que la topología esté activa en el TOC.

img//validatedisabled

El botón "validar topología" está deshabilitado, al no estar una topología activa en el TOC.

img//validatenabled

Aparece activo cuando hay una topología seleccionada en el TOC.


Diálogo de propiedades de una topología

Como hemos visto con anterioridad, gvSIG considera una topología como un caso particular de agrupación de capas. No obstante, una topología tiene una serie de propiedades adicionales (además de una colección de capas vectoriales) como tolerancia de cluster, número máximo permitido de errores, estado de validación, reglas topológicas, errores detectados, etc.

Para tener en cuenta todas estas particularidades, el diálogo de propiedades de una topología en el TOC es distinto del diálogo de propiedades de una agrupación de capas. De este modo, seleccionando la opción "Propiedades..." en el menú desplegable del TOC de una topología recién creada, se nos mostrará el diálogo de la siguiente figura.

img//topologyproperties

Diálogo de propiedades de una topología recíen creada (estado "No validada").

El panel de propiedades de una topología está constituido por las siguientes pestañas:

  • General. Muestra atributos generales de la topología: nombre descriptivo, tolerancia de cluster, estado de validación (ver apartado anterior), Número máximo de errores, Número de capas que la forman y Número de reglas topológicas. Es la pantalla mostrada en la figura anterior. Algunos atributos son editables (si se modifica la tolerancia de cluster, el estado de la topología pasará a ser "No Validada").
  • Capas. Muestra las capas que forman parte de la topología. Permite añadir o eliminar capas (en cuyo caso también se reseteará el estado de la topología a "No validado").
img//topologypropertiesb

Pestaña "capas" del diálogo de propiedades de una topología.

  • Reglas topológicas. Muestra las reglas que forman parte de la topología. Tal y como comentamos con anterioridad, además de las reglas incorporadas por el usuario se añade por defecto la regla "Más grande que la tolerancia de cluster" para cada capa de la topología.
img//topologypropertiesc

Pestaña "reglas" del diálogo de propiedades de una topología.

  • Errores topológicos. Muestra los errores topológicos detectados durante el proceso de validación de la topología, y permite operar con ellos. Si el estado es "No validado" la tabla de errores aparece vacía.
img//topologypropertiesd

Pestaña "errores topológicos" del diálogo de propiedades de una topología.

En la siguiente figura podemos ver un ejemplo de pestaña de errores cuando la topología ha sido validada y se han detectado errores topológicos.

img//topologypropertiese

Pestaña "errores topológicos" para una topología con estado "Validado con errores".

En las columnas de la tabla de errores se muestra la siguiente información:

  • Regla violada. Regla que es incumplida por el error.
  • Capa 1. Capa de origen de la regla. Una regla topológica puede afectar a una sola capa (capa de origen) o a dos capas (capa de destino.
  • Capa 2. Capa de destino de la regla.
  • Tipo de geometría. Tipo de geometría del error. Todo error topológico tiene asociada una geometría del error, y esta columna nos indica si dicha geometría es puntual, lineal, poligonal o de tipo múltiple.
  • Feature 1. En un error topológico pueden intervenir cero, uno o dos features. En esta columna se muestra el código del primer feature implicado en el error. Un ejemplo de error en el que no interviene ningún feature es la infracción de la regla "No puede tener huecos" de una capa poligonal.
  • Feature 2. Código del segundo feature implicado en el error.
  • Excepción. Indica si el error es tolerado (NO) o por el contrario el usuario lo ha marcado como excepción (SI).

Desde la pestaña "errores topológicos" podemos realizar las siguientes acciones:

  • Filtrar los errores mostrados en la tabla por regla incumplida. En la lista desplegable "Mostrar" se puede seleccionar la opción "Mostrar todas las reglas" (activa por defecto) o bien se puede escoger alguna de las reglas topológicas que han sido infringidas durante el proceso de validación. Pulsando el botón "Actualizar" se actualizará el contenido de la tabla de errores, de tal forma que solo se muestren los errores fruto de incumplir la regla seleccionada. Los cuadros de selección "Errores", "Excepciones" y "Vista actual" permiten filtrar todavía mas el contenido de la tabla. Si el checkbox "Errores" está marcado, se mostrarán los errores topologicos. Si está marcado el checkbox "Excepciones" se mostrarán aquellos errores que el usuario haya decidido tolerar marcándolos como excepción (seguidamente veremos como hacer ésto). El checkbox "Vista actual" permite filtrar el contenido de la tabla de errores de tal forma que solo se muestren los errores cuya geometría está contenida en el puerto de visión de la vista actual de gvSIG.
img//rulefilterdetail

Detalle de la lista desplegable "Mostrar" que permite filtrar el contenido de la tabla de errores.

  • Lanzar un proceso de corrección por defecto para los errores detectados. Toda infracción de una regla topológica tiene un proceso de corrección por defecto asociado (profundizaremos en esto con más detalle al ver la guía de reglas implementadas por gvSIG). Así, por ejemplo, la regla topológica "Las líneas no pueden autointersectarse" tiene asociada la corrección por defecto "Dividir línea por punto de autointersección". Los procesos de corrección por defecto pueden requerir de la participación del usuario (por ejemplo: si dos polígonos se intersectan, la corrección "borrar polígono" puede requerir que el usuario pulse sobre el polígono a borrar) o pueden ejecutarse automáticamente. Si el usuario pulsa sobre el botón "Corrección por lotes" de la pestaña de errores topológicos gvSIG aplicará la corrección por defecto en todos los errores detectados siempre que no requiera de la participación del usuario.
  • Mostrar el menú contextual asociado a cada error topológico.
img//topologyerrorpopup

Menú contextual asociado a cada error topológico.

Este menú contextual tiene una parte común a todos los errores topológicos y una parte que dependerá de la regla violada por el error. La parte común a todos los errores permite realizar las siguientes operaciones:

  • Desplazar. Desplaza el puerto de la visión de la vista activa para que su centro coincida con el centro del MER (Bounding Box) de la geometría del error.
  • Zoom. Cambia el puerto de visión para que coincida con el MER de la geometría del error.
  • Ver descripción de la regla. Muestra información sobre la regla topológica infringida.
img//viewruledescription

Información de la regla infringida al pulsar la opción "Ver descripción de la regla".

  • Marcar el error como excepción. Si se ejecuta esta opción del menú, el error topológico será considerado una "excepción a la regla".

La parte que depende del tipo de regla infringida será una entrada por cada una de las correcciones que la regla tenga asociada. En el caso del ejemplo de la figura, la regla violada es "Los polígonos de una capa no pueden solaparse". Esta regla tiene asociada tres tipos de correcciones: 'añadir el área de solape a uno de los dos polígonos', 'eliminar dicha área de los dos polígonos dejando un hueco' y 'eliminar dicha área de los dos polígonos construyendo un nuevo feature cuya geometría sea el área de solape'. El menú contextual mostrará una entrada para cada una de estas correcciones.

Si se aplica alguna de las correcciones predefinidas, las capas afectadas por la corrección se pondrán en modo edición, aplicándose las modificaciones inherentes al tipo de corrección. No obstante, estos cambios no se harán persistentes hasta que el usuario seleccione una a una las capas editadas y ejecute la acción "Terminar edición".

En las siguientes figuras se puede ver un ejemplo del proceso de corrección desde el menú desplegable de cada error topológico.

img//fixes1

Desplegables de posibles soluciones al error.

Seleccionamos un error del tipo "No puede tener huecos" y accionamos la corrección "Crear nuevo feature que cubra el hueco".

img//fixes2

Mensaje "Corrección realizada con éxito"

Una vez realizada la corrección, se mostrará un diálogo con el mensaje "Corrección realizada con éxito". Pulse aceptar

img//fixes3

Resultado de la corrección

Como resultado, el hueco aparece relleno por un nuevo feature poligonal, y en el TOC la capa afectada está en modo edición. Para guardar los cambios hay que accionar la opción "Terminar edición" de la capa de la topología.


Proceso de validación de una topología

Como hemos visto con anterioridad, el estado de una topología recién construida es "No validada". En este estado, se han definido las restricciones que deben cumplir las geometrías de los features que constituyen las capas que forman parte de la topología, pero no se dispone ninguna información sobre el grado de cumplimiento de estas reglas (su consistencia lógica). Para validar una topología, debemos seleccionarla en el TOC y accionar el botón "Evaluar topología" de la barra de herramientas.

img//evaluatetopology

Icono evaluar topología

Si accionamos este botón, inmediatamente se lanza un geoproceso en el que se nos van notificando las reglas que están siendo evaluadas en cada momento.

img//evaluatetopology2

Proceso de evaluación de una topología.

Al finalizar el proceso de evaluación de la topología, el icono de la topología en el TOC nos indicará el resultado de la misma. Para obtener más información sobre el estado y los errores hay que abrir el diálogo de propiedades de la topología visto con anterioridad.

Si el estado de la topología es "Validada", y accionamos el botón no se desencadenará ningún proceso de validación. Si el estado de la topología es "Validada con errores" el proceso de verificación de reglas solo se lanzará para las zonas sucias detectadas (una zona sucia, expresado de forma muy simplificada, es el MRE de la geometría de un error). Si ponemos en edición una capa de una topología "Validada", aplicamos una serie de cambios y guardamos los resultados, el estado de la topología pasará a ser "Validada con zonas sucias", pues se habrá creado una zona sucia correspondiente al MRE de la geometría del cambio aplicada. ¡Ojo! Este cambio de estado solo se producirán cuando se guarden los cambios de la edición. En sucesivos procesos de evaluación de la topología las reglas topológicas solo se verificarán para las regiones contenidas en las zonas sucias.


Guardando y cargando topologías

La tarea de definición de las restricciones que deben existir entre las capas de nuestro modelo de datos SIG para garantizar su calidad no puede perderse cada vez que dejemos de utilizar gvSIG. Por este motivo, la extensión de topología de gvSIG proporciona las funcionalidades "Guardar topología" y "Cargar topología".

La topología se almacenará en un fichero de extensión *.xml. El botón "Guardar topología" solo estará activo si existe una topología activa en el TOC de una vista.

img//loadtopology

Icono "Cargar topología".

img//savetopology

Icono "Guardar topología".


Guía de reglas topológicas implementadas en gvSIG

Introducción

A continuación se presenta una referencia de las reglas topológicas incluídas en la primera versión de la extensión de Topología y análisis vectorial avanzado de gvSIG. La parte de proceso topológico de este proyecto es realizada por la librería org.gvsig.topology.jar, generada por el proyecto libTopology, que define un marco de desarrollo extensible que permite a cualquier desarrollador introducir nuevas reglas topológicas (y / o alfanuméricas).

Seguidamente procedemos a describir cada una de las reglas introducidas en la primera versión de la extensíon.


Reglas topológicas implementadas en gvSIG

GEOMETRÍA JTS VÁLIDA.

-Descripción

Actualmente gvSIG trabaja para la mayor parte de sus operaciones con un modelo de geometrías que establece muy pocas restricciones topológicas, casi en "espaguetti". La principal ventaja de este modelo es que su nivel de abstracción es muy cercano al del API empleado para renderizar mapas (Java2D), lo que permite que gvSIG tenga una velocidad de renderizado de geometrías vectoriales muy elevada.

Un beneficio adicional de emplear un modelo de geometrías con pocas restricciones topológicas es que permite dibujar prácticamente la totalidad de orígenes de datos. Al establecer pocas restricciones topológicas, casi la totalidad de los datos cumplen estas restricciones y por tanto pueden ser dibujados sin problemas.

A la hora de realizar operaciones de geoprocesamiento vectorial gvSIG se apoya en la funcionalidad de la librería JTS [1], al igual que la gran mayoría del resto de proyectos SIG del stack OSGeo como UDIG, PostGIS, OpenJUMP, etc. JTS es una librería Java que trata de implementar (en un 99%) la especificación SFS de OGC, especificación que define un modelo de geometrías propio [2], mucho más restrictivo topológicamente que el modelo de geometrías de gvSIG.

El hecho de que el modelo de geometrías empleado por gvSIG para renderizar apenas introduzca restricciones topológicas hace que a la hora de aplicar funciones de análisis y geoprocesamiento sobre geometrías que sí podemos visualizar, en ocasiones nos encontremos con el efecto no deseado de que no podemos realizar estas operaciones, al no cumplir estas geometrías las restricciones topológicas impuestas por el modelo de JTS.

Esta regla topológica verifica que las geometrías de una capa vectorial verifican las restricciones topológicas impuestas por el modelo topológico de JTS, y que por tanto originarán geometrías JTS válidas.

topologia/img/R-valida-jts-es.png

Regla: Valida para su conversión a JTS

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Eliminar: Borrar el Feature cuya geometría no cumple la regla.

LAS LÍNEAS NO PUEDE TENER NODOS COLGANTES.

-Descripción

Esta regla verifica que todas las geometrías de una capa de líneas conectan en sus extremos con otras geometrías de la misma capa. Los extremos de línea que no conecten con otras líneas generarán errores, conocidos en este caso como nodos colgantes.

Esta regla es de utilidad cuando las geometrías lineales de una capa deben formar circuitos cerrados, como por ejemplo los bordes de polígonos. De este modo, si queremos convertir una capa de líneas en una capa de polígonos que cubra completamente el espacio (sin huecos), podemos verificar si vamos a encontrar problemas en la conversión mediante esta regla. También es de utilidad en el caso de líneas que deben conectar con otras líneas, como los tramos de un callejero. En este caso, cuando un nodo colgante se corresponda con un fin de calle o callejón sin salida, los errores topológicos encontrados podrán ser marcados como excepciones.

topologia/img/R-la-linea-no-puede-tener-pseudonodos-es.png

Regla: Las líneas no pueden tener nodos colgantes

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Lineal.

-Correcciones predefinidas de los errores/incumplimientos

Extender nodo colgante hasta el nodo más próximo. Desplaza el nodo colgante hasta el nodo más próximo, siempre que la distancia de desplazamiento no supere un umbral determinado. Si se produce la corrección, garantiza que no se introducen pseudonodos.

Extender nodo colgante hasta el vértice más próximo. Igual que el anterior, pero el desplazamiento es hasta el vértice más próximo de otra geometría. Si se produce la corrección, se está introduciendo un pseudonodo (dos líneas que intersectan en un punto que no es nodo o extremo de línea).

LAS LÍNEAS NO PUEDEN TENER PSEUDONODOS.

-Descripción

Verifica que todo extremo de una línea conecte al menos con dos líneas. Si una línea tiene un extremo (nodo) que solamente conecta con el extremo de otra línea, a este extremo se le conoce como pseudonodo. Este tipo de restricción topológica es util para modelar tramos de vias urbanas, en los que el fin de un trama aparece delimitado por la aparición de una bifurcación. La finalización del tramo en un punto en el que no existen bifurcaciones definiría un pseudonodo (que podría ser tolerado si se marca como excepción).

topologia/img/R-la-linea-no-puede-tener-pseudonodos-es.png/

Regla: Las líneas no pueden tener pseudonodos.

Normalmente, en la literatura SIG también se ha conocido con el nombre de pseudonodo los casos en los que dos líneas intersectan en un punto que no es nodo de ambas líneas. Este tipo de pseudonodos no son detectados por esta regla topológica. El geoproceso "Limpiar topología" permite detectar este otro tipo de pseudonodos, y fragmentar las líneas originales para generar un conjunto de líneas conectadas en nodos.

Futuras versiones de la extensión de Topología de gvSIG incorporarán reglas topológicas para detectar este tipo de errores (Line must not intersect in non node points)

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Lineal.

-Correcciones predefinidas de los errores/incumplimientos

Eliminar pseudonodo. Fusiona las dos líneas que han originado el pseudonodo en una única línea.

LAS LÍNEAS NO PUEDEN TENER AUTOINTERSECCIONES.

-Descripción

Tanto el modelo de geometrías de renderizado de gvSIG (API de geometrias de FMap, muy próximo al API de geometrías de AWT/Java2D) como el modelo de geometrías de JTS permite que las geometrías lineales se autointersecten (aunque no las geometrías poligonales).

Esta regla permite añadir un grado de restricción adicional, verificando que las geometrías de una capa de líneas no puedan autointersectarse, a no ser que se trate de geometrías cerradas, no siendo por tanto la "autointersección" otra cosa que la coincidencia de los nodos de inicio y fin de la línea. Una autointersección es un tipo particular de pseudonodo de intersección (intersección de una línea consigo misma en un punto que no es nodo).

topologia/img/topologia/img/R-la-linea-no-puede-tener-autointersecciones-es.png

Regla: Las líneas no pueden tener autointersecciones

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Lineal.

-Correcciones predefinidas de los errores/incumplimientos

Fragmentar línea. Divide la línea que se autointersecta en el punto de autointersección, que pasará a ser nodo extremo de las nuevas líneas generadas.

LOS POLÍGONOS NO PUEDEN TENER AUTOINTERSECCIONES.

-Descripción

Esta restricción verifica que ninguno de los anillos (borde exterior o huecos) o partes de una geometría polígonal presenta autointersecciones.

topologia/img/R-los-poligonos-no-pueden-tener-autointersecciones-es.png

Regla: Los polígonos no pueden tener autointersecciones

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Poligonal.

-Correcciones predefinidas de los errores/incumplimientos

Fragmentar polígono por autointersecciones. Divide el polígono o superficie 2D que infringe la regla por sus puntos de autointersección. Siendo n el número de autointersecciones detectadas, se generarán n+1 polígonos.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN ESTAR CONTENIDAS EN UNA GEOMETRÍA DE LA CAPA DESTINO.

-Descripción

Toda geometría de la capa A (origen) debe estar contenida en una geometría de la capa B (destino). Un caso típico de aplicación de esta regla lo encontramos para modelar divisiones administrativas (naciones) y subdivisiones de éstas (provincias). Un matiz que diferencia esta regla de la regla "las geometrías de A deben estar cubiertas por una geometría de B" es la la diferencia entre "contenido" y "cubierto". En la relación "contenido" el borde de la geometría contenida debe ser disjunto con el borde de la geometría contenedora.

topologia/img/topologia/img/R-las-geometrias-de-A-debe-estar-contenidas-en-geometrias-de-B-es.png

Regla: Las geometrías de A deben estar contenidas en geomtrias de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN ESTAR CUBIERTAS POR UNA GEOMETRÍA DE LA CAPA DESTINO.

-Descripción

Similar a la regla "Las geometrías de A deben estar contenidas en una geometría de B", con un matiz diferenciador: si una geometría de A recae en el borde de una geometría de B, estará cumpliendo la regla. Por ejemplo, si A es una capa de líneas, y B una capa de polígonos, y una geometría de A coincide con el borde de un polígono de B (o está cubierta por dicho borde), aunque dicha geometría de A no esté en el interior del polígono de B, estará cumpliendo la restricción topológica.

topologia/img/R-toda-geometria-de-A-debe-ser-cubierta-por-una-o-varias-geometria-de-B-es.png

Regla: Toda geometría de A debe ser cubierta por una o varias geometrias de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN ESTAR CUBIERTAS POR LAS GEOMETRÍAS DE LA CAPA DE DESTINO.

-Descripción

Similar a la regla "Las geometrías de A deben estar cubiertas por una geometría de B", con la diferencia de que en este caso una geometría de A no tiene que estar cubierta por una única geometría de B, sino que cumplirá la restricción si es cubierta por varias geometrías.

topologia/img/R-las-geometrias-de-A-debe-estar-cubiertas-por-geometrias-de-B-es.png

Regla: Las geometrias de A deben estar cubiertas por las geometrías de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBE TENER UNA GEOMETRÍA EQUIVALENTE (IGUAL) EN LA CAPA DE DESTINO.

-Descripción

Esta regla topológica sirve para detectar cambios o modificaciones entre diferentes versiones de una misma capa. Fuerza a que toda geometría de una capa tenga una geometría equivalente en otra capa. Si no se cumple esta restricción, se han introducido modificaciones.

topologia/img/R-toda-geometria-de-A-debe-tener-una-geometria-igual-en-B-24-es.png

Regla: Toda geometría de A debe tener una geometria igual en B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN CONTENER AL MENOS UNA GEOMETRÍA DE LA CAPA DE DESTINO.

-Descripción

Toda geometría de A debe contener al menos una geometría de B. Esta regla puede ser de utilidad para garantizar la integridad "entre capas" cuando una capa es el resultado de aplicar un geoproceso a otra capa. Por ejemplo, si calculamos el buffer de una capa de puntos, los polígonos de la capa resultante deben contener al menos un punto de la capa de partida.

topologia/img/img/R-toda-geometria-de-A-debe-contener-una-geometria-de-B-es.png

Regla: Toda geometría de A debe contener una geometría de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN CUBRIR AL MENOS UNA GEOMETRÍA DE LA CAPA DE DESTINO.

-Descripción

Equivalente a la regla anterior "las geometrías de A deben contener al menos una geometría de B". El matiz está en la diferencia entre "contener" y "cubrir". Supongamos que tenemos una capa con las principales ciudades unidas por ferrocarril, de puntos, y una capa de líneas con las líneas de ferrocarril de primer orden que unen estas ciudades. Esta regla nos permitiría garantizar que no hay líneas de ferrocarril de primer orden que no cubran ciudades.

topologia/img/R-toda-geometria-de-A-debe-cubrir-una-geometria-de-B-es.png

Regla: Toda geometría de A debe cubrir al menos una geometría de B.

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN CRUZARSE AL MENOS CON UNA GEOMETRÍA DE LA CAPA DE DESTINO.

-Descripción

Esta regla trata de garantizar que toda geometría de la capa A se cruce con al menos una geometría de la capa B. Una geometría se cruza con otra si comparte algunos puntos de su interior, aunque no todos.

topologia/img/R-toda-geometria-de-A-debe-cruzarse-con-una-geometria-de-B-es.png

Regla: Toda geometría de A debe cruzarse al menos con una geometría de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

Solo hay que tener en cuenta un matiz: si aplicamos esta regla para dos capas de puntos, solamente se cruzarán aquellas geometrías que sean coincidentes.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN SER DISJUNTAS CON LAS GEOMETRÍAS DE LA CAPA DE DESTINO.

-Descripción

Esta regla topológica sirve para verificar que las geometrías de la capa A no compartan ningún punto con las geometrías de la capa B. Si alguna geometría de A comparte al menos un punto con una geometría de B, ya no serán disjuntas y se estará incumpliendo la regla.

topologia/img/R-las-geometrias-de-A-y-B-deben-ser-disjuntas-es.png

Regla: Las geometrias de A y B seben ser disjuntas.

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE UNA CAPA NO PUEDEN TENER DUPLICADOS.

-Descripción

Esta regla topológica trata de garantizar que dentro de una misma capa no haya dos geometrías iguales, o cuya similaridad sea tan elevada que puedan llegar a ser consideradas iguales. En este sentido, los criterios de similaridad variarán según el tipo de la geometría de la capa:

topologia/img/R-No-puede-tener-geometrias-duplicadas-es.png

Regla: No puede tener geometrías duplicadas.

  • Para capas de puntos: dos puntos son iguales si tiene las mismas coordenadas, o se encuentran separados por una distancia inferior a la distancia de cluster de la topología.
  • Para capas de líneas: dos líneas son iguales si tienen el mismo número vértices, y las coordenadas de estos son iguales. En el caso de que esto no suceda, se aplica el criterio de la "banda epsilon". Cada una de las líneas a comparar define una banda, resultado de obtener un buffer de la línea empleando como distancia de buffer la tolerancia de cluster. Si la banda de una línea contiene completamente a la banda de la otra línea, se considerará que las líneas son equivalente. Finalmente, si ambas bandas se solapan en una proporción superior a un umbral porcentual, también se considerarán equivalentes (el umbral implementado actualmente es del 85%. En futuras versiones de la extensión de Topología se podrá especificar este umbral en la página de preferencias de la extensión).
  • Para capas de polígonos: dos poligonos son iguales si sus bordes tienen el mismo número de vértices, sus coordenadas son iguales, e idéntico criterio se cumple para sus huecos. Si no se verifica la igualdad, la regla aplicará una ponderación de los criterios de similaridad de polígonos definidos por el proyecto JCS (Jcs Conflation Suite), accesibles en [3], siendo concretamente:
    • Distancia entre centroides. Cuanto menor sea esta distancia, más similares serán los dos polígonos comparados.
    • Distancia Hausdorff. Longitud de la mayor desviación local de las dos geometrías. Cuanto menor sea esta distancia, mayor será la similitud entre las dos geometrías.
    • Diferencia simétrica. La diferencia simétrica de un polígono respecto del otro está constituido por las áreas de éste que no se solapan con el otro. Cuanto menor sea la diferencia simétrica entre dos polígonos, mayor será su similaridad.
    • Compacidad. El índice de compacidad de cada polígono es el ratio área/perimetro. Cuanto menor sea la diferencia de compacidad entre los dos polígonos, mayor será su similaridad.
    • Histograma angular. El histograma angular de un polígono es el histograma de los ángulos que los segmentos del polígono forman con el eje x cartesiano, ponderado con la longitud del segmento. Cuanto mayor sea la similaridad de los histogramas angulares de dos polígonos, mayor será la similaridad de estos.

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DE LA CAPA DE ORIGEN DEBEN TOCAR AL MENOS UNA GEOMETRÍA DE LA CAPA DE DESTINO.

-Descripción

Este regla pretende garantizar la mínima condición para que dos capas no sean disjuntas: que las geometrías de A se toquen al menos con una de las geometrías de B. Dos geometrías se tocan si tienen al menos un punto en común pero sus interiores no intersectan. Si consideramos una capa con edificios, y otra con muros que rodean a éstos, esta regla nos permitirá garantizar que todo muro debe tocar un edificio.

topologia/img/R-toda-geometria-de-A-debe-tocar-una-geometria-de-B-es.png

Regla: Toda geometrías de A debe tocar una geometría de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Indiferente.

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS DEBEN SER MAYORES QUE LA TOLERANCIA CLUSTER.

-Descripción

Esta regla trata de garantizar que una capa no contiene geometrías espúreas o residuales. La consideración de que una geometría es residual, y no debe ser tenida en cuenta en una capa, se hace a partir de la tolerancia de cluster de la topología (que sería equivalente a las dimensiones de la minima unidad cartografiable), en función del tipo de geometría:

  • Una geometría líneal será considerada espúrea si su longitud es inferior a la tolerancia de cluster. Todos los vértices que se encuentren a una distancia entre ellos inferior a la tolerancia de cluster serán colapsados.
  • Una geometría polígonal será espúrea si su superficie es inferior al cuadrado de la tolerancia de cluster.

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Lineal (dimensión = 1) o poligonal (dimension = 2).

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LAS GEOMETRÍAS NO PUEDEN TENER PUNTOS CONSECUTIVOS REPETIDOS.

-Descripción

Tanto el modelo de geometrías de JTS como el modelo de geometrías definido por gvSIG en su librería vectorial FMap, permite que una geometría tenga coordenadas consecutivas repetidas. Esta regla trata de añadir un nivel adicional de restricción detectando aquellas ocurrencias de geometrías con coordenadas consecutivas repetidas, con el objetivo de corregirlas.

topologia/img/R-No-puede-tener-coord.-repetidas-es.png

Regla: No puede tener coordenadas repetidas.

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Lineal o poligonal.

-Correcciones predefinidas de los errores/incumplimientos

Eliminar coordenadas repetidas. Genera una geometría equivalente a la original sin coordenadas consecutivas repetidas.

LOS PUNTOS NO PUEDEN SOLAPARSE.

-Descripción

Esta regla verifica que en una capa de puntos no existen puntos situados entre sí a una distancia inferior a la tolerancia de cluster.

topologia/img/R-Los-puntos-de-una-capa-no-pueden-solaparse-entre-si-es.png

Regla: Los puentos de una misma capa no pueden solaparse entre si.

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Puntual (dimensión cero).

-Correcciones predefinidas de los errores/incumplimientos

Borrar elemento causante. Borra todas las geometrías de la capa A que no cumplen la regla.

LOS POLÍGONOS NO PUEDEN SOLAPARSE.

-Descripción

Esta regla trata de garantizar que los polígonos de una capa no se solapan entre sí, de tal forma que la intersección entre dos polígonos de una misma capa solo podrá ser un punto o una línea, nunca otro polígono. Esta regla, en combinación con la regla "los polígonos de una capa no pueden presentar huecos" asegura que una capa de polígonos cubre totalmente el espacio, sin solapamientos entre polígonos. Ambas reglas permiten emular el comportamiento del modelo topológico de coberturas (implementado en las versiones antiguas del software de ESRI) para capas de polígonos.

topologia/img/R-Los-poligonos-de-una-capa-no-pueden-solaparse-es.png

Regla: Los polígonos de una capa no pueden solaparse

-Número de capas que intervienen en la regla.

Una.

Tipo de geometría de las capa

Poligonal (2 Dimensiones).

-Correcciones predefinidas de los errores/incumplimientos

  • Eliminar área de solape. Substrae el área de solape de los dos polígonos que originan el error.
  • Crear nuevo polígono. Crea un nuevo feature de geometría poligonal con el área de solape, substrayendo esta área de los dos poligonos que originaron el error.
  • Añadir solape a uno de los dos polígonos. Añade el área de solape a uno de los dos polígonos, substrayéndosela al otro polígono. Esta corrección no es completamente automatizada, y requiere de la intervención del usuario. Cuando se activa esta opción desde el menú desplegable, se muestra un diálogo. Accionando en este diálogo el botón "seleccionar geometría que perderá el área", se podrá seleccionar sobre el mapa la geometría que perderá el área de solape. Seguidamente, pulsando aceptar se producirá la corrección.

LOS POLÍGONOS DE LA CAPA DE ORIGEN NO PUEDEN SOLAPARSE CON LOS POLÍGONOS DE LA CAPA DE DESTINO.

-Descripción

Esta regla trata de garantizar que los polígonos de dos capas guardan cierta relación, de tal forma que no se solapen. Esto es de utilidad, por ejemplo, cuando tenemos divisiones administrativas de diferente nivel (naciones, provincias) y queremos que las de inferior jerarquía estén contenidas en las de superior jerarquía sin solaparse.

topologia/img/R-Los-poligonos-de-A-no-pueden-solaparese-con-los-poligonos-de-B-es.png

Regla: Los polígonos de A no pueden solaparse con los polígonos de B

-Número de capas que intervienen en la regla.

Dos.

-Tipo de geometría de las capa

Poligonal.

-Correcciones predefinidas de los errores/incumplimientos

  • Añadir solape a uno de los dos polígonos. Añade el área de solape a uno de los dos polígonos, substrayéndosela al otro polígono. Esta corrección no es completamente automatizada, y requiere de la intervención del usuario. Cuando se activa esta opción desde el menú desplegable, se muestra un diálogo. Accionando en este diálogo el botón "seleccionar geometría que perderá el área", se podrá seleccionar sobre el mapa la geometría que perderá el área de solape. Seguidamente, pulsando aceptar se producirá la corrección.
  • Eliminar área de solape. Substrae el área de solape de los dos polígonos que originan el error.

LAS GEOMETRÍAS (LÍNEAS O POLÍGONOS) DEBEN SER CERRADAS.

-Descripción

Esta regla trata de garantizar que una geometría es cerrada (su primer y último punto coinciden), considerando una tolerancia de cluster dada. Para el caso de capas de polígonos, garantiza la corrección de éstas, como paso previo a cualquier proceso de análisis. Para el caso de capas de líneas, la verificación de esta regla es un paso previo conveniente previo a la conversión a capa de polígonos.

topologia/img/R-La-geometria-debe-ser-cerrada-es.png

Regla: Las geometrías deben ser cerradas

-Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Lineal o poligonal.

-Correcciones predefinidas de los errores/incumplimientos

  • Eliminar overshoot. Si la geometría cierra áreas, pero el último punto no coincide con el primero, se elimina el segmento sobrante.
  • Añadir undershoot. Si la geometría no cierra áras, se añade un segmento que una el último punto con el primero.

LA CAPA DE POLÍGONOS NO PUEDE PRESENTAR HUECOS.

-Descripción

Esta regla permite garantizar que las geometrías poligonales de una capa cubren completamente el espacio, de tal forma que no existe ninguna zona no cubierta. Aquellas zonas no cubiertas constituirán huecos.

topologia/img/R-No-puede-haber-huecos-entre-poligonos-es.png

Regla: La capa de polígonos no puede tener huecos

Número de capas que intervienen en la regla.

Una.

-Tipo de geometría de las capa

Poligonal.

-Correcciones predefinidas de los errores/incumplimientos

Añadir nuevo polígono. Por cada hueco detectado, se creará un nuevo feature cuya geometría será el polígono del hueco.


Herramientas de edición topológica

Introducción

El proceso de edición cartográfica, para la digitalización de nuevos datos o la modificación de los datos ya existentes, es fuente frecuente de inconsistencias topológicas como son duplicados, huecos entre polígonos (gaps), nodos colgantes, pérdida de conectividad entre tramos de redes, etc.

Durante este proceso de edición, en ocasiones será conveniente considerar las geometrías de una capa como carentes de topología (y por tanto susceptibles de ser modificadas de forma aislada e independiente, como en los programas de CAD tradicionales) y en ocasiones será conveniente considerar si forman parte de una topología, y por tanto mantienen relaciones espaciales con las geometrías de su vecindad (ya sean de la misma capa o de capas diferentes).

Para evitar que durante el proceso de edición cartográfica se introduzcan errores topológicos como resultado de no considerar las relaciones de "geometría compartida" existentes entre las geometrías de una o varias capas, la extensión de topología y análisis vectorial avanzado de gvSIG incorpora una herramienta de edición topológica. Además, se proporcionan herramientas de edición que se han venido demandando fuertemente en los foros de usuarios de gvSIG:

  • Fragmentar geometría digitalizando línea de corte.
  • Generalizar geometría (algoritmo de Douglas-Peuckert).
  • Suavizar geometría aplicando curva matemática.
  • Digitalizar polígono que comparta lado con otro polígono preexistente.
  • Obtener información sobre una geometría: representación WKT [4] y [5], área, perímetro, etc.

En los siguientes apartados describimos cómo usar las herramientas de edición topológica y edición avanzada incorporadas en la extensión de Topología de gvSIG.


Herramienta "Edición topológica"

Esta herramienta permite desplazar un vértice de la geometría seleccionada en una capa de una topología, asegurándose que todas aquellas geometrías del resto de capas de la topología que compartan dicho vértice (o que tengan segmentos que lo contengan) lo desplacen también de forma solidaria.

img//topologyedit

Icono de la herramienta "Edición Topológica".

Para poder utilizar esta herramienta, debe estar cargada una topología en el TOC de la vista, y debe ponerse en modo edición alguna de sus capas. De lo contrario, ni siquiera se mostrará el botón de edición topológica en la barra de herramientas.

Para entender mejor la diferencia entre la herramienta "Edición Topológica" y la herramienta "Desplazar vértice" de la extensión de CAD de gvSIG, veamos el ejemplo de la figura siguiente. Tenemos dos polígonos, de una misma capa, que comparten un vértice (el número 12).

img//preedicion

Polígonos que comparten vértices antes de su edición.

Si seleccionamos uno de los dos polígonos con la herramienta "Seleccionar", y a continuación desplazamos el vértice común (simplemente hay que pulsar encima con el ratón y arrastrarlo) veremos que solo se ha desplazado el vértice en el polígono seleccionado (aunque compartan dicha geometría).

img//postedicion

Resultado de editar un vértice común a dos polígonos sin usar las herramientas de edición.

Por el contrario, si una vez seleccionado uno de los dos polígonos, pulsamos sobre la herramienta "Edición topológica", y a continuación pulsamos sobre el vértice que deseamos desplazar de forma solidaria, éste vértice se desplazará conforme vayamos arrastrando el ratón en todas las geometrías de la topología que contengan dicho vértice, bien de forma explícita -tienen un vértice en la misma coordenada- bien de forma implícita -tienen un segmento que contenga dicho vértice-.

img//duringedition

Desplazamiento del vértice compartido con la herramienta de edición topológica.

Al final de la operación, todas las geometrías que contengan dicho vértice modificarán la posición de éste. Esta operación implica que aunque nosotros hayamos puesto en "modo edición" una sola capa de la topología, automáticamente se pondrán en modo edición todas aquellas capas de la topología que compartan el vértice desplazado. Siguiendo la operativa normal de la extensión de CAD de gvSIG, estos cambios no se almacenarán de forma persistente hasta que no se termine la edición.

img//posteditiontopology

Resultado de desplazar un vértice utilizando la herramienta de edición topológica.

En este caso solo se ha desplazado de forma solidaria un vértice común a dos geometrías de la misma capa. No obstante, si en la topología hubiese habido otras geometrías que compartiesen dicho vértice, éstas hubiesen modificado también de forma solidaria la posición del mismo.


Herramienta "Partir geometría"

Esta herramienta permite fragmentar una geometría de tipo linea o polígono a partir de una línea de recorte digitalizada con el ratón. Para usar la herramienta es necesario poner una capa de líneas o polígonos en edición (no es necesario que formen parte de una topología) y seleccionar la geometría que se desea fragmentar (si no existe una geometría seleccionada la herramienta no estará activa).

img//cut

Icono de la herramienta "partir geometría".

img//duringcut

Digitalización de la línea de recorte que nos permitirá partir la geometría.

img//postcut

Resultado de partir la geometría con la línea de recorte.

Esta operación se puede realizar también sobre geometría de tipo línea.


Herramienta "Generalizar geometría"

La herramienta "generalizar geometría" permite simplificar la representación de una geometría gvSIG de 1 o 2 dimensiones (polilínea o curva, polígono o superficie), de forma que se reduzca el número de puntos con el que se representa la geometría, preservándose las principales propiedades de ésta (se conserva la cantidad de información, reduciéndose el número de datos necesario para su representación [6]).

La herramienta será visible y activa en la barra de herramientas cuando se ponga en edición una capa de líneas (geometrías de dimensión 1) o polígonos (geometrías de dimensión 2), y se seleccionen los features cuyas geometrías se desee generalizar.

img//iconogeneralizar

Icono de la herramienta "Generalizar geometría".

El comportamiento de la herramienta será distinto en función de que la geometría que se desee generalizar sea de líneas o de polígonos. Si la geometría es de tipo lineal se aplicará el algoritmo de Douglas-Peucker [7]. Si es de tipo poligonal, se aplicará el algoritmo de Douglas-Peucker a cada una de las partes del polígono (borde o hueco), de forma que el polígono resultante tendrá el mismo número de partes y huecos que el original (es decir, preserve su topología).

img//linetosimplify

Selección de la línea a simplificar

img//simplifiedline

Resultado de aplicar el proceso de generalización a la línea seleccionada.

El algoritmo de Douglas-Peucker necesita una tolerancia (más detalles en [7]). Por simplificar el manejo de la herramienta, en vez de tener que introducir esta tolerancia cada vez que se desee generalizar un conjunto de geometrías, se utiliza una tolerancia por defecto que puede ser modificada a través del diálogo de preferencias de gvSIG, en la sección "Topología".

img//douglaspeuckerpreferences

Configuración de la tolerancia de Douglas-Peucker a través del diálogo de preferencias de gvSIG.


Herramienta "Suavizar geometría mediante curva matemática"

Esta herramienta produce un resultado opuesto a la herramienta anterior: dada una geometría de 1 o 2 dimensiones (polilínea, polígono), calcula la curva del tipo especificado por el usuario que mejor se ajusta a los puntos de la geometría original, obteniendo una nueva geometría densificada y suavizada.

img//iconosmooth

Icono de la herramienta "Suavizar geometría".

La herramienta permite suavizar una geometría calculando los siguientes tipos de curvas:

  • Bezier.
  • B-Spline.
  • Cardinal Spline.
  • Catmullrom Spline.
  • B-Spline cúbico.
  • Lagrange.
  • Natural spline cúbico.
  • Nurbs.

Cada tipo de curva tiene una representación matemática de tipo paramétrico, lo que hace que exista un mínimo número de puntos de control necesario para definir la curva.

img//linetosmooth

Selección de la línea a suavizar a partir de un tipo de curva parametrizada.

img//smoothdialog

Diálogo para seleccionar el tipo de curva matemática parametrizada.

img//smoothdespues

Resultado de aplicar un suavizado "Bezier" a la curva seleccionada.

En sucesivas versiones de la extensión de Topología se podrán personalizar diferentes parámetros de control de las curvas parametrizadas de suavizado.


Herramienta "Digitalizar polígono con geometría compartida"

Esta herramienta es de gran utilidad para garantizar la consistencia topológica en el proceso de digitalización de polígonos de una misma capa. Si no se hace uso de esta herramienta, a la hora de digitalizar dos polígonos adyacentes es muy probable que no se gestione adecuadamente la geometría compartida, introduciendo inconsistencias.

img//topologyerrorsinpolygons

Errores topológicos producidos al digitalizar polígonos sin herramientas topológicas

img//topologypolygondigitize

Icono de la herramienta "Digitalizar polígono con geometría compartida".

Para poder utilizar esta herramienta, en primer lugar es necesario que exista una capa vectorial de polígonos activa en el TOC y en modo edición. Seguidamente, hay localizar los polígonos que van a compartir geometría con el nuevo polígono a digitalizar. Por último, hay que digitalizar una polílinea que represente el arco no compartido del polígono que se desea digitalizar. Cuando finalize la digitalización de este arco, la herramienta construirá automáticamente un polígono con el nuevo arco/polilínea digitalizado y los arcos de los polígonos adyacentes.

img//neighbourspolygons

Polígonos adyacentes que compartirán geometría con el nuevo polígono a digitalizar.

img//digitizingline

Digitalización del arco/polilínea que define el nuevo polígono junto con la geometría compartida con los polígonos adyacentes.

img//resultingpolygon

Polígono resultante: no existen inconsistencias topológicas en la geometría compartida con sus vecinos adyacentes.


Herramienta "Información geométrica (Área/Perímetro/WKT) mediante pulsación con el ratón"

Con las herramientas disponibles hasta este momento en gvSIG, para averiguar el área o perímetro de una geometría existían dos alternativas:

  1. Utilizar la herramienta "medir área", y digitalizar un polígono siguiendo la forma del polígono de interés. Este método era poco preciso, pues no podía apoyarse en un snap para garantizar que si sigue la geometría a medir. Además, no tiene sentido digitalizar una geometría ya existente (y cargada en la memoria de la aplicación) para obtener su área.
  2. Utilizar la calculadora de campos, y añadir los nuevos campos "área" y "perímetro" a la capa original. No obstante, esto calcula todas las áreas y perímetros de todas las geometrías de la capa vectorial con la que estamos trabajando, lo cual tampoco es necesario (solo estamos interesados en calcular un área).

Para cubrir este hueco (obtener el área y el perímetro exacto de una geometría ya existente) en la extensión de topología y análisis vectorial avanzado se ha incluido la herramienta "Información Geometríca".

img//geometryinfo

Icono de la herramienta "Información geométrica".

Su uso es muy simple, simplemente hay que pulsar el botón de la herramienta (previamente debe estar seleccionada una capa vectorial en el TOC) y picar con el ratón sobre la geometría de la que se quiere obtener más información.

img//geometryinfoscreenshot

Diálogo que se muestra con información geométrica de la geometría sobre la que se ha pulsado con el ratón

El diálogo que se muestra al usuario tras pulsar con el ratón sobre una geometría proporciona la siguiente información:

  • Área.
  • Perímetro.
  • Representación de la geometría en formato WKT.

La representación en WKT de la geometría puede ser de utilidad para procesarla con otros programas: bases de datos (MySQL, PostGIS, etc.), constructor de pruebas unitarias de JTS, etc.

img//wktpaste

Transferencia de geometrías entre aplicaciones a través del formato WKT.


Herramientas de análisis topológico avanzado: geoprocesos topológicos

Introducción

En ocasiones es necesario transformar todas las geometrías de una capa completa, para adecuarlas a un determinado tratamiento que se vaya a hacer de los datos. En estos casos las herramientas de edición topológica vistas en el apartado anterior no suelen ser suficientes, necesitándose geoprocesos que se apliquen sobre un subconjunto o todas las geometrías de las capas.

Los geoprocesos topológicos proporcionados por la extensión de topología y análisis vectorial avanzado de gvSIG son:

  • Inversión del sentido de digitalización de líneas.
  • Generalización de las geometrías de una capa.
  • Conversión de una capa de polígonos a una capa de líneas (sin repetir las geometrías compartidas).
  • Suavizar/Densificar líneas mediante curvas parametrizadas matemáticas.
  • Calcular triangulación de Delaunay / Polígonos de Thiessen.
  • Transformación de capas vectoriales mediante vectores de desplazamiento (link).
  • BUILD: Construcción de topología según el modelo de coberturas de Arc/Info.
  • CLEAN: Limpieza de topología según el modelo de coberturas de Arc/Info.
  • Correcciones en BATCH: Aplicar correcciones topológicas por lotes.

En los siguientes apartados describiremos estos geoprocesos y cómo hacer uso de ellos en gvSIG.


Geoproceso "Invertir sentido de líneas"

Este geoproceso es de utilidad cuando se necesitan que las líneas de una capa vectorial tengan un sentido determinado, pero han sido digitalizadas justamente en el sentido opuesto. Un ejemplo claro de esto es la construcción de redes dirigidas, como redes hidrográficas, canalizaciones, etc. Para el cálculo de algoritmos sobre estas redes como conectividad, transmisición de flujo, etc. es necesario que las geometrías de las líneas que forman parte de la red tengan el mismo sentido que el flujo que representan (flujo de agua, etc.)

Para ejecutar el geoproceso, es necesario cargar previamente en una vista la capa vectorial de cuyas líneas deseamos invertir el orden de los puntos. Seguidamente, abrimos el gestor de geoprocesos vectoriales de gvSIG y localizamos el geoproceso "Invertir líneas", en el path "Geoprocesos/Conversion De Datos/Invertir Líneas".

img//gpmanagerflip1

Inversión de líneas en el asistente de geoprocesamiento.

Pulsando aceptar se nos muestra el siguiente diálogo, en el que habrá que seleccionar la capa vectorial cuyas líneas se desean invertir, la capa de salida (en formato .shp) y si se desea trabajar con todas las líneas originales o solamente con las seleccionadas.

img//gpmanagerflip2

Diálogo asociado al geoproceso "Invertir líneas".

Como resultado, tendremos una nueva capa de líneas en las que el orden de los puntos se habrá invertido.

img//flipdesc

Resultado de invertir una línea.


Geoproceso "Generalizar capa"

La funcionalidad de este geoproceso es similar a la de la herramienta de edición topológica "Generalizar geometría", pero en vez de trabajar con una única geometría (o una selección de múltiples geometrías) permite trabajar con una capa vectorial completa. El geoproceso permite generalizar capas lineales según el algoritmo de Douglas-Peucker, o capas de polígonos según un algoritmo implementado por la librería JTS, basado en aplicar el algoritmo DP por separado a cada una de las partes (borde exterior, huecos) del polígono, verificando que el polígono resultante cumple las restricciones definidas por el antiguo modelo de geometrías SFS de OGC.

Para ejecutarlo, hay que abrir el gestor de geoprocesos de gvSIG y localizar el geoproceso en el path "Geoprocesos/Conversión de Datos/Generalización".

img/gpgeneralize1

Gestor de geoprocesos de gvSIG con el geoproceso "Generalizar geometrías".

En la siguiente figura se nos muestra el diálogo asociado a este geoproceso. El usuario debe especificar la capa con la que desea trabajar, el tipo de generalización a aplicar (Douglas-Peuckert o generalización topológica de gvSIG), la tolerancia de Douglas-Peuckert a emplear y la capa resultante en formato .shp.

img/gpgeneralize2

Diálogo asociado al geoproceso generalización de geometrías.

img/gpgeneralize3

Geometrías generalizadas superpuestas sobre las geometrías originales.


Geoproceso "Convertir de capa de líneas/polígonos a capa de puntos"

Este geoproceso permite convertir una capa de polígonos o líneas (dimensiones 1 o 2) en una capa de puntos (dimensión 0), lo cual es de utilidad como paso intermedio para determinados análisis. Como este geoproceso puede operar con cualquier capa vectorial de dimensión superior a 0, con independencia de que pertenezca o no a una topología, es necesario especificar una tolerancia de cluster, para que todos los puntos de la capa resultado que se encuentren a una distancia inferior a la de la tolerancia de cluster sean fusionados en uno solo.

img//gppolytopoint

"Convertir polígonos/líneas a puntos".

img//gppolytopoint2

Diálogo "Convertir polígonos/líneas a puntos".

img//gppolytopoint3

Capa resultante superpuesta sobre la capa de polígonos original


Geoproceso "Convertir capa de polígonos a capa de líneas sin duplicar geometría compartida"

gvSIG ya permite convertir una capa de polígonos en una capa de líneas, a través de las extensiones vectoriales de SEXTANTE. No obstante, la implementación de SEXTANTE no tiene en cuenta la geometría compartida por dos polígonos adyacentes, de tal forma que esta geometría es repetida en la capa de líneas resultante.

El geoproceso "Convertir capa de polígonos a líneas sin duplicar geometría compartida" justamente mejora esta característica: no almacena dos veces la geometría compartida (líneas compartidas por dos polígonos adyacentes). En su lugar, almacena un solo registro con la geometría compartida que tendrá el FID (identificador) de los polígonos adyacentes que la comparten.

Podemos localizar el geoproceso en el gestor de geoprocesos de gvSIG, a través del path "Geoprocesos/Conversión de Datos/Polígonos a líneas".

img//gppolytopoint1

Convertir capa de polígonos a líneas.

Una vez ejecutado el geoproceso, podemos convertir que las líneas compartidas por dos polígonos no se han duplicado seleccionando una de ellas, y viendo el número de registros seleccionados en la tabla asociada a la capa de gvSIG.

img//gppolytoline2

Resultado del geoproceso

Seleccionado una línea de la capa resultante, vemos que solo seleccionamos un registro en la tabla asociada. Si la geometría se huebiese duplicado aparecerían dos registros seleccionados.


Geoproceso "Suavizar capa mediante curvas matemáticas"

La funcionalidad de este geoproceso es similar a la de la herramienta de edición topológica "Suavizar línea mediante curva matemática", pero en vez de trabajar con una única geometría (o una selección de múltiples geometrías) permite trabajar con una capa vectorial completa.

img//gpsmooth1

Geoproceso "Suavizar capa mediante curva matemática" en el gestor de geoprocesos de gvSIG.

Para ejecutar el geoproceso, es necesario abrir el gestor de geoprocesos de gvSIG y buscar el path "Geoprocesos/Conversión de datos/Suavizar capa", mostrándosenos el diálogo de la siguiente figura.

img/gpsmooth2-es.png

Diálogo asociado al geoproceso "Suavizar capa mediante curva matemática".

En este diálogo, además de seleccionar la capa de entrada y cual va a ser la capa de salida del geoproceso, se especificará el tipo de curva matemática al que queremos ajustar las geometrías de la capa de partida. Al tratar la herramienta de edición topológica "Suavizar geometría mediante curva matemática" ya enumeramos los tipos de curva posibles. En sucesivas versiones de este manual se incluirá como anexo una descripción de los tipos de curva.


Geoproceso "Calcular triangulación de Delaunay/Poligonación de Thiessen-Voronoi"

El cálculo de la triangulación de Delaunay y del diagrama de Voronoi/polígonos de Thiessen es una funcionalidad de gran utilidad para la realización de determinados análisis, como subdivisión del espacio en zonas de influencia, interpolación, generación de isolíneas, etc.

Escapa del alcance de este manual profundizar en esta estructura de datos topológica, o los algoritmos existentes para su cálculo. Se pueden consultar referencias como la Wikipedia [8] o el portal de matemáticas MathWorld [9].

En la extensión de Topología y análisis vectorial avanzado de gvSIG se ha incluído un geoproceso que permite calcular tanto la triangulación de Delaunay de una nube de puntos como su diagrama de Voronoi. Dentro de la propia extensión de Topología y análisis vectorial, este geoproceso ha servido como punto de partida para el geoproceso "Georreferenciación vectorial a partir de capa de links". Cuando veamos este geoproceso trataremos esto con más detalle.

La implementación del geoproceso dentro de la arquitectura interna de gvSIG ha seguido una aproximación extensible, basada en plugins.Esto permitirá añadir nuevos algoritmos además de los actualmente implementados para realizar el cálculo de la triangulación.

Otro aspecto novedoso de la implementación del geoproceso en gvSIG es la posibilidad de triangular cualquier geometría, con independencia de que sea o no puntual. El único requisito es que la capa con las geometrías a triangular sea capaz de proporcionar para cada una de sus geometrías un punto de inserción en la triangulación. Si se trabaja con capas normales de gvSIG, por defecto las geometrías lineales o polígonales serán insertadas en la triangulación a partir de su primer punto. No obstante, se pueden desarrollar plugins que permitan triangular geometrías a partir de otros puntos (punto medio para líneas, centroides para polígonos, etc.)

Para ejecutar el geoproceso, hay que abrir el gestor de geoprocesos de gvSIG y buscar el path "Geoprocesos/Análisis/Geometría Computacional/Voronoi".

img//gpvoronoi1

Geoproceso "TIN/Voronoi" en el gestor de geoprocesos de gvSIG.

Pulsando el botón "Abrir geoproceso" o haciendo doble click en el árbol de geoprocesos, se nos abre el diálogo asociado al geoproceso.

img//gpvoronoi2

Diálogo asociado al geoproceso "TIN/Voronoi".

En este diálogo, al igual que con el resto de geoprocesos vectoriales de gvSIG, hay que especificar las capas de entrada y de resultado del geoproceso. Además, para el caso concreto del geoproceso "TIN/Voronoi" es necesario especificar:

  • Si se desea calcular la triangulación de Delaunay o el diagrama de Voronoi.
  • El algoritmo a aplicar. Tal y como hemos comentado anteriormente, este geoproceso permite realizar el cálculo empleando varios algoritmos. Actualmente los algoritmos implementados son: + Algoritmo incremental a partir de un triángulo envolvente (Chew [10]). + Algoritmo incremental a partir de un rectángulo envolvente.

En las siguientes figuras vemos los distintos resultados que podemos obtener en función de que se emplee un algoritmo u otro, y de que se calcule el TIN o el diagrama de Voronoi.

img//gpvoronoi3

Resultado de calcular un TIN con el algoritmo incremental basado en envolvente rectángular.

img//gpvoronoi4

Resultado de calcular un TIN con el algoritmo de P.Chew (algoritmo incremental basado en envolvente triangular).

img//gpvoronoi5

Resultado de calcular el diagrama de Voronoi de una nube de puntos.


Geoproceso "Transformación de capas vectoriales mediante vectores de desplazamiento (Links)"

Introducción

El geoproceso ajuste espacial permite aplicar una transformación sobre los elementos geográficos de una capa vectorial. La funcionalidad proporcionada por este geoproceso es equivalente a la proporcionada por la extensión de georreferenciación de imágenes raster, pero para capas de información vectorial, viniendo a cubrir el vacío existente hasta el momento para capas vectoriales. Esta herramienta no solamente es útil para georreferenciar capas vectoriales, también es de utilidad para ajustar distintas capas, procedentes de distintas fuentes o elaboradas con diferentes requisitos de precisión, de tal forma que encajen los distintos elementos cartográficos.

Escapa del alcance del presente manual profundizar en los aspectos matemáticos subyacentes a la teoría de transformación de sistemas de coordenadas, remitiendo al lector a las referencias bibliográficas [11], [12], [13], [14] y [15], entre otros.

Actualmente admite los siguientes tipos de transformación:

  • Proyectiva.
  • Afín.
  • De similaridad.
  • Bursa Wolf .
  • Rubber - sheet diferencial. Esta transformación consiste en cubrir completamente el espacio de la capa a transformar mediante una triangulación de Delaunay, y calcular una transformación afín para cada triángulo del TIN. Para cada punto de las geometrías de las capas a transformar se aplicará la transformación afín definida por el triángulo que lo contiene.
  • Afín con restricciones.

Aunque el número de transformaciones soportadas puede ser extendido haciendo uso del API de gvSIG.

Para poder ejecutarse, además de las capas de entrada y de salida el geoproceso requiere un conjunto de puntos de control (links) que representan la posición de un punto antes de la transformación, y la posición que este mismo punto deberá tener como resultado de la misma.

En función del tipo de transformación será necesario un número mínimo de puntos de control. Lo habitual es proporcionar un número muy superior al mínimo, en cuyo caso gvSIG realizará un ajuste mínimo cuadrático de los parámetros de la transformación requerida. Como parámetro que refleje la bondad de la transformación se proporciona el error medio cuadrático (RMS) de cada punto de control individual, y el error medio cuadrático global de todos los puntos de control.

img//gpadjust1

Geoproceso "transformación de capas vectoriales" en el gestor de geoprocesos de gvSIG.

Para ejecutar el geoproceso, hay que abrir el gestor de geoprocesos vectoriales de gvSIG y buscar el path "Geoprocesos /Conversión de datos/Ajuste Espacial". La siguiente figura nos muestra el diálogo asociado al geoproceso de transformación de capas vectoriales.

img//gpadjust2

Diálogo asociado al geoproceso "Ajuste espacial de capas vectoriales".

Como podemos apreciar, el diálogo del geoproceso tiene una parte común a todos los geoprocesos,para especificar la capa a transformar y dónde se van a guardar los resultados, y una parte central específica del ajuste vectorial, en la que se pueden especificar los puntos de control de la transformación -denominados vectores de error- y el tipo de transformación a aplicar.

El primer paso para aplicar una transformación sobre una capa determinada es definir los "vectores de error" de la transformación, es decir, los puntos de control que nos indican la posición de un punto de la capa antes y después de la transformación. El geoproceso permite crear los puntos de control desde cero (a través de los botones "Añadir vector de error" y "Borrar vector de error") o recuperar una capa de vectores de error generada en una sesión de trabajo anterior (a través del botón "Cargar vectores de error"). Seguidamente veremos como funciona la extensión en cada uno de estos casos.


Digitalizar un nuevo vector de error (punto de control) de la transformación

Para añadir un nuevo vector de error, debemos pulsar el botón "Añadir botón de error". Tras pulsar el botón, el diálogo asociado al geoproceso se ocultará, para que podamos digitalizar sobre el mapa el vector de error. Puesto que la ventana del gestor de geoprocesos nos estorbará, podemos cerrarla pulsando el botón "Cerrar". No obstante, este paso no es necesario puesto que el gestor de geoprocesos no es un diálogo modal. Si en este momento pulsamos con el ratón sobre la vista del mapa, y arrastramos, veremos como se dibuja un vector cuyo segundo punto sigue el puntero del ratón.

img//gpadjust3

Digitalizando un vector de error para la transformación de una capa vectorial.

En cualquier momento podemos cancelar la digitalización del vector de error, y volver al diálogo asociado al geoproceso pulsando la tecla "Esc". De igual forma, si queremos modificar el nivel de zoom para incrementar el grado de detalle de la cartografía de base para la digitalización, podemos pulsar la tecla "Ctrl", y en funcion de que pulsemos el botón izquierdo o el derecho del ratón haremos un "zoom más" o un "zoom menos".

Conforme vayamos digitalizando vectores de error, éstos se nos mostrarán en la tabla de puntos de control del diálogo del geoproceso. Para cada punto de control se muestran sus coordenadas de origen, sus coordenadas de destino, el error medio cuadrático de ese punto y un cuadro de selección que nos permitirá introducir o excluir el punto del cálculo de la transformación.

img//gpadjust4

Punto de control en la tabla de vectores de error del diálogo del geoproceso.

Además, en el TOC de la vista con la que estamos trabajando se crea una nueva capa, dentro de una agrupación, denominada "Sesión de Ajuste Espacial", junto con un número que identifica la capa de puntos de control (1, 2, 3, ... etc.). Esto es así porque podemos tener abiertas varias capas de punto de control simultáneamente.

img//gpadjust5

Capa de puntos de control en el TOC, y visualización de los mismos en el mapa.

Cada tipo de transformación requerirá de un número mínimo de puntos de control. Hasta que no se alcance ese mínimo, el diálogo no podrá mostrarnos el error médio cuadrático de la transformación definida por los puntos de control digitalizados (y marcados como activos). En este caso, en el texto reservado para el error medio cuadrático aparecerá el mensaje: "Número de puntos insuficiente".

img//gpadjust6

Mensaje "Se necesitan más puntos de control para la transformación elegida", en el diálogo del geoproceso.

Si existen suficientes puntos de control para resolver analíticamente la transformación, se mostrará el error medio cuadrático para cada vector de error y el error medio cuadrático para el global de la transformación (para los puntos de control definidos).

img//gpadjust7

Error medio cuadrático de cada vector de error y error medio cuadrático global.

Cuanto mayor sea el número de vectores de error, y mayor superficie de la capa a transformar cubran, mayor será la bondad del ajuste. En este sentido, cabe destacar que transformaciones como la proyectiva o la afín son transformaciones globales, los parámetros de la transformación son los mismos para todos los puntos de la capa a transformar. El geoproceso hace un ajuste mínimo cuadrático, calculando los parámetros de la transformación que minimizan el error. En cambio, la transformación "Rubber-sheet diferencial" es una transformación local. Lo que hace es generar un TIN que cubra toda la superficie definida por los puntos de control digitalizados, tomando como punto de inserción para la triangulación el primer punto del vector de error. Para cada triángulo del TIN se calculará una transformación afin, que será la aplicar para todos los puntos de la capa a transformar que caigan dentro de este triángulo.


Eliminar un vector de error existente

Si detectamos que hemos cometido un error grosero al digitalizar un vector de error, de forma que éste siempre degradará la precisión de la transformación a aplicar, podemos eliminarlo de la lista de puntos de control seleccionándolo en la tabla y pulsando el botón "Borrar link".


Inhabilitar un vector de error para el cálculo de la transformación

Como hemos visto anteriormente, para cada uno de los vectores de error digitalizados el diálogo del geoproceso nos muestra su error medio cuadrático para el tipo de transformación seleccionada. Es recomendable, de cara a alcanzar la máxima bondad en el ajuste, digitalizar el máximo número posible de vectores de error. Posteriormente, y de forma previa a lanzar la ejecución del geoproceso de transformación, podemos probar a deshabilitar aquellos vectores de error que tienen un error medio cuadrático mayor, para ver si con esto se consigue reducir el error medio cuadrático global de la transformación.


Usar como vector de error una capa del ToC de la vista

Tal y como venimos viendo, para obtener la máxima bondad en el ajuste, de forma que la transformación a aplicar minimize el error de los puntos de control, es conveniente trabajar con el mayor número posible de puntos de control. La tarea de digitalizar puntos de control para ajustar fuentes cartográficas de distinta procedencia puede ser una tarea intensiva, que requiera de gran número de horas de trabajo. Para no perder este trabajo, se recomienda encarecidamente guardar la capa de vectores de error. Para ello, hay que seleccionar la capa de puntos de control en el TOC, e ir al menú "Capa->Exportar", seleccionando a continuación el formato de almacenamiento deseado.

img//gpadjust8

Exportando la capa de vectores de error.

Las capas de vectores de error se almacenan en memoria, así que si no se guardan explícitamente se perderán entre distintas sesiones de trabajo.

Si deseamos transformar una capa con este geoproceso, utilizando una capa de vectores de error ya existente, tan solo tenemos que haber cargado previamente esta capa en la vista. Si desde el diálogo del geoproceso pulsamos el botón "Cargar puntos de control", se nos mostrará un diálogo con una lista desplegable en la que aparecerán todas las capas de líneas cargadas en el TOC. Para aquellas capas que tengan líneas de más de dos puntos, solo se considerarán los dos primeros puntos de la línea. Tras pulsar aceptar, la tabla de puntos de control se rellenará con los vectores definidos en la capa seleccionada.

img//gpadjust9

Diálogo para cargar vectores de error a partir de una capa preexistente y cargada en el TOC.


Cálculo de la transformación

Una vez que tenemos una capa de puntos de control que nos garantice una mínima bondad del ajuste, y una cobertura adecuada para la capa a transformar, estamos en condiciones de ejecutar el geoproceso. Cada vez que cambiemos el tipo de transformación en la lista desplegable de transformaciones, se recalcularán los parámetros de la misma y los errores medio cuadrático global e individual para cada punto.

En la siguiente figura aparece una capa antes de aplicar una transformación afín sobre ésta, los vectores de error/puntos de control que han permitido definir la transformación afín a aplicar, y la capa resultante de aplicar la transformación.

img//gpadjust10

Resultado de aplicar una transformación afín, y vectores de error para definir la transformación.

Como siempre que se trabaja con aplicaciones GIS, aquí entra en juego el conocimiento del analista SIG sobre los métodos más apropiados para cada tipo de situación: cuando aplicar una transformación Afín, cuando una transformación proyectiva, etc.


Geoproceso "Build" (Construir capa de polígonos a partir de capa de líneas)

Este geoproceso genera una capa de polígonos a partir de aquellos elementos de una capa de líneas que encierren superficies cerradas. Puesto que es posible que no todas las líneas de la capa de entrada participen en la formación de polígonos cerrados, opcionalmente se pueden construir capas auxiliares con líneas sueltas y con líneas colgantes, activando el check, de "Añadir geometrias de error".

Para ejecutar este geoproceso, hay que abrir el gestor de geoprocesos y buscar el path "Geoprocesos/Conversión de Datos/Build".

img/Build-es.PNG

Geoproceso "Build" en el gestor de geoprocesos.

Si lo desea, puede ejecutar el geoproceso Clean desde el geoproceso Build, para ello active el check "Clean" y establezca las tolerancias fuzzy y dangle. Si activa el check "Clean", gvSIG ejecutará primero el Clean y luego el build, y la capa resultante del Clean será la capa a partir de la cual hará el Build. Si además de esto activa el check sobre "Añadir geometrías de error" añadira varias capas (lineas de corte, lineas colgantes, capa de nodos colgantes y pseudonodos...) con los errores.

img/dialogo-Build-es.PNG

Diálogo asociado al geoproceso build.


Geoproceso "Clean" (Limpiar topología según el modelo de coberturas)

Este geoproceso corrige topológicamente las geometrías de una capa de líneas, de forma que esta capa pase a tener una topología de líneas correcta. Por "topología correcta de líneas", entendemos que las geometrías lineales de esta capa no se autointersecten, y que solamente intersecten con otras geometrías de líneas por sus puntos extremos (nodos). Si durante la ejecución del mismo se detecta que dos líneas intersectan en un punto que no es nodo (pseudonodo), se fragmentará estas geometrías originando cuatro nuevas líneas que sí intersectarán en sus extremos. Que la intersección de todas las líneas de una capa sea en puntos que son nodo (extremo de línea) es esencial para que funcionen correctamente algoritmos de análisis de redes como cálculo de rutas, etc.

El geoproceso sí permite la presencia de un tipo de pseudonodos: nodos de valencia par, es decir, puntos extremos de líneas que solo sirven para conectar dos líneas (en vez de tres).

Para ejecutar este geoproceso, hay que abrir el gestor de geoprocesos de gvSIG y buscar el path "Geoprocesos/Conversión de datos/Clean".

img/Clean-es.png

Diálogo asociado al geoproceso "Clean".

En el diálogo asociado, además de especificar las capas de entrada y de salida, tiene que establecer la tolerancia fuzzy (fusionará nodos que se encuentre dentro de esta tolenrancia) y la tolerancia dangle(elimina los nodos que estén dentro de esta tolerancia). Además puede elegir que se añadan las geometrias de error detectadas, y que ésta capa se cargue en el TOC de la vista activa. Así estará mucho más claro por qué el geoproceso ha subdividido determinadas geometrías de la capa original.

img//gpclean2

Resultado de aplicar el geoproceso. Junto con la capa resultante se muestran los pseudonodos detectados.


Geoproceso "Aplicar correcciones topológicas en modo Batch"

En la sección dedicada a la tabla de errores topológicos del diálogo de propiedades de una topología, vimos que si pulsábamos con el botón derecho del ratón sobre un error individual, se nos mostraba un menú desplegable en el que se daba la opción de aplicar una serie de correcciones automáticas. Todo error topológico tiene una corrección por defecto, así que si se desea aplicar esta corrección para todos los errores de un mismo tipo, se puede aplicar mediante el geoproceso "correcciones topológicas por lotes". Este geoproceso no se puede ejecutar desde el gestor de geoprocesos de gvSIG, sino que hay que ejecutarlo desde la pestaña de errores topológicos del diálogo de propiedades de una topología.

Partiendo de una topología cargada en el TOC, con errores topológicos, abrimos su diálogo de propiedades y activamos la pestaña de errores topológicos. Seguidamente, en la lista desplegable que nos muestra las reglas infringidas por las capas de la topología, es necesario seleccionar aquella regla cuyos incumplimientos queremos corregir por lotes. Este paso es necesario porque determinadas correcciones topológicas no son completamente automáticas, y necesitan la interacción con el usuario. Solo se podrán corregir por lotes aquellos errores cuyas reglas tengan como corrección por defecto una regla automática. Si el usuario selecciona una regla cuya correción por defecto no sea automática, se le mostrará un diálogo indicándoselo.

img//topologypropertiesd

Pestaña de errores topológicos del diálogo de propiedades de una topología.

Otra diferencia con respecto de los geoprocesos normales es que el resultado de aplicar las correcciones en batch no se guardará en una nueva capa, sino en las capas originales de la topología (que se habrán puesto previamente en modo edición). Hasta que el usuario no termine la edición para cada capa modificada, estos cambios no se almacenarán de forma persistente.


Personalización de la extensión topológica de gvSIG: Preferencias

La extensión de topología y análisis vectorial avanzado de gvSIG añade una página al diálogo de preferencias de las extensiones de gvSIG.

img//topologypreferences1

Página de preferencias de la extensión de topología y análisis vectorial avanzado.

Actualmente el usuario solo puede personalizar el directorio donde se almacenan los ficheros temporales generados por la extensión de Topología, y la tolerancia Douglas-Peuckert a aplicar para la herramienta de edición "Generalizar Geometría".

Esta previsto que paulatinamente se vayan añadiendo a este diálogo nuevas entradas para personalizar aspectos de la extensión que hasta ahora no lo son como símbolos empleados para cada tipo de error topológico, parámetros de curvas paramétricas empleadas para suavizar geometrías, número de digitos de precisión numérica empleados en los algoritmos de geometría computaciones, etc.


Referencias


Get freemind document

View source document Get permanent link


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: