首页 > 解决方案 > 迭代地理数据框时更改几何图形

问题描述

我想比较地理数据框之间的几何形状。如果两个几何图形中的任何一个重叠,那么我需要从一个多边形中删除重叠的几何图形。

例如,我在地理数据框中有这 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它时,它会打印出原始几何图形。

标签: pythonpandasgeopandas

解决方案


推荐阅读