计算单个数据框中具有相同几何形状的多边形的数量

时间:2019-03-15 06:10:07

标签: python-3.x pandas polygon geopandas shapely

我有一个数据框,其中包含许多多边形的形状坐标。这些多边形重叠,因此我想对所有重叠的多边形进行计数,以便进行分布的热图。我已经在FME中为此开发了一种解决方案,但是现在我需要将其自动化,作为python中更大工作流程的一部分。到目前为止,我尝试过的是:

  1. 使用联合叠加获取所有可能的几何形状。我假设对于重叠的区域,将有多个相同的多边形链接回原始多边形。

df_union = gpd.overlay(df_in, df_in, how='union')

我发现所有使用联合覆盖的示例都有两个输入数据框,但是我只有一个,所以我不确定以上是否正确。

如果我的假设是正确的,我现在不知道如何在单个数据帧中计算相同的多边形,从而得到如下结果:

Count geometry

5 POLYGON ((xxxxxx... 1 POLYGON ((xxxxxx...

我尝试df_union.groupby('geometry')来查看是否有相同的几何要计数,但是会产生我无法查看的结果。

对此,任何指针将不胜感激。

1 个答案:

答案 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()