我有一个数据框,其中包含许多多边形的形状坐标。这些多边形重叠,因此我想对所有重叠的多边形进行计数,以便进行分布的热图。我已经在FME中为此开发了一种解决方案,但是现在我需要将其自动化,作为python中更大工作流程的一部分。到目前为止,我尝试过的是:
df_union = gpd.overlay(df_in, df_in, how='union')
我发现所有使用联合覆盖的示例都有两个输入数据框,但是我只有一个,所以我不确定以上是否正确。
如果我的假设是正确的,我现在不知道如何在单个数据帧中计算相同的多边形,从而得到如下结果:
Count geometry
5 POLYGON ((xxxxxx...
1 POLYGON ((xxxxxx...
我尝试df_union.groupby('geometry')
来查看是否有相同的几何要计数,但是会产生我无法查看的结果。
对此,任何指针将不胜感激。
答案 0 :(得分:0)
解决此问题的技巧是将几何图形转换为字符串,然后对其进行分组。
例如对于类型为数据的帧
df.head()
id geometry
0 6795584 MULTIPOLYGON (((652670.3 6862958.2, 652675.6 6...
1 6794255 MULTIPOLYGON (((652935.2 6862338.2, 652935 686...
2 6794256 MULTIPOLYGON (((652988.8 6862328.5, 652991.9 6...
3 6794289 MULTIPOLYGON (((653006.6 6862311.6, 653015.2 6...
4 6794290 MULTIPOLYGON (((652998 6862280.3, 652999.8 686..
我们将几何图形转换为字符串
df.geometry= df.geometry.astype(str)
然后我们就可以对其分组
df.groupby('geometry')['id'].count()