我有一个GeoDataFrame,其中包含一个shapely.polygons列。其中一些是不同的,一些则不是:
In [1]: gdf
Out[2]:
geometry
1 POLYGON ((1 1, 1 2, 2 2, 2 1, 1 1))
2 POLYGON ((1 3, 1 4, 2 4, 2 3, 1 3))
3 POLYGON ((1 1, 1 2, 2 2, 2 1, 1 1))
4 POLYGON ((3 1, 3 2, 4 2, 4 1, 3 1))
5 POLYGON ((1 3, 1 4, 2 4, 2 3, 1 3))
我需要找到仅有不重叠的多边形:
In [1]: gdf_distinct
Out[2]:
geometry
1 POLYGON ((1 1, 1 2, 2 2, 2 1, 1 1))
2 POLYGON ((1 3, 1 4, 2 4, 2 3, 1 3))
4 POLYGON ((3 1, 3 2, 4 2, 4 1, 3 1))
由于多边形不可哈希,因此我无法在Pandas中使用简单的方法:
In [1]: gdf_distinct = gdf['geometry'].unique()
TypeError: unhashable type: 'Polygon'
有没有简单有效的方法可以创建一个只包含不同多边形的新GeoDataFrame?
注:我找到了一种方法,但它只适用于完全重复的多边形,并且我认为不是非常高效。
In [1]: m = []
for index, row in gdf.iterrows():]
if row['geometry'] not in m:
m.append(row['geometry'])
gdf_distinct = GeoDataFrame(geometry=m)
.unique()
操作,即首先对几何图形进行序列化。 - alphabetasoup