import geopandas as gpd import math from shapely.geometry import Point, Polygon # Rentrer les coordonnées du point central et le rayon du cercle d'impact center_point = Point(-9078701.9,4268378.8) # à prendre sous QGIS au point souhaité radius = 1000 # en mètre # Donner le nombre de segments voulus pour le découpage num_segments = 10 # Angle entre les segments angle_between_segments = 360.0 / num_segments # Liste pour les triangles triangles = [] #Création de la couche intersection intersections = gpd.GeoDataFrame() # Calculs des sommets des triangles for i in range(num_segments): # Calcul de l'angle entre chaque triangles angle1 = math.radians(i * angle_between_segments) angle2 = math.radians((i+1) * angle_between_segments) # Calculs des sommets de chaque triangle vertex1_x = center_point.x + radius * math.cos(angle1) vertex1_y = center_point.y + radius * math.sin(angle1) vertex2_x = center_point.x + radius * math.cos(angle2) vertex2_y = center_point.y + radius * math.sin(angle2) vertex3_x = center_point.x vertex3_y = center_point.y # Creation du polygone triangulaire triangle = Polygon([(vertex1_x, vertex1_y), (vertex2_x, vertex2_y), (vertex3_x, vertex3_y)]) # Ajout à la liste triangle et intersection poly = gpd.read_file("poly.shp") intersection = poly.intersects(triangle) triangles.append(triangle) # Création de la couche circle_gdf = gpd.GeoDataFrame(geometry=triangles) # Projection CRS en EPSG:3857 (Web Mercator) circle_gdf.crs = "EPSG:3857" # Reprojection de GeoDataFrame en EPSG:4326 (WGS84) circle_gdf = circle_gdf.to_crs("EPSG:4326") # Sauvegarde circle_gdf.to_file('circle_triangles.shp') crs_wgs84 = circle_gdf.crs with open('circle_triangles.prj', 'w') as prj_file: prj_file.write(crs_wgs84.to_wkt('WKT1_ESRI')) intersection.to_file('intersections.shp')