我正在尝试使用Jupyter笔记本打开shapefile,但是无法打开它。shapefile与工作簿位于同一文件夹中,即使使用完整路径,Python也无法识别它。
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.
用fiona和geopandas打开它也不起作用。
import fiona
shape = fiona.open("1-11-99n.shp")
和
import geopandas as gp
shp = gp.GeoDataFrame.from_file('1-11-99n.shp')
print (shp)
都以
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'
我知道这可能是一个小问题,但是我不熟悉使用shapefile和空间Python库,因此我真的不知道如何解决此问题。
将负号替换为下划线,然后重试。.shapefile名称应仅包含字母,数字和下划线。以字母开头的名称也是一个好主意。如果问题仍然存在,则shapefile可能已损坏或缺少.SHX。 )?
—
Michael Stimson
您的shapefile可能已损坏。我将一个任意shapefile保存为1-11-99n.shp,无论您的形状,fiona还是geopandas迷你脚本都没有问题。
—
xunilk
是的,问题是我没有包含我需要的其他shx,dbf等文件。我以前从未使用过shp文件,所以我不知道它是否需要文件的补充。文件名工作正常,无需更改。谢谢!
—
伦纳德·肖
@LeonardShaw请考虑为您的问题提供答案,以便我们认为此问题已解决。
—
亚伦
重申一下,在文件名中带有前导数字或连字符违反了shapefile规范。最佳做法是避免命名,这会导致某些shapefile阅读器实现失败。
—
文斯