Cartopy 无法读取美国人口普查文件
Cartopy cannot read US census files
我正在尝试将美国各县的形状输入 Python。
我的方法是从 US census 手动下载形状文件,然后使用
导入它们
from cartopy.io import shapereader
shapereader.Reader('shapefiles/cb_2014_us_county_20m.shp')
但是对于不同的分辨率,我总是收到相同的错误:
ValueError: Unsupported shape type: 15
谷歌搜索此错误一无所获 - 这是什么意思,我该如何解决?
这似乎是 Cartopy 中的一个限制。如果查看完整回溯中引用的源文件,可以看到在 Reader
class 中有以下代码:
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
我正在尝试将美国各县的形状输入 Python。
我的方法是从 US census 手动下载形状文件,然后使用
导入它们from cartopy.io import shapereader
shapereader.Reader('shapefiles/cb_2014_us_county_20m.shp')
但是对于不同的分辨率,我总是收到相同的错误:
ValueError: Unsupported shape type: 15
谷歌搜索此错误一无所获 - 这是什么意思,我该如何解决?
这似乎是 Cartopy 中的一个限制。如果查看完整回溯中引用的源文件,可以看到在 Reader
class 中有以下代码:
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