我似乎无法打开从(http://www.vdstech.com/usa-data.aspx)下载的zip3.zip形状文件
这是我的代码:
import geopandas as gpd
data = gpd.read_file("data/zip3.shp")
这给了我错误:
CPLE_AppDefinedError: b'Recode from CP437 to UTF-8 failed with the error: "Invalid argument".'
答案 0 :(得分:1)
看起来shapefile
没有关联的cpg指定.dbf
文件的编码,然后又回到尝试使用默认系统编码的情况不是{0}工作要么。您应该可以通过以下方式打开它:
data = gpd.read_file("data/zip3.shp", encoding="utf-8")
geopandas
依赖fiona
进行shapefile读取,您可能需要升级fiona
版本才能使其正常工作;看一些讨论here
答案 1 :(得分:1)
根据answer问题上的this,您的数据集似乎包含非UTF字符。如果您遇到类似问题,使用encoding-"utf-8"
可能无效,因为Fiona的open()
电话仍会失败。
如果其他解决方案不起作用,我建议解决此问题的两个解决方案是:
在GIS编辑器(如QGis)上打开shapefile,然后再次保存,确保选择“{1}}选项为”UTF-8“。在此之后,调用Encoding
时应该没有问题。
您还可以使用GDAL在Python中实现此格式更改,方法是读取shapefile并再次保存。这将有效地将编码更改为UTF-8,因为这是gpd.read_file("data/zip3.shp")
方法的docs中指示的默认编码。为此,请尝试以下代码段:
CreateDataSource()
答案 2 :(得分:1)
由于您可能安装了GDAL,我建议您使用CLI将文件转换为UTF-8:
ogr2ogr output.shp input.shp -lco ENCODING=UTF-8
对我来说就像一个魅力。它比QGIS快得多,可以在集群环境中使用。我也发布了这个答案here。在geopandas
中指定编码对我来说不起作用。
答案 3 :(得分:0)
也许文件依赖于其他文件。
我遇到了同样的问题,当我复制此 shapefile
所依赖的其他文件时,代码运行正确,但要求安装另一个名为 descartes
的包。当我安装软件包时,代码运行正确