Corrección de ficheros SHP con errores en gvSIG Desktop

Desde la versión 2.3 de gvSIG, cuando una capa SHP tiene geometrías corruptas se carga en la tabla de contenidos pero no en la Vista, pero podemos tener la opción de corregir dicha capa. Uno de los motivos es que si se cargase la capa con geometrías erróneas, y el usuario editase la capa, al guardar la edición con esos errores podría tener problemas y llegar a perder datos. Para evitar esto se ha optado por cargarla en el ToC pero no cargar las geometrías, y avisar al usuario.

Si tras agregar la capa en la Vista vemos que se añade en el ToC pero está desactivada y marcada con un signo de exclamación rojo, y nos aparece un mensaje de error en la parte inferior izquierda de la pantalla, es señal de que es una capa con errores.

Puede ocurrir el caso que se haya cargado la capa inicialmente sin problemas en la vista, pero al no leerse todos los registros no haya saltado el error, y que realizando alguna operación posterior (puede ser simplemente un zoom) detecte la geometría corrupta y se desactive la capa, mostrando el signo de exclamación rojo.

Para poder ver los detalles del error pondremos la capa activa, y con el botón secundario del ratón seleccionaremos “Ver errores”.

En la nueva ventana que se abre podemos tener información sobre qué geometrías están corruptas, con un mensaje similar a este: “There were errors loading the feature ‘x’ from ‘[nombre_capa]’”, donde “x” será el número de geometría (debemos tener en cuenta que la primera geometría es la “0”), y “nombre_capa” será el nombre de nuestra capa.

En dicha ventana también nos indicará el tipo de error que es, y qué deberemos hacer . Los errores pueden estar relacionados por ejemplo con el número de vértices de una línea o un polígono, si tenemos una línea con un solo vértice o un polígono con dos, algo que no es correcto. En ese caso veremos un mensaje similar a este: “Invalid number of points in LinearRing (found 3 – must be 0 or >= 4).”

También nos puede dar instrucciones de si es posible solucionarlo. Por ejemplo nos puede aparecer el mensaje “Check ‘Fix LinearRings and LineStrings’ in the shape’s properties of the add layer dialog to try fix it.”.

Si nos saliese dicho mensaje, para intentar corregir la capa, desde la ventana anterior accederemos a sus propiedades pinchando en el botón inferior “_View_properties_of_data_source” (o su correspondiente traducción).

Nota: De momento en las versiones 2.3 y 2.4 esta opción está solo disponible para ficheros .SHP. Para el resto de formatos vectoriales habrá que eliminar la capa de la vista y agregarla de nuevo, y entrar en sus propiedades accediendo desde la ventana de añadir capa.

En las propiedades de la capa iremos entonces a la pestaña “Advanced” y haremos lo que indicaba el mensaje de error.

Tendremos varias formas posibles de intentar solucionar el error.

Corrección de las geometrías cuando tienen menos puntos de los necesarios

Si en el mensaje de error nos ha indicado qué geometría estaba corrupta, y nos decía que marcásemos la opción “Fix LinearRings and LineStrings”, en la pestaña “Advanced” lo marcaremos, y aceptaremos, y ya en la vista pincharemos con el botón secundario sobre la capa activa y le daremos a “Recargar”. De esa forma veremos ya los elementos de la capa en la vista, y en las geometrías que tenían menos puntos de los necesarios se añadirán vértices duplicados al final de estas.

Corrección de las geometrías con otro tipo de error

Si hemos corregido una geometría que tenía menos puntos de los necesarios, hemos comentado que gvSIG duplica los puntos necesarios para que la geometría se cargue bien, pero tras arreglarse automáticamente puede seguir siendo un polígono de tres puntos donde dos de ellos coinciden por ejemplo. En ese caso podemos querer saber por qué tenía error dicha geometría y corregirlo en caso de que sea posible.

Cuando hemos visto la información inicial del error, en el mensaje nos ha indicado qué geometría estaba corrupta. Abriríamos entonces la tabla de atributos, e iríamos al registro indicado en el error. Como los registros comienzan por el “0” en el código, y en la tabla de atributos empiezan por “1”, tendremos que sumarle “1” al registro que indicaba el error. Por ejemplo, si indicaba la geometría “5” iremos al elemento “6” de la tabla de atributos”.

Después de seleccionar el elemento haremos un Zoom a lo seleccionado, y veremos la geometría corrupta en la vista. El siguiente paso será poner la capa en edición y corregir la geometría.

Según lo que nos indicase el mensaje de error inicial intentaremos corregirlo de una u otra forma. Algunas de las posibles formas de corregir las geometrías serían las siguientes:

  • Si es una capa de polígonos, y tenemos una geometría formada por dos puntos, la podremos eliminar y crear un nuevo polígono o podremos añadir más vértices. Lo mismo si está formada por un punto.
  • Si es una capa de polígonos, donde tenemos una geometría multipolígono, y uno de esos polígonos que la forma es realmente un punto o una línea, primero utilizaríamos la herramienta de “Descomponer geometría” y eliminaríamos las partes sobrantes o las corregiríamos.

Una vez corregidas las geometrías no podremos guardar la capa que estamos editando, obligándonos la aplicación a exportar a una nueva capa en el momento de terminar la edición. Con esto, la capa guardada ya se cargará correctamente en la Vista.

Eliminación de las geometrías corruptas

Si queremos directamente eliminar las geometrías corruptas, lo que haremos será marcar la opción “Load corrupt geometries as null” en la pestaña “Advanced”. Después aceptaremos, y ya en la vista pincharemos con el botón secundario sobre la capa activa y le daremos a “Recargar”. De esa forma veremos ya los elementos de la capa en la vista.

El siguiente paso será poner la capa en edición. Después abriremos su tabla de atributos, e iremos al menú Tabla->Propiedades. En la parte de la nueva ventana donde están los distintos campos, iremos al campo GEOMETRY y lo marcaremos como visible, aceptando después. Así, ya en la tabla, si vamos a la última columna veremos que es la que contiene la geometría.

Lo siguiente será poner activo el campo GEOMETRY y ordenar de forma descendente, de forma que en la parte superior veremos los registros que no tienen geometría (tienen su campo GEOMETRY vacío).

Entre los registros que tienen el campo GEOMETRY vacío estarán las geometrías corruptas, pero debemos tener en cuenta que si tenemos más de un registro con el campo GEOMETRY en blanco, es posible que tengamos alguna geometría que es correcta. Por ejemplo, si hemos trabajado previamente con una base de datos, es fácil que haya geometrías nulas en ella, por lo que exportando a SHP dicha base de datos, esos registros se mantendrían y no serían realmente un error. Si solo tenemos una geometría nula en la tabla sí que será la que tiene error.

Al tener la capa en edición, directamente podríamos seleccionar los registros que queremos eliminar en la tabla, y pincharíamos sobre el botón de “Eliminar fila” (también disponible en el menú Tabla), con lo que eliminaríamos las geometrías deseadas.

Finalmente terminaremos edición, obligándonos a guardar como una nueva capa en disco. De esa forma tendremos la capa corregida, sin las geometrías que estaban corruptas.

This entry was posted in gvSIG Desktop, spanish, testing and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s