Cartopy无法读取美国人口普查文件

时间:2016-04-12 12:37:37

标签: python cartopy

我正试图将美国各州的形状变成Python。

我的方法是从US census手动下载形状文件,然后使用

导入它们
from cartopy.io import shapereader
shapereader.Reader('shapefiles/cb_2014_us_county_20m.shp')

但是我不断为不同的分辨率得到同样的错误:

ValueError: Unsupported shape type: 15

谷歌搜索此错误并未产生任何结果 - 这意味着什么,我该如何解决?

1 个答案:

答案 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