无法使用GeoPandas打开形状文件

时间:2018-01-17 16:09:08

标签: python shapefile geopandas

我似乎无法打开从(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".'

4 个答案:

答案 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()电话仍会失败。

如果其他解决方案不起作用,我建议解决此问题的两个解决方案是:

  1. 在GIS编辑器(如QGis)上打开shapefile,然后再次保存,确保选择“{1}}选项为”UTF-8“。在此之后,调用Encoding时应该没有问题。

  2. 您还可以使用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 的包。当我安装软件包时,代码运行正确