2017-07-24 202 views
0

我正在尝试开发一些工具来管理可能会出现的大型GeoJSON文件。一个这样的工具可以识别GeoJSON文件中的相交特征。在尝试这样做时,我试图在加载文件的两个geopandas框架之间进行空间连接,但每个功能都被列出,因为它与自身相交。有没有办法找回只有与自身以外的任何东西有交集的功能列表?使用geopandas识别单个GeoJSON文件中的相交多边形

回答

0

您可以通过使用例如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> 

Example layer