¿Arreglando archivos corruptos?


10

Tengo un archivo de forma en el que estaba trabajando en ArcGIS Desktop 9.3 se corrompe de alguna manera y me da el error "El número de formas no coincide con el número de registros de la tabla". Lo que me gustaría es recuperar este archivo de forma, ya que tiene muchas ediciones que otras revisiones del archivo no tienen.

Anteriormente me recuperé de este error usando ogr2gui, pero la herramienta ahora se bloquea. Incluso probé la versión de línea de comandos ogr2ogr pero todavía no tuve suerte. Este script, Shapefile Repair Tool del sitio web ArcScripts tampoco ayudó.

¿Algunas ideas? (excepto que dejo de usar shapefiles)


Aquí está el resultado de ogr2ogr (basado en una sugerencia en las respuestas): ingrese la descripción de la imagen aquí


1
Es casi seguro que se corrompió porque su tabla de atributos (un archivo .dbf) se estaba editando por separado, creando una inconsistencia entre los registros de forma y los registros de atributos. Incluso si logras "arreglar" el archivo de formas, asegúrate de hacer una doble verificación muy cuidadosa de que los atributos correctos estén asociados con las formas.
whuber

Los mensajes de error revelan mucho. Esos números de puntos y partes indican valores entre 2 ^ 30 y 2 ^ 32 (sin signo), lo que sugiere una sobrescritura física extensa de encabezados de registro en el archivo .shp (porque nunca serían conteos válidos). Por lo tanto, es muy probable que los datos en esos registros también se hayan sobrescrito. En resumen, sus datos de forma probablemente ya no existan, al menos en muchas partes del archivo .shp, y por lo tanto no son recuperables por el software. Restaura desde tus copias de seguridad y comienza desde allí.
whuber

1
@whuber. Gracias. Claro que es el caso. Cada archivo recuperado de este archivo de forma corrupto contiene muchos menos registros que mi copia de seguridad. Desde entonces he vuelto a la copia de seguridad.
Erick

¡La recomendación de Brad Nesoms, shapecheck.exe, arregló mi archivo de forma corrupto la primera vez! gran herramienta

Respuestas:


8

Una opción, con la pérdida de las características corruptas, podría ser usar ogr2ogr convirtiendo su shapefile a otro shapefile, con la opción -skipfailures:

ogr2ogr -skipfailures fixed_shapefile.shp corrupted_shapefile.shp

Para más detalles, mire esta publicación del blog de PerryGeo:

http://www.perrygeo.net/wordpress/?p=132


Ejecutó el comando (incluido -f "ESRI Shapefile" que dejó fuera). Obtuve un informe de error en el archivo. [No se puede publicar la captura de pantalla aquí]. Tiene que ver con las formas culpables, supongo. El formato es: ERROR 1: archivo .shp dañado: Forma 2352, nPoints = 7, nEntitySize = 88.
Erick

puede eliminar con seguridad la opción -f: el archivo de forma es el formato de salida predeterminado. Sería interesante, para futuras investigaciones, si pudiera adjuntar una copia del
archivo de forma

Archivo para investigación: habría enviado el archivo con gusto, pero desafortunadamente los datos están protegidos por derechos de autor. Gracias de cualquier manera.
Erick

@Erick, si pones la captura de pantalla en imgur.com , puedo publicarla aquí (si aún es relevante)
djq

5

Yo uso este Siempre me ha solucionado ese problema.

shapecheck.exe


Estoy de acuerdo con Brad, ShapeCheck simplemente funciona, arregla archivos de forma independientes, se trunca cuando es necesario.
Mapperz

@Mapperz. Ejecutó la herramienta, con varios truncados. De hecho, podría abrir el archivo de forma a partir de entonces. Pero ahora contiene menos registros que la copia de seguridad a la que tengo que volver. Si no tuviera una copia de seguridad, una recuperación como esta habría sido. (Herramienta de archivo para eventualidad) Gracias.
Erick


4

La respuesta oficial de Esri tiene una serie de consejos, pero te señala la utilidad de reparación de shp que me ha ahorrado que me despidan varias veces.

Pocos otros que he oído hablar pero que no puedo decir que he intentado:


Gracias Simon Pero mi problema principal es que no puedo abrir el archivo para empezar, así que la mayoría de las sugerencias no funcionarán. Acabo de probar todo en el Tip One que sugirió. Nada funcionó.
Erick

2

Ok, aquí hay otro truco para agregar a la pila de buenas respuestas anteriores.

Esta es un poco más de fuerza bruta, la mayoría de las veces ayuda, a veces no lo hace, y aunque probablemente sea solo un primer paso para solucionar el problema (en lugar de una solución en sí misma, que a menudo no lo es), puede ayudar llevarte a donde puedes abrir el archivo shape. En la mayoría de los casos, aún tendrá que realizar más reparaciones manuales en ArcMap después de que se abra el archivo de forma (¿entidades corruptas ?, ¿atributos faltantes? ¿Atributos desalineados? Etc.)

  1. Copie el archivo de forma en una nueva carpeta vacía. Solo lleve el SHP, SHX y DBF con usted. Deje todos los demás archivos y sí, eso incluye el prj.

  2. (Windows): haga clic con el botón derecho en el archivo SHX y seleccione "Propiedades" para abrir las propiedades del archivo.

  3. En la pestaña "General", observe el tamaño EXACTO del archivo SHX hasta el byte. Mire la propiedad "Tamaño", y no la propiedad "Tamaño en disco".

  4. Tome ese tamaño de archivo en bytes y reste 100 bytes (el encabezado). Del resto, divídalo entre 8 (el tamaño de cada "palabra"). El resultado le proporciona la cantidad de características de forma dentro de la parte SHP del archivo de forma.

  5. Abra el DBF en algún software que le permita editar el DBF y guardarlo nuevamente como un DBF. Agregue o elimine registros para hacer que las filas en el DBF coincidan con el número de entidades de forma en el SHP que calculó en el paso 4. (Si está utilizando una versión anterior de Excel, tenga en cuenta que la Fila n. ° 1 contiene los nombres de campo, por lo que si va a buscar 1,000 registros, eso terminará siendo 1,001 filas en la hoja desde la primera fila de datos es la fila n. ° 2). Si para hacer coincidir el número de filas necesitabas eliminar filas y esas filas tenían datos reales, debes guardarlas, solo guárdalas en un nuevo DBF y podrás volver a leer esas cosas luego, una vez que haya llegado al punto en que todo se abre nuevamente en ArcMap.

  6. Una vez que haya utilizado los pasos anteriores para hacer coincidir el número de entidades en el SHP con el número de filas en el DBF, intente abrir el archivo de forma nuevamente en ArcMap.


1

Puede intentar contar el número de formas en sus archivos .shp con ogrinfo (no estoy seguro de que funcione):

 ogrinfo -sql 'select count(*) from myshp' myshp.shp

Si puede contar la cantidad de formas, puede abrir su archivo .dbf con open office para completarlo (o eliminar filas adicionales)


Gracias por la sugerencia, pero no soy exactamente un profesional de herramientas GDAL. o 'muy' sql alfabetizado. Intenté ejecutar la herramienta con los parámetros que proporcionó pero obtuvo un error relacionado con la herramienta. "No se puede abrir el recuento de fuente de datos (*)".
Erick

¿podría copiar / pegar la línea de comando?
simo

Puedo pero igual error. Pero la solución de @capooti parece haber producido algunos resultados / formas culpables identificadas.
Erick

1

Tuve suerte eliminando los archivos de índice (.idx y .shx), que su SIG regenerará cuando se vuelva a conectar.


Intenté esto sin éxito. Gracias por sugerir
Erick

0

Si su archivo de forma era una capa de puntos y tenía valores de campo XY, podría ejecutar la herramienta Crear capa de evento XY para crear otra capa del archivo de forma corrupto dbf.


Es un archivo de carreteras (polilíneas). Pero tendrá en cuenta su sugerencia para un escenario de puntos. Gracias.
Erick
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.