我想用一种Pandas 的方式在一个地理数据框上迭代,以计算一个等同于累加的多边形并集. 我有一系列的多边形,第一个保持相同的几何形状,第二个是第一个和第二个的并集,第三个是第一个和第三个的并集,等等.

我正在考虑使用滚动工具,但windows 似乎是恒定的.你知道怎么用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())
)

发帖主题:Re:Kolibrios

  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

enter image description here

Python相关问答推荐

仿制药的类型铸造

在Python中处理大量CSV文件中的数据

在Pandas DataFrame操作中用链接替换'方法的更有效方法

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

让函数调用方程

Python—为什么我的代码返回一个TypeError

计算机找不到已安装的库'

如何在Airflow执行日期中保留日期并将时间转换为00:00

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

Python如何导入类的实例

Polars时间戳同步延迟计算

如何将一个文件的多列导入到Python中的同一数组中?

极点:在固定点扩展窗口

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

解析CSV文件以将详细信息添加到XML文件

在Django REST框架中定义的URL获得404分

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?

401使用有效的OAuth令牌向Google Apps脚本Web App发出POST请求时出现未经授权的错误(";