一个基于 Vue 3 + CesiumJS 的 DJI 无人机航线规划工具,支持生成符合 WPML 1.0.6 标准的 KMZ 航线文件,可直接导入大疆司空 2 (DJI FlightHub 2) 和 Matrice 系列无人机。
- 左侧:航线库面板,显示已创建的航线列表
- 右侧:3D 地图视图(基于高德地图+Cesium)
- 底部:坐标信息和系统状态显示
- 右上角:地图控制工具栏
- 当前支持航线类型:巡逻航线、面状航线(更多类型开发中)
- 选择飞行器型号(Matrice 3/4 系列)
- 选择挂载设备(Matrice 4E/4T)
- 自定义航线名称
- 实时显示航线统计(距离、时长、面积)
- 任务配置面板(飞行参数、高度模式)
- 地图上可视化航线路径和航点
- 一键生成/导入 KMZ 文件
- ✅ 巡逻航线生成、跟司空2兼容
- ✅ m4t 真机测试:在实际环境中验证 Matrice 4T 的飞行和 摄影功能。
💼 如需商业版,请联系作者(微信:
hecongyuan2026)
- 可视化地图编辑:基于高德地图 + CesiumJS 的 3D 地图界面
- 当前支持航线类型:
- 巡逻航线:在地图上添加航点,支持循环或单程巡逻任务
- 面状航线:绘制区域自动生成 S 形扫描路径,支持 AI 目标识别
- 更多航线类型(航点、带状、斜面、几何体等)正在开发中
- 实时预览:航线路径实时显示,支持闭合航线和单程航线
- 坐标系转换:自动转换 GCJ-02(高德)和 WGS84(GPS)坐标系
- 智能扫描路径生成:自动生成 S 形扫描路径
- 目标识别配置:支持人、车、船三种目标类型
- 参数可调:
- 扫描间距(5-200m)
- 航线方向(0-359°)
- 边界内缩(0-50m)
- 云台俯仰角(-90° ~ 30°)
- 重叠率设置:航向重叠 80%,旁向重叠 70%
- 海拔高度 (WGS84):绝对海拔高度,基于 WGS84 椭球
- 相对起飞点高度:相对于起飞点的高度
- 相对地形高度 (实时仿地):实时跟随地形起伏,保持相对地面高度恒定
- 飞行参数:速度、高度、起飞安全高度
- 失控动作:返航、悬停、降落、继续执行
- 完成动作:返航、降落、悬停、返回首航点
- 爬升模式:垂直爬升、倾斜爬升
- 导出 KMZ:生成符合 WPML 1.0.6 标准的 KMZ 文件
- 导入 KMZ:解析现有 KMZ 文件,恢复航线和配置
- 兼容性:完全兼容大疆司空 2 和 Matrice 系列无人机
- Node.js >= 20.x
- pnpm >= 10.x (推荐) 或 npm
# 使用 pnpm (推荐)
pnpm install
# 或使用 npm
npm install# 启动开发服务器
pnpm dev
# 或
npm run dev访问 http://localhost:5173 即可使用。
# 构建生产版本
pnpm build
# 或
npm run build构建产物将输出到 dist 目录。
- 选择“巡逻航线”类型
- 在地图上点击添加巡逻航点
- 设置航点参数(速度、高度、云台角度)
- 支持循环巡逻和单程巡逻
- 选择“面状航线”类型
- 在地图上绘制扫描区域(至少 3 个点)
- 系统自动生成 S 形扫描路径
- 调整扫描参数(间距、方向、边距)
- 选择 AI 识别目标(人、车、船) - 仅 Matrice 4T 支持
- 飞行速度:1-15 m/s,推荐 10 m/s
- 飞行高度:20-500 m,推荐 60 m
- 起飞安全高度:10-200 m,推荐 20 m
- 海拔高度:适用于地形平坦区域
- 相对起飞点:适用于起飞点和目标区域高度相近的场景
- 实时仿地:适用于山地、丘陵等地形起伏较大的区域
- 点击 生成 KMZ 按钮
- 文件自动下载(
mission.kmz) - 导入大疆司空 2 或无人机遥控器
- 点击 导入 KMZ 按钮
- 选择已有的 KMZ 文件
- 系统自动解析并恢复航线和配置
- Vue 3.5:渐进式 JavaScript 框架
- Vite 5.4:下一代前端构建工具
- CesiumJS 1.135:3D 地球和地图引擎
- Vue-Cesium 3.2:CesiumJS 的 Vue 3 封装
- 高德地图:底图服务(GCJ-02 坐标系)
- JSZip 3.10:KMZ 文件压缩/解压
- UUID:生成唯一标识符(自定义实现)
way_line/
├── src/
│ ├── components/
│ │ └── WaypointGenerator/
│ │ ├── index.vue # 主组件
│ │ ├── MapViewer.vue # 地图视图
│ │ ├── ControlPanel.vue # 控制面板
│ │ ├── MissionConfig.vue # 任务配置
│ │ └── WaypointList.vue # 航点列表
│ ├── utils/
│ │ ├── kmzGenerator.js # KMZ 生成器
│ │ ├── kmzParser.js # KMZ 解析器
│ │ ├── routePlanner.js # 路径规划算法
│ │ ├── coordTransform.js # 坐标转换 (GCJ-02 ↔ WGS84)
│ │ └── geoUtils.js # 地理计算工具
│ ├── App.vue # 应用根组件
│ └── main.js # 应用入口
├── public/ # 静态资源
├── package.json # 项目配置
├── vite.config.js # Vite 配置
└── README.md # 项目文档
项目实现了 GCJ-02(火星坐标系)和 WGS84(GPS 坐标系)之间的相互转换:
- 存储:使用 GCJ-02 坐标(与高德地图一致)
- 显示:直接使用 GCJ-02 坐标(无偏移)
- 导出:转换为 WGS84 坐标(大疆标准)
这确保了:
- ✅ 前端点击位置和显示位置完全一致
- ✅ 导入大疆后位置准确无偏移
基于多边形区域自动生成 S 形扫描路径:
- 坐标投影:将经纬度转换为平面坐标(米)
- 多边形收缩:根据边距参数向内收缩
- 坐标旋转:根据方向角旋转坐标系
- 扫描线生成:在旋转后的坐标系中生成水平扫描线
- 交点计算:计算扫描线与多边形的交点
- 路径优化:S 形连接,减少转弯次数
- 反向旋转:转换回原坐标系
- 坐标还原:转换回经纬度
使用 Haversine 公式计算航点间的大圆距离:
const R = 6371000; // 地球半径(米)
const φ1 = lat1 * π / 180;
const φ2 = lat2 * π / 180;
const Δφ = (lat2 - lat1) * π / 180;
const Δλ = (lng2 - lng1) * π / 180;
const a = sin²(Δφ/2) + cos(φ1) · cos(φ2) · sin²(Δλ/2);
const c = 2 · atan2(√a, √(1−a));
const d = R · c;生成的 KMZ 文件符合 DJI WPML 1.0.6 标准:
mission.kmz
└── wpmz/
├── template.kml # 模板定义(区域、参数)
└── waylines.wpml # 航线定义(航点、动作)
- 任务配置(速度、高度模式、失控动作等)
- 区域定义(多边形坐标)
- AI 巡逻参数(方向、边距、重叠率、目标类型)
- 云台和相机参数
- 航点列表(坐标、高度、速度)
- 航点动作(云台角度、拍照、录像)
- AI 目标检测动作
- 航线统计(距离、时间)
- 前端地图使用 GCJ-02(高德地图)
- 导出 KMZ 使用 WGS84(GPS 标准)
- 系统自动处理转换,无需手动操作
- 海拔高度:需要知道区域的实际海拔
- 相对起飞点:适用于大部分场景
- 实时仿地:需要无人机支持实时测距传感器
- 仅支持 Matrice 4T 及以上型号
- 需要在大疆司空 2 中启用 AI 功能
- 扫描间距建议 10-50m,根据目标大小调整
- 生成的 KMZ 文件符合 WPML 1.0.6 标准
- 兼容大疆司空 2 和 Matrice 系列无人机
- 建议在导入前备份原有航线
A: 已通过坐标转换解决。如果仍有偏移,请检查:
- 地图底图是否为高德地图
- 是否在中国境内(坐标转换仅在中国有效)
A: 虚线表示模板,实线表示确定航线。已添加 distance 和 duration 参数,应显示为实线。
A: 调整 航线方向角度:
- 0° = 南北向(垂直)
- 90° = 东西向(水平)
A: 减小扫描间距或增大重叠率会增加航点数。建议:
- 扫描间距:20-50m
- 重叠率:保持默认 80%/70%
本项目采用 GPL-3.0 许可证 (GNU General Public License v3.0)。
- ✅ 商业使用:允许商业使用
- ✅ 修改:允许修改源代码
- ✅ 分发:允许分发原始或修改后的版本
- ✅ 专利授权:提供明确的专利授权
- ✅ 私人使用:允许私人使用和修改
⚠️ 相同许可证:修改后的衍生作品必须使用相同的 GPL-3.0 许可证⚠️ 开源要求:分发时必须提供完整的源代码⚠️ 版权声明:必须保留原作者的版权声明和许可证信息⚠️ 状态变更说明:修改文件时必须注明修改内容
- 保护开源生态:确保衍生作品也保持开源,防止闭源商用
- 专利保护:GPL-3.0 提供了明确的专利授权,保护用户免受专利诉讼
- 促进共享:鼓励开发者共享改进,共同推动项目发展
- DRM 限制:禁止使用 DRM(数字版权管理)限制用户权利
详细许可证内容请查看 LICENSE 文件。
欢迎提交 Issue 和 Pull Request!
- 作者微信:
hecongyuan2026 - Email:
h285121973@gmail.com - 问题反馈:通过 GitHub Issues 提交
欢迎加入 DJI 航线生成器社区交流群,与其他开发者和用户交流使用经验、分享航线规划技巧、获取最新功能更新!





