J'essaie d'ouvrir un fichier de formes avec le bloc-notes Jupyter, mais je n'arrive pas à l'ouvrir. Le fichier de formes se trouve dans le même dossier que mon classeur et Python ne peut pas l'identifier même si j'utilise le chemin complet.
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.
L'ouvrir avec fiona et géopandas ne fonctionne pas non plus.
import fiona
shape = fiona.open("1-11-99n.shp")
et
import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)
les deux se retrouvent avec
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'
Je sais que cela pourrait être un problème trivial, mais je suis nouveau dans l'utilisation des fichiers de formes et des bibliothèques spatiales Python, donc je ne sais vraiment pas comment contourner ce problème.
Réponses:
Il existe un piège pour les nouveaux utilisateurs de fichiers de formes. Le fichier de formes réel (.shp) est inutile sans les fichiers associés: .dbf, .shx, .prj etc.
Ceci est décrit dans la spécification technique du fichier de formes mais c'est un peu avancé, l' article Esri pourrait être plus approprié pour une explication rapide.
Il est essentiel que tous les fichiers appartenant à un fichier de formes soient traités comme une seule unité. Si le fichier de formes est modifié à n'importe quel stade, même juste des changements d'attributs, les FID (identificateurs de fonctionnalités) changent, ce qui signifie que l'ordre dans le fichier .DBF est modifié. Si vous modifiez les attributs d'un fichier de formes et copiez uniquement le fichier .DBF, écrasant un fichier .DBF existant, les formes pointeront vers les mauvaises lignes. Copiez toujours TOUS les fichiers ensemble .
Lors de l'envoi d'un fichier de formes par e-mail, Dropbox, Google Drive, etc.
la source
Si le seul élément que vous avez est le fichier .shp et que vous pouvez vous passer des autres parties, envisagez cette solution, en ouvrant et en enregistrant depuis OpenJump. /gis//a/306228 Vous pouvez toujours avoir besoin d'un fichier .proj, selon votre objectif, mais vous pourrez peut-être vous en tirer avec un fichier "standard" copié à partir d'un autre projet et renommé pour correspondre à votre fichier de formes , si cela utilise la même projection.
la source