15 votos

¿Cómo evitar crear Shapefiles corruptos durante la edición?

Tengo a uno de mis técnicos de SIG digitalizando algunas líneas en QGIS en formato shapefile. No sé cómo lo hizo (y él tampoco), pero de alguna manera el shapefile se corrompió. Estaba creando líneas aleatorias o algunas de las líneas que creó simplemente desaparecían. Entré en ArcCatalogue para ver cómo se veía en ArcGIS y esto es lo que vi:

introducir descripción de la imagen aquí

Noten el icono de interrogación donde debería ver un ícono de shapefile 'línea'. Obviamente ArcCatalogue no puede leer este archivo. Además, parecía haberse creado un segundo archivo dbf con '_packed' agregado al final. Cuando veo el shapefile usando el explorador de Windows, veo que ya hay un .dbf para el shapefile 'M3_PRE_SMU_lines_10Apr13_SMC.dbf', así que no sé de dónde vino este shapefile _packed y no parece poder encontrar nada en línea que hable al respecto.

Intenté agregar este archivo en ArcMap y recibí el siguiente error:

introducir descripción de la imagen aquí

El error es bastante explicativo... el número de formas no coincide con el número de registros. Simplemente no sé por qué está ocurriendo eso. No parece haber nada en línea que explique cómo está ocurriendo esto en QGIS, pero veo un par de herramientas de reparación. De hecho, reparé esto yo mismo simplemente abriendo QGIS, agregando la capa, y luego haciendo clic derecho en la capa y 'guardando como' otro shapefile. Así que he encontrado una solución temporal, pero espero encontrar una solución que evite que esto ocurra en primer lugar. Gracias, Mike

1 votos

Llevo años usando QGIS y nunca he visto este problema antes. La aparición "mágica" de otro .dbf sugiere que el Shapefile ha sido manipulado fuera de QGIS. Si puedes reproducir el error usando solo QGIS, por favor presenta un informe de error. ¡Eso sería muy importante!

0 votos

He estado intentando replicar el problema sin suerte. Una cosa que noté es que, a diferencia de en ArcGIS, no recibo un mensaje de bloqueo de esquema al editar en QGIS (es decir, si alguien tiene un bloqueo de esquema en el shapefile y comienzas a editarlo al mismo tiempo, ArcGIS arrojará un error al guardar las ediciones. QGIS no lo hace). Estoy pensando que guarda de manera extraña cuando guardas un shapefile que está bloqueado por un esquema. No estoy 100% seguro de que esta sea la causa, pero es algo que vale la pena señalar.

0 votos

También me ha surgido este error mientras editaba shapefiles. Mi solución temporal fue simplemente hacer mis ediciones en ArcMap. Obviamente, esa no es una solución real - pero - no estás solo/a en experimentar este tipo de error.

16voto

Michael Puntos 11

Explicación

OGR (parte de GDAL) es la biblioteca utilizada por QGIS para acceder a los shapefiles. Cuando OGR elimina elementos, no los elimina inmediatamente, sino que simplemente marca los elementos como eliminados. De vez en cuando, se ejecuta un comando llamado repack, que crea un nuevo archivo con el sufijo _repack y copia todos los elementos que no están marcados como eliminados en este nuevo archivo. Una vez que termina, el .dbf original es reemplazado con el _repack.dbf. Luego hace lo mismo con el shapefile: crea uno nuevo (_packed.shp), copia todos los elementos no eliminados y eventualmente reemplaza el .shp original.

Parece que en algún lugar de este proceso, algo falló (¿tal vez un bloqueo?).

Dentro de este proceso, los ids de elementos cambian, por lo que supongo que el shp (geometría) que tiene y el dbf (tabla de atributos) utilizan diferentes ids de elementos para los mismos elementos, lo que lleva al comportamiento extraño que experimenta. Parece que uno de los dos archivos aún contiene (parte de) los elementos eliminados mientras que el otro no.

Cómo lidiar con esto

Actualización, Nov. 2016: GDAL 2.2 incluye una funcionalidad integrada para llamar a repack automáticamente siempre que el archivo se escriba en el disco. Así que antes de hacer cualquier otra cosa: revise la versión de GDAL en el diálogo Acerca de QGIS y actualice su versión de GDAL (a menudo incluido como parte de QGIS) a una versión reciente.

Probablemente no haya mucho que pueda hacer al respecto aparte de hacer copias de seguridad regulares para no perder más datos de los que puede manejar (de todos modos, ¿ya está haciendo eso, verdad?)

1voto

user460847 Puntos 155

Esto me sucedió en QGIS. Logré resolver el problema simplemente eliminando '_packed' del nombre del archivo, como alguien ha sugerido en la sección de comentarios anterior.

1voto

SpliFF Puntos 214

Tal vez este sea otro problema de un archivo de índice .shx roto. El tipo de geometría debe estar almacenado en la cabecera de .shp y .shx. Si no coinciden, el software generará un error.

Parece que QGIS no es muy estricto en cuanto a archivos de índice rotos, y puede recrearlo con Guardar como..., mientras que ARCGIS insiste en un archivo de índice correcto, y crea un dbf comprimido (tabla de atributos) para las características que se pudieron encontrar a través de las partes correctas del archivo de índice, o tal vez sin usar el índice.

1voto

user50652 Puntos 96

La reaparición de características eliminadas y/o el comportamiento extraño de archivos de forma de los cuales se han eliminado características en QGIS es un error conocido, ver este informe de error 11007 y esta pregunta relacionada - Los polígonos eliminados parecen revertir a versiones anteriores. Además, ArcGIS tiene problemas con tales archivos de forma, cuando se guardan en QGIS como archivos MapInfo TAB, causan que el complemento MapInfo RouteFinder se bloquee a menos que las tablas se empaqueten primero en MapInfo antes de cargar RouteFinder. Ejecutar Universal Translator para convertir estos archivos de forma dañados en MapInfo falla.

Como has encontrado, el problema se puede solucionar haciendo un 'guardar como' en QGIS.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X