我在每个单元格中都有一个GeoSeries,其中包含一个形状为Polygon的对象,我正在尝试并行化所有特征的光栅化(我试图在最后得到一系列的2d数组,然后我将其转换为xarray.DF) :
cbd = dd.from_pandas(cb['geometry'], npartitions=2)
def _rasterize_area(geom):
F = features.rasterize([(geom, geom.area)],
out_shape= (cvs.plot_height,
cvs.plot_width), transform=aform, dtype=float64)
return F
A = cbd.apply(_rasterize_area, convert_dtype=False)
但是,当我运行上面的最后一行时,我收到一个错误:
<ipython-input-18-f1e938162097> in _rasterize_area(geom)
1 def _rasterize_area(geom):
----> 2 F = features.rasterize([(geom, geom.area)], out_shape=(cvs.plot_height, cvs.plot_width), transform=aform, dtype=float64)
3 return F
AttributeError: 'str' object has no attribute 'area'
(这只是错误消息的有意义部分)
不确定我的对象转换为字符串的位置和方式,但....
Dask数据帧不正式支持非Pandas数据帧。如果在某些时候您的数据帧被转换为Pandas数据帧并且强制进行某种字符串转换,我不会感到惊讶。
这里有一个高度实验性的dask-geopandas实现:https://github.com/mrocklin/dask-geopandas
您可能还想考虑GeoPandas的Cython分支,它可以更快,没有并行负担。