Ich versuche, ein Shapefile mit Jupyter-Notizbuch zu öffnen, aber ich kann es nicht zum Öffnen bringen. Das Shapefile befindet sich im selben Ordner wie meine Arbeitsmappe, und Python kann es nicht identifizieren, selbst wenn ich den vollständigen Pfad verwende.
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.
Das Öffnen mit Fiona und Geopandas funktioniert ebenfalls nicht.
import fiona
shape = fiona.open("1-11-99n.shp")
und
import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)
beide enden mit
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'
Ich weiß, dass dies ein triviales Problem sein könnte, aber ich bin neu in der Verwendung von Shapefiles und räumlichen Python-Bibliotheken, sodass ich wirklich nicht weiß, wie ich dieses Problem umgehen soll.
Antworten:
Es gibt eine Falle für Erstbenutzer von Shapefiles. Das eigentliche Shapefile (.shp) ist ohne die Begleitdateien nutzlos: .dbf, .shx, .prj etc ..
Dies ist in der technischen Spezifikation des Shapefiles beschrieben, aber das ist etwas fortgeschritten. Der Esri-Artikel ist möglicherweise besser für eine schnelle Erklärung geeignet.
Es ist wichtig, dass alle Dateien, die zu einem Shapefile gehören, als eine Einheit behandelt werden. Wenn das Shapefile zu irgendeinem Zeitpunkt bearbeitet wird, auch wenn sich nur Attribute ändern, ändern sich die FIDs (Feature-IDs). Dies bedeutet, dass die Reihenfolge in der DBF-Datei geändert wird. Sollten Sie die Attribute eines Shapefiles bearbeiten und nur die DBF-Datei kopieren, Überschreiben einer vorhandenen DBF - Datei die Formen wird darauf auf die falschen Zeilen. Kopieren Sie immer ALLE Dateien zusammen .
Wenn Sie ein Shapefile per E-Mail, Dropbox, Google Drive usw. senden, ist es zweckmäßig, alle Dateien in ein einziges Archiv zu komprimieren, damit beim Entpacken alle zugehörigen Dateien zusammen angezeigt werden.
quelle
Wenn das einzige Element, das Sie haben, die .shp-Datei ist und Sie auf die anderen Teile verzichten können, ziehen Sie diese Lösung in Betracht, indem Sie sie in OpenJump öffnen und speichern. /gis//a/306228 Abhängig von Ihrem Zweck benötigen Sie möglicherweise noch eine .proj-Datei, können jedoch möglicherweise eine "Standard" -Datei verwenden, die aus einem anderen Projekt kopiert und entsprechend Ihrem Shapefile umbenannt wurde , wenn das die gleiche Projektion verwendet.
quelle