使用geopandas识别单个GeoJSON文件中的相交多边形
问题描述:
我正在尝试开发一些工具来管理可能会出现的大型GeoJSON文件。一个这样的工具可以识别GeoJSON文件中的相交特征。在尝试这样做时,我试图在加载文件的两个geopandas框架之间进行空间连接,但每个功能都被列出,因为它与自身相交。有没有办法找回只有与自身以外的任何东西有交集的功能列表?使用geopandas识别单个GeoJSON文件中的相交多边形
答
您可以通过使用例如apply
方法和列表理解(根据图层的所有特征测试每个特征)并验证特征的相交特征的id来验证特征测试是不一样的(if x != gdf.geometry[i]
在下面的代码段),但这并没有特别有效的...
例如,如果我想创建一个包含的相交特征ID字段'id_intersect'
我可能会做:
In [5]: geoms = gdf.geometry
In [6]: gdf['id_intersect'] = geoms.apply(
...: lambda x: [i for i in range(len(geoms))
...: if x != geoms[i] and x.intersects(geoms[i])])
In [7]: print(gdf['id_intersect'])
0 []
1 [2]
2 [1]
Name: id_intersect, dtype: object
In [8]: gdf.plot()
Out[8]: <matplotlib.axes._subplots.AxesSubplot at 0x9f189d0c>