Python 在geodataframe上迭代时更改几何图形
我想比较geodataframe之间的几何图形。如果两个几何体中的任何一个重叠,那么我需要从其中一个多边形中删除重叠的几何体 例如,我在geodataframe中有这3种几何图形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)之间存在重叠。所以我想改变几何图形,这样重叠就被消除了 我已经写了这段代码,但似乎不起作用
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)但不确定是否有更好的方法。