我想使用 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']
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