【问题标题】:Dask & Geopandas: 'str' object has no attributeDask & Geopandas:“str”对象没有属性
【发布时间】:2018-09-11 01:06:09
【问题描述】:

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


    【解决方案1】:

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

    这里有一个高度实验性的 dask-geopandas 实现:https://github.com/mrocklin/dask-geopandas

    您可能还想考虑 GeoPandas 的 Cython 分支,它可以在没有并行负担的情况下更快。

    【讨论】:

    • 谢谢!我坚信瓶颈不在于 geopandas 本身,而在于 rasterio 的光栅化工作方式;鉴于这是令人尴尬的并行任务,您认为我使用 dask.Bags 的机会更大吗?
    • 也许吧。我对手术的了解还不够,无法提出具体的建议。在你的情况下,我会尝试一下,分析一下,看看效果如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2017-01-27
    • 2016-09-20
    • 2019-03-25
    • 2017-05-13
    • 2014-04-28
    • 2015-05-15
    相关资源
    最近更新 更多