import json import uuid from scipy.constants import point from shapely.creation import points from touying.ImageReproject_python.img_types import Point # from Ai_tottle.touying.ImageReproject_python import Point def generate_unique_id(): """生成唯一ID""" return str(uuid.uuid4()) def process_geojson_data(file_path): try: with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) # # 处理数据 # processed_data = process_geojson_data(data) # print(processed_data) # 写入输出文件 # with open(output_file, 'w', encoding='utf-8') as f: # json.dump(processed_data, f, ensure_ascii=False, indent=2) # # print(f"数据处理完成,结果已保存到 {output_file}") except FileNotFoundError: print(f"错误:文件 {file_path} 未找到") except json.JSONDecodeError: print("错误:文件内容不是有效的JSON格式") except Exception as e: print(f"发生未知错误: {str(e)}") """处理GeoJSON数据,添加唯一ID""" processed_data = { "Point": [], "LineString": [], "Polygon": [] } count = 0 # 处理Point数据 for point in data.get("Point", []): new_point = point.copy() # new_point["id"] = generate_unique_id() new_point["coordinates"].append(count) count=count+1 processed_data["Point"].append(new_point) # 处理LineString数据 for line in data.get("LineString", []): new_line = line.copy() new_line["id"] = generate_unique_id() for point in new_line["coordinates"]: point.append(count) count = count + 1 processed_data["LineString"].append(new_line) # 处理Polygon数据 for polygon in data.get("Polygon", []): new_polygon = polygon.copy() new_polygon["id"] = generate_unique_id() for point in new_polygon["coordinates"]: point.append(count) count = count + 1 processed_data["Polygon"].append(new_polygon) return processed_data def convert_processed_to_points(processed_data): local_points = [] count=0 if processed_data["Point"] is not None and len(processed_data["Point"]) > 0: for v in processed_data["Point"]: if v["coordinates"] is not None and len(v["coordinates"]) > 0: y = float(v["coordinates"][0]) # 103.99211191 x = float(v["coordinates"][1]) # 30.76381946 z = float(v["coordinates"][2]) # 高程 point_id = v["coordinates"][3] point1 = Point(x, y, z, point_id) count=count+1 local_points.append(point1) if processed_data["LineString"] is not None and len(processed_data["LineString"]) > 0: for v in processed_data["LineString"]: if v["coordinates"] is not None and len(v["coordinates"]) > 0: for vv in v["coordinates"]: y = float(vv[0]) # 103.99211191 x = float(vv[1]) # 30.76381946 z = float(vv[2]) # 高程 point_id = vv[3] point1 = Point(x, y, z, point_id) count = count + 1 local_points.append(point1) if processed_data["Polygon"] is not None and len(processed_data["Polygon"]) > 0: for v in processed_data["Polygon"]: if v["coordinates"] is not None and len(v["coordinates"]) > 0: for vv in v["coordinates"]: y = float(vv[0]) # 103.99211191 x = float(vv[1]) # 30.76381946 z = float(vv[2]) # 高程 point_id = vv[3] point1 = Point(x, y, z, point_id) count = count + 1 local_points.append(point1) return local_points def add_result_to_prcessdata(processed_data, result): if processed_data["Point"] is not None and len(processed_data["Point"]) > 0: for v in processed_data["Point"]: if v["coordinates"] is not None and len(v["coordinates"]) >0: # y = float(v["coordinates"][0]) # 103.99211191 # x = float(v["coordinates"][1]) # 30.76381946 # z = float(v["coordinates"][2]) # 高程 # point_id = v["id"] # point1 = Point(x, y, z, point_id) # local_points.append(point1) for re in result: if v["coordinates"][3] == re["id"]: v["re"] = re # # point1 = { # "u": 10, # "v": 10, # "id": 41 # } # point2 = { # "u": 1910, # "v": 10, # "id": 42 # } # point3 = { # "u": 10, # "v": 540, # "id": 41 # } # point4 = { # "u": 1910, # "v": 540, # "id": 41 # } # point5 = { # "u": 0, # "v": 1070, # "id": 41 # } # point6 = { # "u": 1910, # "v": 1070, # "id": 41 # } # point7 = { # "u": 960, # "v": 540, # "id": 41 # } # processed_data["Point"].append({ # "re":point1 # }) # processed_data["Point"].append({ # "re":point2 # }) # processed_data["Point"].append({ # "re":point3 # }) # processed_data["Point"].append({ # "re":point4 # }) # processed_data["Point"].append({ # "re":point5 # }) # processed_data["Point"].append({ # "re":point6 # }) # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 0, # "v": 1070, # "id": 41 # } # } # ) # # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 10, # "v": 10, # "id": 42 # } # } # ) # # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 1910, # "v": 10, # "id": 43 # } # } # ) # # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 10, # "v": 540, # "id": 44 # } # } # ) # # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 1910, # "v": 540, # "id": 45 # } # } # ) # # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 1910, # "v": 1070, # "id": 46 # } # } # ) # # processed_data["Point"].append( # { # "coordinates": [ # 103.9925256, # 30.76395247, # 471.192, # 5 # ], # "fillStyle": "red", # "radius": 7, # "comment": "point6", # "re": { # "u": 960, # "v": 540, # "id": 47 # } # } # ) if processed_data["LineString"] is not None and len(processed_data["LineString"]) > 0: for v in processed_data["LineString"]: if v["coordinates"] is not None and len(v["coordinates"]) > 0: v["re"] = [] # # y = float(vv[0]) # 103.99211191 # x = float(vv[1]) # 30.76381946 # z = float(vv[2]) # 高程 # point_id = v["id"] # point1 = Point(x, y, z, point_id) # local_points.append(point1) for re in result: for vv in v["coordinates"]: if vv[3]== re["id"]: v["re"].append(re) # if v["coordinates"][3] == re["id"]: # v["re"].append(re) if processed_data["Polygon"] is not None and len(processed_data["Polygon"]) > 0: for v in processed_data["Polygon"]: if v["coordinates"] is not None and len(v["coordinates"]) > 0: v["re"] = [] for re in result: for vv in v["coordinates"]: if vv[3]== re["id"]: v["re"].append(re) # if v["coordinates"][3] == re["id"]: # v["re"].append(re) return processed_data