2.1.4 编辑保存和导入功能设计说明
2.1.4.1. 模块描述
编辑保存和导入模块负责路径数据的管理功能,支持对路径上的各点进行坐标编辑,保存当前路径点集合为路径规划文件,以及从文件导入路径并在当前通道表面重绘路径。该模块还支持记录并查看路径文件操作的历史记录,为用户提供完整的路径数据生命周期管理。
该模块与PathDatabase、PathDataManager和各类导出器(XML/JSON/CSV)紧密集成,实现路径数据的持久化和交换。
2.1.4.2. 功能
核心功能
- 坐标编辑:支持对路径点的坐标进行精确编辑
- 路径保存:将路径保存为XML、JSON、CSV格式文件
- 路径导入:从文件导入路径并在当前场景重绘
- 历史记录:记录路径文件操作历史,支持查看和回溯
子功能
| 功能编号 |
功能名称 |
功能描述 |
| 2.1.4.F1 |
坐标编辑 |
编辑路径点的X/Y/Z坐标 |
| 2.1.4.F2 |
批量编辑 |
批量修改多个路径点坐标 |
| 2.1.4.F3 |
XML导出 |
导出路径为XML格式 |
| 2.1.4.F4 |
JSON导出 |
导出路径为JSON格式 |
| 2.1.4.F5 |
CSV导出 |
导出路径为CSV格式 |
| 2.1.4.F6 |
XML导入 |
从XML文件导入路径 |
| 2.1.4.F7 |
JSON导入 |
从JSON文件导入路径 |
| 2.1.4.F8 |
CSV导入 |
从CSV文件导入路径 |
| 2.1.4.F9 |
路径重绘 |
导入后在当前场景重绘路径 |
| 2.1.4.F10 |
历史记录 |
记录和查看文件操作历史 |
2.1.4.3. 性能
性能指标
| 指标名称 |
目标值 |
说明 |
| 保存响应时间 |
< 500ms |
保存路径到文件的时间 |
| 导入响应时间 |
< 1秒 |
从文件导入路径的时间 |
| 支持文件大小 |
> 10MB |
支持导入的最大文件大小 |
| 历史记录数量 |
> 1000条 |
支持保存的最大历史记录数 |
| 批量编辑响应 |
< 200ms |
批量编辑操作的响应时间 |
性能优化策略
- 使用流式读写处理大文件
- 数据库批量操作优化历史记录写入
- 异步文件操作避免阻塞UI
2.1.4.4. 输入输出项
1. 字段输入输出
输入字段(保存)
| 字段名 |
类型 |
必填 |
说明 |
| Route |
PathRoute |
是 |
要保存的路径对象 |
| FilePath |
string |
是 |
目标文件路径 |
| Format |
ExportFormat |
是 |
导出格式 |
输入字段(导入)
| 字段名 |
类型 |
必填 |
说明 |
| FilePath |
string |
是 |
源文件路径 |
| Format |
ImportFormat |
否 |
导入格式(自动检测) |
输入字段(编辑)
| 字段名 |
类型 |
必填 |
说明 |
| PointId |
string |
是 |
要编辑的点ID |
| NewPosition |
Point3D |
是 |
新坐标位置 |
输出字段
| 字段名 |
类型 |
说明 |
| Success |
bool |
操作是否成功 |
| Message |
string |
操作结果消息 |
| ImportedRoute |
PathRoute |
导入的路径对象 |
| HistoryRecords |
List |
历史记录列表 |
2. 界面交互输入输出
界面输入
- 文件选择对话框操作
- 坐标编辑表单输入
- 导入格式选择
界面输出
- 文件保存/导入进度
- 操作结果提示
- 历史记录列表显示
2.1.4.5. 算法
坐标编辑算法
算法:路径点坐标编辑
输入:点ID,新坐标
输出:编辑结果
1. 根据ID查找路径点
2. 验证新坐标的有效性
3. 更新路径点坐标
4. 重新计算路径长度
5. 更新路径显示
6. 记录编辑历史
路径导出算法
算法:路径数据导出
输入:路径对象,目标格式
输出:文件内容
1. 根据格式选择对应的导出器
2. 序列化路径数据
3. 应用格式特定的转换
4. 写入文件
5. 记录导出历史
路径导入算法
算法:路径数据导入
输入:文件路径
输出:路径对象
1. 检测文件格式
2. 选择对应的导入器
3. 解析文件内容
4. 验证数据完整性
5. 创建路径对象
6. 在当前场景重绘路径
7. 记录导入历史
2.1.4.6. 流程逻辑
开始
│
├──┬── 保存路径 ──┐
│ │ │
│ ▼ │
│┌─────────────┐ │
││选择保存格式 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││选择文件路径 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││执行导出操作 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││记录保存历史 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││显示保存结果 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│ 结束 ◄─────┘
│
├──┬── 导入路径 ──┐
│ │ │
│ ▼ │
│┌─────────────┐ │
││选择导入文件 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││检测文件格式 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││解析文件内容 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││验证数据 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││重绘路径 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│┌─────────────┐ │
││记录导入历史 │ │
│└──────┬──────┘ │
│ │ │
│ ▼ │
│ 结束 ◄─────┘
│
└──┬── 编辑坐标 ──┐
│ │
▼ │
┌─────────────┐ │
│选择编辑的点 │ │
└──────┬──────┘ │
│ │
▼ │
┌─────────────┐ │
│输入新坐标 │ │
└──────┬──────┘ │
│ │
▼ │
┌─────────────┐ │
│验证坐标 │ │
└──────┬──────┘ │
│ │
▼ │
┌─────────────┐ │
│更新路径显示 │ │
└──────┬──────┘ │
│ │
▼ │
结束 ◄─────┘
2.1.4.7. 接口
公共接口
/// <summary>
/// 路径数据管理器
/// </summary>
public class PathDataManager
{
/// <summary>
/// 保存路径到文件
/// </summary>
/// <param name="route">路径对象</param>
/// <param name="filePath">文件路径</param>
/// <param name="format">导出格式</param>
/// <returns>保存结果</returns>
public SaveResult SavePath(PathRoute route, string filePath, ExportFormat format);
/// <summary>
/// 从文件导入路径
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>导入的路径对象</returns>
public ImportResult ImportPath(string filePath);
/// <summary>
/// 编辑路径点坐标
/// </summary>
/// <param name="pointId">点ID</param>
/// <param name="newPosition">新坐标</param>
/// <returns>编辑结果</returns>
public EditResult EditPointCoordinate(string pointId, Point3D newPosition);
/// <summary>
/// 获取历史记录
/// </summary>
/// <returns>历史记录列表</returns>
public List<HistoryRecord> GetHistoryRecords();
}
事件接口
/// <summary>
/// 路径保存完成事件
/// </summary>
public event EventHandler<PathSavedEventArgs> PathSaved;
/// <summary>
/// 路径导入完成事件
/// </summary>
public event EventHandler<PathImportedEventArgs> PathImported;
/// <summary>
/// 坐标编辑完成事件
/// </summary>
public event EventHandler<CoordinateEditedEventArgs> CoordinateEdited;
2.1.4.8. 注释设计
代码注释规范
/// <summary>
/// 导出格式枚举
/// </summary>
public enum ExportFormat
{
/// <summary>
/// XML格式
/// </summary>
XML,
/// <summary>
/// JSON格式
/// </summary>
JSON,
/// <summary>
/// CSV格式
/// </summary>
CSV
}
/// <summary>
/// 保存结果
/// </summary>
public class SaveResult
{
/// <summary>
/// 是否保存成功
/// </summary>
public bool Success { get; set; }
/// <summary>
/// 结果消息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 保存的文件路径
/// </summary>
public string FilePath { get; set; }
}
2.1.4.9. 数据结构
ExportFormat 枚举
| 值 |
说明 |
| XML |
XML格式导出 |
| JSON |
JSON格式导出 |
| CSV |
CSV格式导出 |
SaveResult 结构
| 字段名 |
类型 |
说明 |
| Success |
bool |
保存是否成功 |
| Message |
string |
结果消息 |
| FilePath |
string |
保存的文件路径 |
| FileSize |
long |
文件大小(字节) |
ImportResult 结构
| 字段名 |
类型 |
说明 |
| Success |
bool |
导入是否成功 |
| Message |
string |
结果消息 |
| ImportedRoute |
PathRoute |
导入的路径对象 |
| Format |
ImportFormat |
检测到的格式 |
HistoryRecord 结构
| 字段名 |
类型 |
说明 |
| Id |
string |
记录ID |
| OperationType |
string |
操作类型(保存/导入/编辑) |
| FilePath |
string |
相关文件路径 |
| OperationTime |
DateTime |
操作时间 |
| UserName |
string |
操作用户 |
| Details |
string |
操作详情 |