Pandas 用进化窗口滚动

问题描述 投票:0回答:1

我想使用 pandas 方式迭代地理数据帧来计算与 cumsum 等效的值,但具有多边形的并集。 我有一系列多边形,第一个保持相同的几何形状,第二个是第一个和第二个之间的并集,第三个是第 3 个多边形之间的并集。

我正在考虑使用滚动工具,但窗口似乎是恒定的。你知道如何使用 pandas 来处理它吗?

谢谢。

可重现的示例:

import shapely
import geopandas as gpd

p0 = shapely.geometry.Point([0, 0]).buffer(1)
p1 = shapely.geometry.Point([1, 1]).buffer(1)
p2 = shapely.geometry.Point([1, 0]).buffer(1)

gdf = gpd.GeoDataFrame({'name' : ['p0', 'p1', 'p2'], 'geometry' : [p0, p1, p2]}, crs = 'epsg:4326')

# what i would like

gdf['evolving_area'] = [shapely.unary_union([p0]).area, 
                        shapely.unary_union([p0, p1]).area, 
                        shapely.unary_union([p0, p1, p2]).area]
gdf['evolving_area']
python pandas geopandas
1个回答
0
投票

一种选择是执行

expanding
窗口计算:

gdf["evolving_area"] = list(
    map(lambda p: p.unary_union.area, gdf["geometry"].expanding())
)

输出:

  name                                           geometry  evolving_area
0   p0  POLYGON ((1.00000 0.00000, 0.99518 -0.09802, 0...       3.136548
1   p1  POLYGON ((2.00000 1.00000, 1.99518 0.90198, 1....       5.704823
2   p2  POLYGON ((2.00000 0.00000, 1.99518 -0.09802, 1...       6.832249
© www.soinside.com 2019 - 2024. All rights reserved.