python - 迭代地理数据框时更改几何图形
问题描述
我想比较地理数据框之间的几何形状。如果两个几何图形中的任何一个重叠,那么我需要从一个多边形中删除重叠的几何图形。
例如,我在地理数据框中有这 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)
在控制台中我得到SettingWithCopyWarning
:警告。不确定这是否停止替换几何图形,因为它是警告而不是错误。我试图调查它,但无法理解。该函数difference
给了我正确的结果,但是当我打印geo_dataframe.geometry
它时,它会打印出原始几何图形。