My problem is the following, I cannot find a reasonable method to clip 2 vector based shapefiles using python (without ArcPy or QGIS API).
I tried using the geometry.intersections method, but that would return a lake that should have been mostly clipped away (~2% of the lakes surface should stay after clipping with a boundary), so I figured the intersection method does not return what I want.
What I want to do is to import .shp files from my drive which I achieved using geopandas:
import matplotlib.pyplot as plt import matplotlib.lines as mlines from matplotlib.colors import ListedColormap import geopandas as gpd import os boundary = gpd.read_file(boundary_within_features_of_the_other_layers_should_stay) water = gpd.read_file(water_layer) water_clipped = water[water.geometry.intersects(boundary)]
so this method didn´t work as I wanted. I want to clip more features, but I cant figure out how to do it or which library to use.
I also tried:
import os wd = r"C:\Users\blablabla" list_of_files = os.listdir(wd) file_that_clips = r'C:\Users\blablabla.shp' for file_to_clip in list_of_files: if file_to_clip[-3:] == "shp": # If file is a shapefile clipped_file = file_to_clip[8:-4] + "_clipped.shp" # New name for output os.system("ogr2ogr -clipsrc " + file_that_clips + " " + clipped_file + " " + file_to_clip) print(clipped_file + 'got clipped')
Which should have worked according to the last print statement, but the clipped layers couldn´t be found anywhere. So this doesn´t seem to work for me as well.