# -*- coding: utf-8 -*-import jsonimport osimport sysreload(sys)sys.setdefaultencoding('utf-8')def process_coordinates(coords): """递归处理坐标,保留6位小数""" if isinstance(coords, list): if len(coords) == 2 and isinstance(coords[0], (int, float)) and isinstance(coords[1], (int, float)): # 单个坐标点,处理精度 return [round(coords[0], 6), round(coords[1], 6)] else: # 嵌套坐标数组,递归处理 return [process_coordinates(item) for item in coords] else: return coordsdef main(): file_path = r"D:\jjj\jsen.json" # 检查文件是否存在 if not os.path.exists(file_path): print(u"错误:文件 {} 不存在".format(file_path)) return try: # 读取JSON文件 with open(file_path, 'r') as f: data = json.load(f) if not isinstance(data, dict): print(u"错误:JSON文件格式不正确,根节点不是对象") return # 处理每个要素的坐标 features = data.get('features', []) if not isinstance(features, list): print(u"错误:features字段不是数组类型") return for i, feature in enumerate(features): if not isinstance(feature, dict): print(u"警告:第{}个要素格式不正确,跳过处理".format(i+1)) continue geometry = feature.get('geometry') if geometry is None or not isinstance(geometry, dict): print(u"警告:第{}个要素的geometry字段为空或格式不正确,跳过处理".format(i+1)) continue coordinates = geometry.get('coordinates') if coordinates is None: print(u"警告:第{}个要素的coordinates字段为空,跳过处理".format(i+1)) continue geometry['coordinates'] = process_coordinates(coordinates) print(u"已处理第{}个要素".format(i+1)) # 保存处理后的JSON output_path = r"D:\jjj\jsen_processed.json" with open(output_path, 'w') as f: json.dump(data, f, ensure_ascii=False, indent=2) print(u"\n处理完成!结果已保存到:{}".format(output_path)) except Exception as e: import traceback traceback.print_exc() print(u"\n处理过程中出现错误:{}".format(str(e)))if __name__ == "__main__": main()