python - geopandas 对 sjoin 函数的误解

标签 python geopandas

我对 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 行?

谢谢

最佳答案

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

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

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

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

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

要删除这些内容,请添加以下内容:

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

关于python - geopandas 对 sjoin 函数的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458330/

相关文章:

python xml文件到pandas数据框

python - 如何将绘图与地理数据框几何一起使用

Python Geopandas 抛出 "Shell is not a Linear Ring"错误

python - 尝试使用 geopandas 进行地理编码 - AttributeError : 'module' object has no attribute 'Nominatim'

python - 如何使用 Python 在 map 上绘制可视化线串?

python - scipy.optimize on pandas dataframe

python - 如何准备 Django 迁移?

list - geopandas:从一列坐标列表到几何图形

python - 尝试使用 Pandas 计算百分比并添加新列

python - 使用 Prim 算法创建 'hard' 迷宫