ESRI proporciona una guía para reparar archivos de forma corruptos que puedes encontrar en el sitio web de ESRI: https://support.esri.com/en/technical-article/000007161
No puedo revisar mi máquina, pero una de las utilidades del reparador de perfiles o de la herramienta de reparación de perfiles (que están enlazadas en la parte inferior de la página de ayuda de ESRI) solía ser capaz de reconstruir un archivo .shx.
También puedes hacerlo en Python. Este enlace sugiere este código para recrear un archivo .shx:
# Build a new shx index file
#Code by Joel Lawhead http://geospatialpython.com/2011/11/generating-shapefile-shx-files.html
import shapefile
# Explicitly name the shp and dbf file objects
# so pyshp ignores the missing/corrupt shx
myshp = open("myshape.shp", "rb")
mydbf = open("myshape.dbf", "rb")
r = shapefile.Reader(shp=myshp, shx=None, dbf=mydbf)
w = shapefile.Writer(r.shapeType)
# Copy everything from reader object to writer object
w._shapes = r.shapes()
w.records = r.records()
w.fields = list(r.fields)
# saving will generate the shx
w.save("myshape")
No es que el código requiera que el Biblioteca de perfiles de pitón (pyshp) para correr.
1 votos
Si su archivo de dBase contiene "muchas más funciones" que el
.shp
Entonces el shapefile está corrupto y no se puede confiar en ninguno de los datos. El sitio web.shx
puede normalmente se recostituye de la.shp
pero depende de si hay "huecos" en el flujo de datos del archivo.0 votos
@Vince por lo que puedo leer de la especificación de Shapefile, un shp es siempre gapless, y su registro son siempre precedido por una cabecera que especifica su longitud. Estas dos reglas garantizan una búsqueda correcta y, por tanto, una reconstrucción perfecta del shx. ¿Existen extensiones que las rompan?
0 votos
ArcGIS siempre reescribe el contenido del shapefile después de la edición para eliminar los vacíos causados por la edición, pero no es necesario.