我有一个GeoSeries,每个单元格中都有一个形状优美的多边形对象,我试图并行化所有特性(最后我试图获得一系列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' (这只是错误消息中有意义的部分)
但不知道我的对象在哪里以及如何被转换成字符串.
发布于 2018-09-10 17:06:09
Dask数据文件不支持非Pandas数据格式。如果您的数据在某个时候被转换为Pandas数据格式,并强制进行某种字符串转换,我就不会感到惊讶了。
这里有一个高度实验的dask-geopandas实现:https://github.com/mrocklin/dask-geopandas。
您可能还需要考虑GeoPandas的Cython分支,它可以更快地避免并行性的负担。
https://stackoverflow.com/questions/52261579
复制相似问题