Estoy tratando de abrir un archivo shape con el cuaderno Jupyter, pero no puedo abrirlo. El archivo de forma se encuentra en la misma carpeta que mi libro de trabajo, y Python no puede identificarlo incluso si uso la ruta completa.
import shapefile as shp
import matplotlib.pyplot as plt
sf = shp.Reader(r'C:\Users\Public\Documents\1-11-99n.shp')
ShapefileException: Unable to open C:\Users\Public\Documents\1-11-99n.dbf or C:\Users\Public\Documents\1-11-99n.shp.
Abrirlo con fiona y geopandas tampoco funciona.
import fiona
shape = fiona.open("1-11-99n.shp")
y
import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)
ambos terminan con
CPLE_OpenFailedError: b'Unable to open 1-11-99n.shx or 1-11-99n.SHX.Try --config SHAPE_RESTORE_SHX true to restore or create it'
Sé que esto podría ser un problema trivial, pero soy nuevo en el uso de shapefiles y bibliotecas espaciales de Python, así que realmente no sé cómo solucionar este problema.
Respuestas:
Hay una trampa para los usuarios nuevos de shapefiles. El archivo de forma real (.shp) es inútil sin los archivos complementarios: .dbf, .shx, .prj, etc.
Esto se describe en la especificación técnica del archivo de forma, pero es un poco avanzado, el artículo de Esri podría ser más adecuado para una explicación rápida.
Es fundamental que todos los archivos que pertenecen a un archivo de forma se traten como una sola unidad. Si el archivo de forma se edita en cualquier etapa, incluso solo los cambios de atributo, los FID (identificadores de características) cambian, lo que significa que el orden en el archivo .DBF cambia ... si edita los atributos de un archivo de forma y solo copia el archivo .DBF, sobrescribir un archivo existente .DBF las formas van a apuntar a las filas equivocadas. Copie siempre TODOS los archivos juntos .
Al enviar un archivo shape por correo electrónico, Dropbox, Google Drive, etc., me parece conveniente comprimir todos los archivos en un solo archivo para que, cuando se descomprima, todos los archivos asociados aparezcan juntos.
fuente
Si el único elemento que tiene es el archivo .shp, y puede hacerlo sin las otras partes, considere esta solución, abrir y guardar desde OpenJump. /gis//a/306228 Es posible que aún necesite un archivo .proj, según su propósito, pero puede salirse con una copia "estándar" copiada de otro proyecto y renombrada para que coincida con su shapefile , si eso usa la misma proyección.
fuente