我正试图将美国各州的形状变成Python。
我的方法是从US census手动下载形状文件,然后使用
导入它们from cartopy.io import shapereader
shapereader.Reader('shapefiles/cb_2014_us_county_20m.shp')
但是我不断为不同的分辨率得到同样的错误:
ValueError: Unsupported shape type: 15
谷歌搜索此错误并未产生任何结果 - 这意味着什么,我该如何解决?
答案 0 :(得分:3)
这似乎是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形状。我相信您可以使用属于gdal包的ogr2ogr
工具执行此操作:
ogr2ogr -nlt POLYGON cb_2014_us_county_20m-POLYGON.shp cb_2014_us_county_20m.shp