Search code examples
pythongisqgisgeopandas

Find all intersecting polygons in a shape file


I am trying to find out all the polygons in a shapefile through QGIS Algorithm Extract By Location and it gives me perfect results but takes too much time, around 25 hours. Now, I want it to be done by other libraries like geopandas or other libraries if possible. Can anyone suggest me which library can help?

This is what am doing in geopandas:

import itertools

import geopandas as gpd

gi = gpd.GeoDataFrame.from_file("D:\Shape_file_uploader\qgis\laneGroup.shp")

geoms = gi['geometry'].tolist()

intersection_iter = gpd.GeoDataFrame(gpd.GeoSeries([poly[0].intersection(poly[1]) for poly in  itertools.combinations(geoms, 2)

Solution

  • I did this some time ago and if I remember correctly I used the geopandas overlay method. So the 'pseudo' code to handle this ...

    from geopandas import GeoDataFrame, overlay
    
    first_shape_gdf = GeoDataFrame.from_file('D:\Shape_file_uploader\qgis\laneGroup.shp')
    second_shape_gdf = GeoDataFrame.from_file('another.shp')
    
    intersection_gdf = overlay(first_shape_gdf, second_shape_gdf, how='intersection')
    

    Have a look at Set-Operations with Overlay