我有一个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'
(这只是错误消息中有意义的部分)
虽然不确定我的对象在哪里以及如何转换为字符串。...
答案 0 :(得分:1)
Dask数据框不正式支持非Pandas数据框。如果您的数据帧在某些时候被转换为Pandas数据帧,并导致某种形式的字符串转换,我不会感到惊讶。
这里有一个非常实验的dask-geopandas实现:https://github.com/mrocklin/dask-geopandas
您可能还想考虑一下GeoPandas的Cython分支,该分支可以更快地运行,而没有并行负担。