python-3.x - 计算单个数据框中具有相同几何形状的多边形数量
问题描述
我有一个数据框,其中包含许多多边形的形状坐标。这些多边形重叠,我想计算所有重叠多边形的数量,这样我就可以绘制分布的热图。我已经在 FME 中为此开发了一个解决方案,但我现在需要将它作为 python 中更大工作流程的一部分来自动化。到目前为止我尝试过的是:
- 使用联合覆盖来获取所有可能的几何图形。我假设对于重叠的区域,将有多个相同的多边形链接回原始多边形。
df_union = gpd.overlay(df_in, df_in, how='union')
我发现的所有使用联合覆盖的示例都有两个输入数据帧,但我只有一个,所以我不确定上面是否正确。
如果我的假设是正确的,那么我现在想不出的是如何计算单个数据框中相同的多边形,以便得到如下结果:
Count geometry
5 POLYGON ((xxxxxx...
1 POLYGON ((xxxxxx...
我试图df_union.groupby('geometry')
查看是否有相同的几何图形可以计算,但这会产生我无法查看的结果。
对此的任何指示将不胜感激。
解决方案
围绕这种情况的一个技巧是将几何图形转换为字符串,然后对其进行分组。
例如对于类型的数据框
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()
推荐阅读
- javascript - 使用表格时 JavaScript 格式丢失
- c# - DisplayMemberPath 不适用于组合框
- flutter - 颤振漆之字形
- powershell - Sharepoint Online 列表项查询返回带有 Microsoft Graph API 的空数组
- spring - 从 Spring 3 转换到 Spring 5 时,我应该用什么替换 WebServiceTemplate
- python - 来自字符串的日期时间时区
- regression - 如何在回归树中计算特征重要性?
- django - 如何在 django rest 框架中使用 hyperlinkedModelSerializer
- c# - 检查是否接地而不使用 oncollision 进入/退出?
- npm - 无法通过 UI 将 npm 工件上传到 Sonatype Nexus