【问题标题】:count number of polygons with same geometry in single dataframe计算单个数据框中具有相同几何形状的多边形数量
【发布时间】:2019-03-15 06:10:07
【问题描述】:

我有一个数据框,其中包含许多多边形的形状坐标。这些多边形重叠,我想计算所有重叠多边形的数量,这样我就可以绘制分布的热图。我已经在 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') 来查看是否有相同的几何图形要计数,但结果是我无法查看。

任何关于此的指针将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    解决这种情况的一个技巧是将几何图形转换为字符串,然后对其进行分组。

    例如对于类型的数据框

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2020-10-22
      • 1970-01-01
      • 2014-08-14
      • 2014-01-23
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多