【问题标题】:Cartopy cannot read US census filesCartopy 无法读取美国人口普查文件
【发布时间】:2016-04-12 12:37:37
【问题描述】:

我正在尝试将美国县的形状导入 Python。

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

from cartopy.io import shapereader
shapereader.Reader('shapefiles/cb_2014_us_county_20m.shp')

但是对于不同的分辨率,我总是遇到同样的错误:

ValueError: Unsupported shape type: 15

谷歌搜索此错误没有产生任何结果 - 这是什么意思,我该如何解决?

【问题讨论】:

    标签: python cartopy


    【解决方案1】:

    这似乎是 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
    

    【讨论】:

      猜你喜欢
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多