2.4.3 输出格式功能设计说明
2.4.3.1. 模块描述
输出格式模块是交互式导航功能的关键模块,负责支持路径规划结果结构化文件输出(XML/JSON/CSV),确保结果文件能够导入DELMIA。该模块提供了标准化的数据交换格式,使路径规划结果可以在不同的系统和软件之间进行交换和复用。
该模块与ExportPathCommand、PathDataManager和各类导出器(XML/JSON/CSV)紧密集成,实现灵活的数据导出功能。
2.4.3.2. 功能
核心功能
- XML格式输出:导出为XML格式的结构化数据
- JSON格式输出:导出为JSON格式的结构化数据
- CSV格式输出:导出为CSV表格格式
- DELMIA兼容:确保输出格式兼容DELMIA导入
- 数据转换:支持不同格式之间的数据转换
子功能
| 功能编号 |
功能名称 |
功能描述 |
| 2.4.3.F1 |
XML导出 |
导出路径数据为XML格式 |
| 2.4.3.F2 |
JSON导出 |
导出路径数据为JSON格式 |
| 2.4.3.F3 |
CSV导出 |
导出路径数据为CSV格式 |
| 2.4.3.F4 |
DELMIA格式 |
生成DELMIA兼容的输出 |
| 2.4.3.F5 |
格式验证 |
验证输出格式正确性 |
| 2.4.3.F6 |
批量导出 |
批量导出多条路径 |
| 2.4.3.F7 |
字段定制 |
定制导出的字段内容 |
2.4.3.3. 性能
性能指标
| 指标名称 |
目标值 |
说明 |
| 导出响应时间 |
< 1秒 |
导出单条路径的响应时间 |
| 批量导出速度 |
> 100条/秒 |
批量导出的处理速度 |
| 文件大小优化 |
< 1MB |
单条路径的导出文件大小 |
| 内存占用 |
< 100MB |
导出过程的内存占用 |
性能优化策略
- 流式写入大文件
- 异步导出操作
- 数据压缩
2.4.3.4. 输入输出项
1. 字段输入输出
输入字段
| 字段名 |
类型 |
必填 |
说明 |
| Routes |
List |
是 |
要导出的路径列表 |
| Format |
ExportFormat |
是 |
导出格式 |
| ExportOptions |
ExportOptions |
否 |
导出选项 |
输出字段
| 字段名 |
类型 |
说明 |
| FilePath |
string |
导出文件路径 |
| ExportedCount |
int |
导出的路径数量 |
| FileSize |
long |
文件大小 |
2. 界面交互输入输出
界面输入
- 导出格式选择
- 字段选择勾选
- 文件路径选择
- DELMIA兼容选项
界面输出
- 导出进度显示
- 文件大小信息
- 导出结果提示
- 文件预览
2.4.3.5. 算法
XML导出算法
算法:导出路径为XML格式
输入:路径列表,导出选项
输出:XML文件
1. 创建XML文档
2. 添加根元素<TransportPaths>
3. 对于每条路径:
4. 创建<Path>元素
5. 添加路径属性(ID、名称、长度等)
6. 添加<Points>子元素
7. 对于每个路径点:
8. 创建<Point>元素
9. 添加坐标和属性
10. 保存XML文件
JSON导出算法
算法:导出路径为JSON格式
输入:路径列表,导出选项
输出:JSON文件
1. 创建路径数据对象列表
2. 对于每条路径:
3. 序列化路径对象为JSON对象
4. 添加到列表
5. 序列化整个列表为JSON字符串
6. 保存到文件
CSV导出算法
算法:导出路径为CSV格式
输入:路径列表,导出选项
输出:CSV文件
1. 写入CSV表头
2. 对于每条路径的每个点:
3. 创建数据行
4. 写入坐标、类型等信息
5. 写入CSV文件
2.4.3.6. 流程逻辑
开始
│
▼
┌─────────────────┐
│ 选择要导出的路径 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 选择导出格式 │
└────────┬────────┘
│
┌────┼────┬────────┐
▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐
│ XML ││ JSON ││ CSV ││DELMIA│
└──┬───┘└──┬───┘└──┬───┘└──┬───┘
│ │ │ │
└───────┼───────┼───────┘
│ │
▼ ▼
┌─────────────────────┐
│ 配置导出字段和选项 │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ 选择保存文件路径 │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ 执行导出操作 │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ 验证导出结果 │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ 显示导出完成信息 │
└──────────┬──────────┘
│
▼
结束
2.4.3.7. 接口
公共接口
/// <summary>
/// 导出路径命令
/// </summary>
public class ExportPathCommand
{
/// <summary>
/// 执行导出
/// </summary>
/// <param name="routes">路径列表</param>
/// <param name="format">导出格式</param>
/// <param name="filePath">文件路径</param>
/// <returns>导出结果</returns>
public ExportResult Execute(List<PathRoute> routes, ExportFormat format, string filePath);
}
/// <summary>
/// 导出格式枚举
/// </summary>
public enum ExportFormat
{
XML,
JSON,
CSV,
DELMIA
}
/// <summary>
/// 导出选项
/// </summary>
public class ExportOptions
{
public bool IncludeCoordinates { get; set; }
public bool IncludeTiming { get; set; }
public bool IncludeProperties { get; set; }
public bool UseMeters { get; set; }
}
2.4.3.8. 注释设计
代码注释规范
/// <summary>
/// DELMIA导出配置
/// 用于生成DELMIA兼容的路径数据
/// </summary>
public class DelmiaExportConfig
{
/// <summary>
/// 坐标系类型
/// DELMIA使用特定的坐标系约定
/// </summary>
public CoordinateSystemType CoordinateSystem { get; set; }
/// <summary>
/// 是否包含速度信息
/// </summary>
public bool IncludeVelocity { get; set; }
/// <summary>
/// 采样间隔(秒)
/// </summary>
public double SampleInterval { get; set; }
}
2.4.3.9. 数据结构
ExportFormat 枚举
| 值 |
说明 |
| XML |
XML格式 |
| JSON |
JSON格式 |
| CSV |
CSV格式 |
| DELMIA |
DELMIA兼容格式 |
ExportOptions 结构
| 字段名 |
类型 |
说明 |
| IncludeCoordinates |
bool |
包含坐标信息 |
| IncludeTiming |
bool |
包含时间信息 |
| IncludeProperties |
bool |
包含属性信息 |
| UseMeters |
bool |
使用米制单位 |
| Precision |
int |
坐标精度(小数位) |
XML格式示例
<?xml version="1.0" encoding="UTF-8"?>
<TransportPaths>
<Path id="path001" name="主通道路径">
<Length>125.5</Length>
<EstimatedTime>156.9</EstimatedTime>
<Points>
<Point index="0" type="Start">
<X>10.0</X>
<Y>20.0</Y>
<Z>0.0</Z>
</Point>
<!-- 更多点... -->
</Points>
</Path>
</TransportPaths>
JSON格式示例
{
"paths": [
{
"id": "path001",
"name": "主通道路径",
"length": 125.5,
"estimatedTime": 156.9,
"points": [
{
"index": 0,
"type": "Start",
"x": 10.0,
"y": 20.0,
"z": 0.0
}
]
}
]
}
CSV格式示例
PathID,PathName,PointIndex,PointType,X,Y,Z
path001,主通道路径,0,Start,10.0,20.0,0.0
path001,主通道路径,1,WayPoint,15.0,25.0,0.0