【问题标题】:Misunderstanding of sjoin function with geopandas对geopandas sjoin函数的误解
【发布时间】:2019-08-12 17:29:59
【问题描述】:

我对 GeoPandas (0.5.1) 的 sjoin 功能有疑问。 事实上,当我在同一个 GeoDataFrame 上尝试这个函数时,结果是一个包含比我预期更多的结果的表。

我正在运行这个小代码:

gpd.sjoin(l.frame, l.frame, op='intersects', how='left')

我使用的框架包含:

id               geometry
0   LINESTRING (-44500.48827615567 888412.75133248...
1   LINESTRING (17219.37750674287 1117318.84695587...

结果是:

   id_left                                           geometry  index_right  \
0        0  LINESTRING (-44500.48827615567 888412.75133248...            0   
0        0  LINESTRING (-44500.48827615567 888412.75133248...            1   
1        1  LINESTRING (17219.37750674287 1117318.84695587...            0   
1        1  LINESTRING (17219.37750674287 1117318.84695587...            1   
   id_right  
0         0  
0         1  

为什么我的结果表中只有前 2 行?

谢谢

【问题讨论】:

    标签: python geopandas


    【解决方案1】:

    最明显的原因是以下 - 数据框中的行相交。

    您可以通过以下方式进行检查:

    gdf.geometry.iloc[0].intersects(gdf.geometry.iloc[1])
    

    如果返回 True,则生成的数据框只会向您显示数据框的每一行都与其他行相交。

    请记住,每个对象都与自身相交。

    要删除那些添加类似的东西:

    result = result.loc[result.id_left.ne(result.id_right)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多