Spaces:
Sleeping
Sleeping
import geopandas as gpd | |
import sys | |
def clean_geometries(gdf): | |
# Check and fix invalid geometries | |
gdf['geometry'] = gdf['geometry'].buffer(0) # This can help fix some topology issues | |
gdf = gdf[gdf.is_valid] # Remove invalid geometries | |
return gdf | |
def union_shapefiles(shapefile1, shapefile2, output_shapefile): | |
gdf1 = gpd.read_file(shapefile1) | |
gdf2 = gpd.read_file(shapefile2) | |
# Clean geometries | |
gdf1 = clean_geometries(gdf1) | |
gdf2 = clean_geometries(gdf2) | |
# Perform the union | |
union_gdf = gpd.overlay(gdf1, gdf2, how='union') | |
# Save the result to a new shapefile | |
union_gdf.to_file(output_shapefile) | |
# Example usage | |
if __name__ == "__main__": | |
shapefile1 = sys.argv[1] | |
shapefile2 = sys.argv[2] | |
output_shapefile = sys.argv[3] | |
union_shapefiles(shapefile1, shapefile2, output_shapefile) |