I am working with 2 Polygon Shapefiles: parcels & wetlands

Essentially what I want to accomplish is to filter the parcels dataset, where I only keep parcels that contain less than 50% Wetlands. For example the yellow parcels marked blue would be kept while the others would be filtered out, as the wetlands layer covers too much of the parcel

enter image description here

I've researched and tried various Spatial Joins, but none offer an option for %'s, and the gpd.overlay option only works on a DataFrame Level, not on individual polygons.

I was thinking some sort of comparison of Shape Areas, where:

filtered_parcels = filtered_parcels[(wetlands['shape_area'] <= parcels['shape_area'] * 0.5)]

However, I don't know how to obtain the Shape Area of the Wetlands contained only within a certain parcel.

1 Answer 1


I would first dissolve the wetlands gdf down to a single shape. Then I would use geopandas.overlay to make a gdf of the overlapping areas. I would calculate the area of the parcels and also overlapping areas e.g. using the area package, after converting to an equal-area projection like cea. Then a pandas merge between the parcels and overlapping gdfs would let you compare the areas.

Obviously a lot going on between the lines above - let me know if I need to expand on any points.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.