Python 在geodataframe上迭代时更改几何图形

Python 在geodataframe上迭代时更改几何图形,python,pandas,geopandas,Python,Pandas,Geopandas,我想比较geodataframe之间的几何图形。如果两个几何体中的任何一个重叠,那么我需要从其中一个多边形中删除重叠的几何体 例如,我在geodataframe中有这3种几何图形 1. POLYGON((2 1,4 1,4 4,2 4,2 1)) 2. POLYGON((3 3,5 3,5 5,3 5,3 3)) 3. POLYGON((1 0,3 0,3 2,1 2,1 0)) (1,2)和(1,3)之间存在重叠。所以我想改变几何图形,这样重叠就被消除了 我已经写了这段代码,但似乎不起作用

我想比较geodataframe之间的几何图形。如果两个几何体中的任何一个重叠,那么我需要从其中一个多边形中删除重叠的几何体

例如,我在geodataframe中有这3种几何图形

1. POLYGON((2 1,4 1,4 4,2 4,2 1))
2. POLYGON((3 3,5 3,5 5,3 5,3 3))
3. POLYGON((1 0,3 0,3 2,1 2,1 0))
(1,2)
(1,3)
之间存在重叠。所以我想改变几何图形,这样重叠就被消除了

我已经写了这段代码,但似乎不起作用

for i in range(0, len(geo_dataframe) - 1):
    for j in range(i + 1, len(geo_dataframe)):
        p1 = geo_dataframe.iloc[i][0]
        p2 = geo_dataframe.iloc[j][0]
        if p1.overlaps(p2):
            if p1.area > p2.area:
                geo_dataframe.iloc[j][0] = p2.difference(p1)
            else:
                geo_dataframe.iloc[i][0] = p1.difference(p2)
在控制台中,我得到了
设置和copywarning
:warning。不确定这是否停止替换几何体,因为这是一个警告而不是错误。我想调查一下,但不明白。
函数
difference
给了我正确的结果,但是当我打印
geo_数据框。geometry
时,它打印原始几何体。

找到了一个解决方案geo_数据框。在[j,'geom']=p2.差异(p1),但不确定是否有更好的方法。找到了一个解决方案geo_数据框。在[j,'geom']=p2.差异(p1)但不确定是否有更好的方法。