这似乎是 Cartopy 的一个限制。如果查看完整回溯中引用的源文件,可以看到Reader 类中有以下代码:
shapeType = reader.shapeType
self._geometry_factory = GEOMETRY_FACTORIES.get(shapeType)
if self._geometry_factory is None:
raise ValueError('Unsupported shape type: %s' % shapeType)
如果我们查看GEOMETRY_FACTORIES 的值,我们会看到:
GEOMETRY_FACTORIES = {
shapefile.POINT: _create_point,
shapefile.POLYLINE: _create_polyline,
shapefile.POLYGON: _create_polygon,
}
因此,Cartopy 仅适用于 POINT(类型 1)、POLYLINE(类型 3)和 POLYGON(类型 5)形状。
要使用 Cartopy 读取这些文件,您需要将 POLYGONZ 形状(类型 15)转换为 POLYGON 形状。我相信您可以使用 ogr2ogr 工具来做到这一点,该工具是 gdal 软件包的一部分:
ogr2ogr -nlt POLYGON cb_2014_us_county_20m-POLYGON.shp cb_2014_us_county_20m.shp