当前位置: 首页 > news >正文

js模板式生成大疆上云kml文件(含详细注释,已封装成函数)

代码: 

// KML模板函数,用于填充JSON数据
export default function kmlTemplate (data) {return `<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:wpml="http://www.dji.com/wpmz/1.0.2"><Document><Folder><!-- Step 1: Implement File Creation Information --><!-- 航线创作者 --><wpml:author>Name</wpml:author><!-- 航线创造时间的时间戳 --><wpml:createTime>1637600807044</wpml:createTime><!-- 航线更新的时间戳 --><wpml:updateTime>1637600875837</wpml:updateTime><!-- Step 2: Setup Mission Configuration --><wpml:missionConfig><wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode><wpml:finishAction>goHome</wpml:finishAction><!-- 失控是否继续执行航线 --><!-- goContinue/executeLostAction:退出航线,执行失控动作 --><wpml:exitOnRCLost>goContinue</wpml:exitOnRCLost><!-- 失控动作类型goback/lamding/hover --><wpml:executeRCLostAction>hover</wpml:executeRCLostAction><!-- 安全起飞高度 --><wpml:takeOffSecurityHeight>20</wpml:takeOffSecurityHeight><!-- 参考起飞点 --><wpml:takeOffRefPoint>23.98057,115.987663,100</wpml:takeOffRefPoint><!-- 参考起飞点海拔高度 --><wpml:takeOffRefPointAGLHeight>35</wpml:takeOffRefPointAGLHeight><!-- 全局航线过渡速度 ; 8m/s--><wpml:globalTransitionalSpeed>8</wpml:globalTransitionalSpeed><wpml:droneInfo><!-- Declare drone model with M30 --><!-- 飞行器机型主类型 --><!-- 89(机型:M350 RTK),60(机型:M300 RTK),67(机型:M30/M30T),77(机型:M3E/M3T/M3M),91(机型:M3D/M3TD) --><wpml:droneEnumValue>67</wpml:droneEnumValue><!-- 飞行器机型子类型 --><!-- 当“飞行器机型主类型”为“67(机型:M30/M30T)”时:0(机型:M30双光),1(机型:M30T三光)当“飞行器机型主类型“为”77(机型:M3E/M3T/M3M)“时:0(机型:M3E)1(机型:M3T)2(机型:M3M)当“飞行器机型主类型“为”91(机型:M3D/M3TD)“时:0(机型:M3D)1(机型:M3TD --><wpml:droneSubEnumValue>0</wpml:droneSubEnumValue></wpml:droneInfo><wpml:payloadInfo><!-- Declare payload model with M30 --><!-- 负载机型主类型 --><!-- 42(H20)43(H20T)52(M30双光相机)53(M30T三光相机)61(H20N)66(Mavic 3E 相机)67(Mavic 3T 相机)68(Mavic 3M 相机)80(Matrice 3D 相机)81(Matrice 3TD 相机)65534(PSDK 负载)82(H30)83(H30T) --><wpml:payloadEnumValue>52</wpml:payloadEnumValue><!-- 负载挂载位置 --><!-- 0:飞行器1号挂载位置。M300 RTK,M350 RTK机型,对应机身左前方。其它机型,对应主云台。1:飞行器2号挂载位置。M300 RTK,M350 RTK机型,对应机身右前方。2:飞行器3号挂载位置。M300 RTK,M350 RTK机型,对应机身上方。 --><wpml:payloadPositionIndex>0</wpml:payloadPositionIndex></wpml:payloadInfo></wpml:missionConfig><!-- Step 3: Setup A Folder for Waypoint Template --><Folder><wpml:templateType>waypoint</wpml:templateType><wpml:useGlobalTransitionalSpeed>0</wpml:useGlobalTransitionalSpeed><!-- 模板ID
* 注:在一个kmz文件内该ID唯一。建议从0开始单调连续递增。
在template.kml和waylines.wpml文件中,将使用该id将模板与所生成的可执行航线进行关联。 --><wpml:templateId>0</wpml:templateId><!-- 坐标系参数 --><wpml:waylineCoordinateSysParam><wpml:coordinateMode>WGS84</wpml:coordinateMode><wpml:heightMode>EGM96</wpml:heightMode><wpml:globalShootHeight>50</wpml:globalShootHeight><!-- 飞行器离被摄面高度(相对地面高)* 注:仅适用于模板类型mapping2d,mapping3d,mappingStrip --><wpml:positioningType>GPS</wpml:positioningType><!-- 是否开启仿地飞行,0不开启,1开启 --><wpml:surfaceFollowModeEnable>1</wpml:surfaceFollowModeEnable><wpml:surfaceRelativeHeight>100</wpml:surfaceRelativeHeight></wpml:waylineCoordinateSysParam><wpml:autoFlightSpeed>7</wpml:autoFlightSpeed><wpml:gimbalPitchMode>usePointSetting</wpml:gimbalPitchMode><!-- 全局偏航角模式参数 --><wpml:globalWaypointHeadingParam><!-- 飞行器偏航角模式 --><wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode><!-- 飞行器偏航角度 --><wpml:waypointHeadingAngle>45</wpml:waypointHeadingAngle><wpml:waypointPoiPoint>24.323345,116.324532,31.000000</wpml:waypointPoiPoint><!-- 飞行器偏航角转动方向 --><!-- clockwise:顺时针旋转飞行器偏航角counterClockwise:逆时针旋转飞行器偏航角followBadArc:沿最短路径旋转飞行器偏航角 --><wpml:waypointHeadingPathMode>clockwise</wpml:waypointHeadingPathMode></wpml:globalWaypointHeadingParam><!-- 全局航点类型(全局航点转弯模式) --><!-- coordinateTurn:协调转弯,不过点,提前转弯toPointAndStopWithDiscontinuityCurvature:直线飞行,飞行器到点停toPointAndStopWithContinuityCurvature:曲线飞行,飞行器到点停toPointAndPassWithContinuityCurvature:曲线飞行,飞行器过点不停 --><wpml:globalWaypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:globalWaypointTurnMode><!-- 全局航段轨迹是否尽量贴合直线 --><!-- 0:航段轨迹全程为曲线 1:航段轨迹尽量贴合两点连线 --><wpml:globalUseStraightLine>0</wpml:globalUseStraightLine>${data.map(point => `<Placemark><Point><coordinates>${point.longitude},${point.latitude},${point.height}</coordinates></Point><wpml:index>0</wpml:index><wpml:ellipsoidHeight>90.2</wpml:ellipsoidHeight><wpml:height>100</wpml:height><!-- 0:不使用全局设置;1:使用全局设置 --><wpml:useGlobalHeight>1</wpml:useGlobalHeight><wpml:useGlobalSpeed>1</wpml:useGlobalSpeed><wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam><wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam><wpml:gimbalPitchAngle>0</wpml:gimbalPitchAngle><!-- Declare action group for waypoint 1# --><wpml:actionGroup><wpml:actionGroupId>0</wpml:actionGroupId><wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex><wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex><!-- 	动作执行模式 --><!-- sequence:串行执行。即动作组内的动作依次按顺序执行。 --><wpml:actionGroupMode>sequence</wpml:actionGroupMode><wpml:actionTrigger><!-- 	reachPoint:到达航点时执行betweenAdjacentPoints:航段触发,均匀转云台multipleTiming:等时触发multipleDistance:等距触发* 注:“betweenAdjacentPoints”需配合动作"gimbalEvenlyRotate"使用,“multipleTiming” 配合动作 “takePhoto” 即可实现等时间隔拍照,“multipleDistance” 配合动作 “takePhoto” 即可实现等距离间隔拍照。 --><wpml:actionTriggerType>reachPoint</wpml:actionTriggerType></wpml:actionTrigger><!-- Declare the 1st action: rotate gimbal --><wpml:action><wpml:actionId>0</wpml:actionId><wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc><wpml:actionActuatorFuncParam><!-- 云台转动模式 --><!-- -	absoluteAngle:绝对角度,相对于正北方的角度 --><wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode><!-- 0不能/1能 --><wpml:gimbalPitchRotateEnable>0</wpml:gimbalPitchRotateEnable><wpml:gimbalPitchRotateAngle>0</wpml:gimbalPitchRotateAngle><wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable><wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle><!-- yaw偏航 --><wpml:gimbalYawRotateEnable>1</wpml:gimbalYawRotateEnable><wpml:gimbalYawRotateAngle>30</wpml:gimbalYawRotateAngle><wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable><wpml:gimbalRotateTime>0</wpml:gimbalRotateTime><wpml:payloadPositionIndex>0</wpml:payloadPositionIndex></wpml:actionActuatorFuncParam></wpml:action><!-- Declare the 2nd action: take photo --><wpml:action><wpml:actionId>1</wpml:actionId><wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc><wpml:actionActuatorFuncParam><wpml:fileSuffix>point1</wpml:fileSuffix><wpml:payloadPositionIndex>0</wpml:payloadPositionIndex></wpml:actionActuatorFuncParam></wpml:action></wpml:actionGroup></Placemark>`).join('')}</Folder></Document>
</kml>
`;}

注意:如此生成的航线缺乏规范且死板,需要后端domj4针对飞行器姿态和云台姿态生成符合生产需求的对应航线文件,更多的帮自己和大家节省对照查阅官方文档的时间。


http://www.mrgr.cn/news/55073.html

相关文章:

  • uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)
  • 2024大模型应用实践报告|附35页PDF文件下载
  • Vue3中ref和reactive的对比
  • 哈尔滨等保测评如何保证数据完整性?
  • gaussdb 基础管理 数据库 表 用户 模式 权限 存储过程
  • 鹏哥C语言86-1---第14次作业:操作符的使用
  • Vue框架
  • 探索音频在线剪辑工具的奇妙世界
  • OpenMetrics 和 Prometheus 数据规范
  • jQuery UI 部件库
  • UE5 gameplay学习1 蓝图修改材质和参数
  • 【QT】常用控件(三)
  • Maven入门到进阶:构建、依赖与插件管理详解
  • 实战OpenCV之机器学习
  • STM32+DHT11温湿度传感器(含完整代码)
  • 【星闪技术】WS63E模块连接华为IoT云
  • Linux操作系统如何制作U盘启动盘
  • 架构师之路-学渣到学霸历程-25
  • Unity新的UI,用代码创建VisualElement的UI界面
  • OpenAl O1:AI领域的创新之选,你准备好了吗?
  • 跨交换机构建VLAN及VLAN间通信
  • MATLAB | 绘图复刻(十八) | K-means 聚类分组热图
  • 大模型的多样性:从语言处理到多模态智能
  • 深入解析:Nacos AP 模式的实现原理与应用场景
  • ACM与蓝桥杯竞赛指南 基本输入输出格式一
  • Linux命令进阶·vi\vim编辑器详细命令介绍