Dask和Geopandas:“ str”对象没有属性

时间:2018-09-10 16:00:05

标签: dask geopandas

我有一个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' 

(这只是错误消息中有意义的部分)

虽然不确定我的对象在哪里以及如何转换为字符串。...

1 个答案:

答案 0 :(得分:1)

Dask数据框不正式支持非Pandas数据框。如果您的数据帧在某些时候被转换为Pandas数据帧,并导致某种形式的字符串转换,我不会感到惊讶。

这里有一个非常实验的dask-geopandas实现:https://github.com/mrocklin/dask-geopandas

您可能还想考虑一下GeoPandas的Cython分支,该分支可以更快地运行,而没有并行负担。