pom.xml
@@ -30,15 +30,15 @@ <javax-jaxb.version>2.3.0</javax-jaxb.version> </properties> <repositories> <repository> <id>osgeo</id> <name>OSGeo Release Repository</name> <url>https://repo.osgeo.org/repository/release/</url> <snapshots><enabled>false</enabled></snapshots> <releases><enabled>true</enabled></releases> </repository> </repositories> <repositories> <repository> <id>osgeo</id> <name>OSGeo Release Repository</name> <url>https://repo.osgeo.org/repository/release/</url> <snapshots><enabled>false</enabled></snapshots> <releases><enabled>true</enabled></releases> </repository> </repositories> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> @@ -200,7 +200,6 @@ <version>1.2.33</version> </dependency> <!-- aop依赖 --> <dependency> <groupId>org.springframework.boot</groupId> @@ -241,6 +240,17 @@ <version>0.7</version> </dependency> <!-- xml相关操作 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency> </dependencies> src/main/java/com/dji/sample/patches/utils/DistanceCalculator.java
New file @@ -0,0 +1,103 @@ package com.dji.sample.patches.utils; import org.locationtech.jts.geom.Coordinate; import java.util.*; import java.util.stream.Collectors; /** * @PROJECT_NAME: drone * @DESCRIPTION: 计算两个经纬度点之间的距离(以公里为单位) * @USER: aix * @DATE: 2024/3/25 14:25 */ public class DistanceCalculator { private static final int EARTH_RADIUS_KM = 6371; // 地球半径,单位:公里 /** * 使用Haversine公式计算两个经纬度点之间的距离(单位:公里) * * @param lat1 第一个点的纬度 * @param lon1 第一个点的经度 * @param lat2 第二个点的纬度 * @param lon2 第二个点的经度 * @return 两点之间的距离(单位:公里) */ public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) { double dLat = Math.toRadians(lat2 - lat1); double dLon = Math.toRadians(lon2 - lon1); lat1 = Math.toRadians(lat1); lat2 = Math.toRadians(lat2); double a = Math.pow(Math.sin(dLat / 2), 2) + Math.pow(Math.sin(dLon / 2), 2) * Math.cos(lat1) * Math.cos(lat2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double distance = EARTH_RADIUS_KM * c; return distance; } /** * 中心点排序 * @param coordinates 中心点数组 * @param airportLat 纬度 * @param airportLon 经度 * @param index 索引 * @param retCoordinate 返回结果 * @return */ public static Coordinate[] sortByDistance(List<Coordinate> coordinates, double airportLat, double airportLon,int index,Coordinate[] retCoordinate) { // 创建一个列表来保存坐标、对应的距离以及原始下标 List<Map.Entry<Coordinate, Map.Entry<Double, Integer>>> distanceList = new ArrayList<>(); for (int i = 0; i < coordinates.size(); i++) { Coordinate coord = coordinates.get(i); double distance = calculateDistance(airportLat, airportLon, coord.y, coord.x); // 注意:y是纬度,x是经度 distanceList.add(new AbstractMap.SimpleEntry<>(coord, new AbstractMap.SimpleEntry<>(distance, i))); } // 根据距离进行排序 distanceList.sort(Comparator.comparingDouble(entry -> entry.getValue().getKey())); //中心点排序结果 retCoordinate[index] = distanceList.get(0).getKey(); coordinates.remove(distanceList.get(0).getKey()); if (coordinates.size() > 0) { index = index+1; sortByDistance(coordinates,distanceList.get(0).getKey().y,distanceList.get(0).getKey().x,index,retCoordinate); } return retCoordinate; } public static Coordinate[] getFirstPolygon(List<Coordinate> coordinatesCentro,Coordinate[] afterCoor,List<List<Coordinate>> coordinates) { // 创建一个列表来保存坐标、对应的距离以及原始下标 List<Map.Entry<Coordinate, List<List<Coordinate>>>> distanceList = new ArrayList<>(); for (int i = 0; i < coordinates.size(); i++) { Coordinate coord = coordinatesCentro.get(i); distanceList.add(new AbstractMap.SimpleEntry<>(coord, coordinates)); } // 如果你需要排序前的下标,你可以通过以下方式获取它们: Map<Coordinate, List<List<Coordinate>>> originalIndexMap = distanceList.stream() .collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue())); // 现在你可以通过坐标查找原始的下标 // 例如:int originalIndex = originalIndexMap.get(someCoordinate); Coordinate[] retcoor = new Coordinate[afterCoor.length * 4 - 3]; for (int i = 0; i<afterCoor.length;i++) { originalIndexMap.get(afterCoor[i]); System.out.println(originalIndexMap.get(afterCoor[i])); } return null; } } src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java
New file @@ -0,0 +1,140 @@ package com.dji.sample.patches.utils; import com.dji.sample.patches.model.entity.LotInfo; import org.geotools.geometry.jts.JTSFactoryFinder; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Envelope; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.io.ParseException; import org.locationtech.jts.io.WKTReader; import java.util.*; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/25 10:35 */ public class GeoToolsUtil { /** * 获取中心点位置 * * @param geometry Geometry * @return */ public static Coordinate getCentro(Geometry geometry) { return geometry.getCentroid().getCoordinate(); } /** * 获取4个点的经纬度 * * @param geometry Geometry * @return */ public static List<Coordinate> getExtremePoints(Geometry geometry) { List<Coordinate> extremePoints = new ArrayList<>(); Envelope envelope = geometry.getEnvelopeInternal(); // 获取4个点经纬度 extremePoints.add(new Coordinate(envelope.getMinX(), envelope.getMaxY())); extremePoints.add(new Coordinate(envelope.getMinX(), envelope.getMinY())); extremePoints.add(new Coordinate(envelope.getMaxX(), envelope.getMinY())); extremePoints.add(new Coordinate(envelope.getMaxX(), envelope.getMaxY())); return extremePoints; } /** * 航线点排序 * * @return */ public static Coordinate [] getRoutePointOrder(List<LotInfo> list) { List<Coordinate> centros = new ArrayList<>(); List<List<Coordinate>> extremePoints = new ArrayList<>(); Map<Coordinate,List<Coordinate>> points = new HashMap<>(); list.forEach(patche -> { String wkt = patche.getDkfw(); // 解析WKT字符串为多边形 WKTReader wktReader = new WKTReader(JTSFactoryFinder.getGeometryFactory()); Geometry polygon = null; try { polygon = wktReader.read(wkt); } catch (ParseException e) { throw new RuntimeException(e); } // 开始封装中心点坐标 Coordinate coordinateCentro = getCentro(polygon); centros.add(coordinateCentro); // 开始封装图斑4个航线 List<Coordinate> coordinatePointList = getExtremePoints(polygon); extremePoints.add(coordinatePointList); points.put(coordinateCentro,coordinatePointList); }); // 开始排序 // 机场经纬度 double airportLat = 28.624514734; // 机场纬度 double airportLon = 115.856725497; // 机场经度 Coordinate [] coordinates = new Coordinate[centros.size() + 1]; List<Coordinate> coordinateList = new ArrayList<>(); coordinates[0] = new Coordinate(airportLon, airportLat); //第一个为机场经纬度 coordinateList.add(new Coordinate(airportLon, airportLat)); //第一个为机场经纬度) for (int i = 1; i < centros.size() + 1; i++) { coordinates[i] = centros.get(i-1); coordinateList.add(centros.get(i-1)); } // 对中心坐标数组进行排序 Coordinate[] retCoordinate = new Coordinate[coordinateList.size()]; Coordinate[] sortedCoordinates = DistanceCalculator.sortByDistance(coordinateList, airportLat, airportLon, 0,retCoordinate); // 开始拼接图斑点位--按中心坐标数组排序顺序 // 长度-3第一个起点只有一个点位 Coordinate[] retc = new Coordinate[sortedCoordinates.length * 4 - 3]; // 赋值起点 retc[0] = sortedCoordinates[0]; int i = 0; for (Coordinate num : sortedCoordinates) { List<Coordinate> coordinatePoints = points.get(num); if (null != coordinatePoints) { for (int j = 0; j < coordinatePoints.size(); j++) { // 开始拼接 retc[i * coordinatePoints.size() + j - 3] = coordinatePoints.get(j); } } i++; } return retc; } public static void main(String[] args) { //测试 List<LotInfo> list = new ArrayList<>(); list.add(LotInfo.builder().dkfw("POLYGON((115.866465564947 28.6344502965542, 115.86425430209 28.6357383285408, 115.864551734716 28.633120921433, 115.866977149064 28.6338435339976, 115.866465564947 28.6344502965542))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.864006690605 28.6202713913694, 115.86002109342 28.6162025130492, 115.866374254306 28.6142037658042, 115.865912044006 28.6172001020759, 115.864006690605 28.6202713913694))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.839366933455 28.6161999317332, 115.841288489469 28.6160843601496, 115.840931570318 28.6181544912247, 115.838147600941 28.618654178036, 115.839366933455 28.6161999317332))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.857499052697 28.6784702230642, 115.859109158101 28.6762273976226, 115.863677723232 28.6766081113836, 115.862154868188 28.6790827508297, 115.857499052697 28.6784702230642))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.834974056705 28.6659171428962, 115.833760531592 28.6634960413229, 115.832422084777 28.6624550271329, 115.829745191145 28.6631986086972, 115.831232354274 28.6608191476914, 115.833314382654 28.6603729987527, 115.835545127347 28.6618601618814, 115.837032290475 28.6639421902615, 115.834974056705 28.6659171428962))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.885622116006 28.5766308429787, 115.883936664461 28.5771582901683, 115.883365593819 28.5752547213636, 115.883555950699 28.5740174016407, 115.88365112914 28.5724945465969, 115.885364341064 28.5721138328361, 115.886696839227 28.5725897250371, 115.887458266749 28.5736366878797, 115.886792017668 28.5753498998039, 115.885622116006 28.5766308429787))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.857644341395 28.5750890964568, 115.857572957565 28.5729475815515, 115.858429563527 28.5728761977213, 115.859072017998 28.5738041875136, 115.859072017998 28.5748035611361, 115.857644341395 28.5750890964568))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.912181587649 28.6231542087745, 115.912181587649 28.6215123806805, 115.915893546818 28.6212268453598, 115.916036314478 28.6231542087745, 115.912181587649 28.6231542087745))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.842039042965 28.6314426646115, 115.840992080122 28.631252307731, 115.842324578286 28.6305860586493, 115.843181184248 28.6305860586493, 115.84403779021 28.6304908802091, 115.84394261177 28.6317281999322, 115.842039042965 28.6314426646115))").build()); list.add(LotInfo.builder().dkfw("POLYGON((115.807011889796 28.623935465138, 115.805869748513 28.6224126100944, 115.810247956764 28.6220318963334, 115.809581707682 28.623935465138, 115.807011889796 28.623935465138))").build()); getRoutePointOrder(list); } } src/main/java/com/dji/sample/patches/xml/controller/XMLController.java
New file @@ -0,0 +1,105 @@ package com.dji.sample.patches.xml.controller; import com.dji.sample.patches.model.entity.LotInfo; import com.dji.sample.patches.utils.GeoToolsUtil; import com.dji.sample.patches.xml.mode.*; import freemarker.template.Configuration; import freemarker.template.Template; import lombok.extern.slf4j.Slf4j; import org.locationtech.jts.geom.Coordinate; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; /** * @Classname XMLController * @Description * @Date 2022/6/19 19:10 * @Author: fanqiechaodan */ @RestController @RequestMapping(value = "/xml") @Slf4j public class XMLController { public static void main(String[] args) { //测试 List<LotInfo> list = new ArrayList<>(); list.add(LotInfo.builder().dkbh("dkbh01").dkfw("POLYGON((115.866465564947 28.6344502965542, 115.86425430209 28.6357383285408, 115.864551734716 28.633120921433, 115.866977149064 28.6338435339976, 115.866465564947 28.6344502965542))").build()); list.add(LotInfo.builder().dkbh("dkbh02").dkfw("POLYGON((115.864006690605 28.6202713913694, 115.86002109342 28.6162025130492, 115.866374254306 28.6142037658042, 115.865912044006 28.6172001020759, 115.864006690605 28.6202713913694))").build()); list.add(LotInfo.builder().dkbh("dkbh03").dkfw("POLYGON((115.839366933455 28.6161999317332, 115.841288489469 28.6160843601496, 115.840931570318 28.6181544912247, 115.838147600941 28.618654178036, 115.839366933455 28.6161999317332))").build()); // list.add(LotInfo.builder().dkbh("dkbh04").dkfw("POLYGON((115.857499052697 28.6784702230642, 115.859109158101 28.6762273976226, 115.863677723232 28.6766081113836, 115.862154868188 28.6790827508297, 115.857499052697 28.6784702230642))").build()); // list.add(LotInfo.builder().dkbh("dkbh05").dkfw("POLYGON((115.834974056705 28.6659171428962, 115.833760531592 28.6634960413229, 115.832422084777 28.6624550271329, 115.829745191145 28.6631986086972, 115.831232354274 28.6608191476914, 115.833314382654 28.6603729987527, 115.835545127347 28.6618601618814, 115.837032290475 28.6639421902615, 115.834974056705 28.6659171428962))").build()); // list.add(LotInfo.builder().dkbh("dkbh06").dkfw("POLYGON((115.885622116006 28.5766308429787, 115.883936664461 28.5771582901683, 115.883365593819 28.5752547213636, 115.883555950699 28.5740174016407, 115.88365112914 28.5724945465969, 115.885364341064 28.5721138328361, 115.886696839227 28.5725897250371, 115.887458266749 28.5736366878797, 115.886792017668 28.5753498998039, 115.885622116006 28.5766308429787))").build()); // list.add(LotInfo.builder().dkbh("dkbh07").dkfw("POLYGON((115.857644341395 28.5750890964568, 115.857572957565 28.5729475815515, 115.858429563527 28.5728761977213, 115.859072017998 28.5738041875136, 115.859072017998 28.5748035611361, 115.857644341395 28.5750890964568))").build()); // list.add(LotInfo.builder().dkbh("dkbh08").dkfw("POLYGON((115.912181587649 28.6231542087745, 115.912181587649 28.6215123806805, 115.915893546818 28.6212268453598, 115.916036314478 28.6231542087745, 115.912181587649 28.6231542087745))").build()); // list.add(LotInfo.builder().dkbh("dkbh09").dkfw("POLYGON((115.842039042965 28.6314426646115, 115.840992080122 28.631252307731, 115.842324578286 28.6305860586493, 115.843181184248 28.6305860586493, 115.84403779021 28.6304908802091, 115.84394261177 28.6317281999322, 115.842039042965 28.6314426646115))").build()); // list.add(LotInfo.builder().dkbh("dkbh10").dkfw("POLYGON((115.807011889796 28.623935465138, 115.805869748513 28.6224126100944, 115.810247956764 28.6220318963334, 115.809581707682 28.623935465138, 115.807011889796 28.623935465138))").build()); Coordinate[] coordinates = GeoToolsUtil.getRoutePointOrder(list); XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates,list); xml2XmlDoc(xmlModel, "src\\main\\resources\\template\\template.xml", "src\\main\\resources\\template\\newtemplate.xml"); xml2XmlDoc(xmlModel, "src\\main\\resources\\template\\waylines.xml", "src\\main\\resources\\template\\newwaylines.xml"); } /** * 将xml模板转换为newxml * * @param model 需要填充到模板的数据 * @param templetFilePath 模板文件路径 * @param targetFilePath 目标文件保存路径 */ public static void xml2XmlDoc(XMLTemplateModel model, String templetFilePath, String targetFilePath) { Writer out = null; try { // 将模板文件路径拆分为文件夹路径和文件名称 String tempLetDir = templetFilePath.substring(0, templetFilePath.lastIndexOf("\\")); // 注意:templetFilePath.lastIndexOf("/")中,有的文件分隔符为:\ 要注意文件路径的分隔符 String templetName = templetFilePath.substring(templetFilePath.lastIndexOf("\\") + 1); // 将目标文件保存路径拆分为文件夹路径和文件名称 String targetDir = targetFilePath.substring(0, targetFilePath.lastIndexOf("\\")); String targetName = targetFilePath.substring(targetFilePath.lastIndexOf("\\") + 1); Configuration configuration = new Configuration(); configuration.setDefaultEncoding(String.valueOf(StandardCharsets.UTF_8)); // 如果目标文件目录不存在创建 File file = new File(targetDir); if (!file.exists()) { file.mkdirs(); } //加载模板数据(从文件路径中获取文件) configuration.setDirectoryForTemplateLoading(new File(tempLetDir)); //获取模板实例 Template template = configuration.getTemplate(templetName); File outFile = new File(targetDir + File.separator + targetName); //模板和数据模型合并生成文件 out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), StandardCharsets.UTF_8)); //生成文件 template.process(model, out); out.flush(); out.close(); } catch (Exception e) { log.error("write xml failed:", e); } finally { if (out != null) { try { out.close(); } catch (IOException e) { log.error("close out failed:", e); } } } } } src/main/java/com/dji/sample/patches/xml/mode/CameraActionEnum.java
New file @@ -0,0 +1,40 @@ package com.dji.sample.patches.xml.mode; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 15:18 */ public enum CameraActionEnum { TAKE_PHOTO("takePhoto"),//单拍 START_RECORD("startRecord"),//开始录像 STOP_RECORD("stopRecord"),//结束录像 FOCUS("focus"),//对焦 ZOOM("zoom"),//变焦 CUSTOM_DIR_NAME("customDirName"),//创建新文件夹 GIMBAL_ROTATE("gimbalRotate"),//旋转云台 ROTATE_YAW("rotateYaw"),//飞行器偏航 HOVER("hover"),//悬停等待 GIMBAL_EVENLY_ROTATE("gimbalEvenlyRotate"),//航段间均匀转动云台pitch角 ACCURATE_SHOOT("accurateShoot"),//精准复拍动作(已暂停维护,建议使用ORIENTED_SHOOT) ORIENTED_SHOOT("orientedShoot"),//精准复拍动作 PANO_SHOT("panoShot");//全景拍照动作(仅支持M30/M30T) private final String description; CameraActionEnum(String description) { this.description = description; } public String getDescription() { return description; } @Override public String toString() { return this.name(); } } src/main/java/com/dji/sample/patches/xml/mode/Folder.java
New file @@ -0,0 +1,38 @@ package com.dji.sample.patches.xml.mode; import com.dji.sample.patches.xml.mode.share.GlobalWaypointHeadingParam; import com.dji.sample.patches.xml.mode.share.PayloadParam; import lombok.Data; import java.util.ArrayList; import java.util.List; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 11:38 */ @Data public class Folder { private String templateType; private String templateId; private WaylineCoordinateSysParam waylineCoordinateSysParam; private Double autoFlightSpeed; private Double globalHeight; private Integer caliFlightEnable; private String gimbalPitchMode; private GlobalWaypointHeadingParam globalWaypointHeadingParam; private String globalWaypointTurnMode; private Integer globalUseStraightLine; private List<Placemark> placemarkList = new ArrayList<>(); private PayloadParam payloadParam; } src/main/java/com/dji/sample/patches/xml/mode/MissionConfig.java
New file @@ -0,0 +1,58 @@ package com.dji.sample.patches.xml.mode; import com.dji.sample.patches.xml.mode.share.DroneInfo; import com.dji.sample.patches.xml.mode.share.PayloadInfo; import lombok.Builder; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: 设置任务配置 * @USER: aix * @DATE: 2024/3/27 11:28 */ @Data @Builder public class MissionConfig { /** * 飞向首航点模式 */ private String flyToWaylineMode = "safely"; /** * 航线结束动作 */ private String finishAction = "goHome"; /** * 失控是否继续执行航线 */ private String exitOnRCLost = "goContinue"; /** * 失控动作类型 */ private String executeRCLostAction = "goBack"; /** * 安全起飞高度 */ private Double takeOffSecurityHeight = 20D; /** * 参考起飞点 */ private String takeOffRefPoint; /** * 参考起飞点海拔高度 */ private String takeOffRefPointAGLHeight = "0"; /** * 全局航线过渡速度 */ private Double globalTransitionalSpeed = 10D; /** * 全局返航高度 */ private Double globalRTHHeight; private DroneInfo droneInfo; private PayloadInfo payloadInfo; } src/main/java/com/dji/sample/patches/xml/mode/Placemark.java
New file @@ -0,0 +1,35 @@ package com.dji.sample.patches.xml.mode; import com.dji.sample.patches.xml.mode.share.ActionGroup; import com.dji.sample.patches.xml.mode.share.ActionMode; import com.dji.sample.patches.xml.mode.share.WaypointTurnParam; import lombok.Data; import java.util.ArrayList; import java.util.List; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 13:36 */ @Data public class Placemark { private String coordinates; private String index; private Double ellipsoidHeight; private Double height; private String waypointSpeed; private WaypointHeadingParam waypointHeadingParam; private WaypointTurnParam waypointTurnParam; private Integer useGlobalHeight; private Integer useGlobalSpeed; private Integer useGlobalHeadingParam; private Integer useGlobalTurnParam; private Integer useStraightLine; private Double gimbalPitchAngle; private ActionGroup actionGroup; } src/main/java/com/dji/sample/patches/xml/mode/WaylineCoordinateSysParam.java
New file @@ -0,0 +1,17 @@ package com.dji.sample.patches.xml.mode; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 11:57 */ @Data public class WaylineCoordinateSysParam { private String coordinateMode = "WGS84"; private String heightMode = "relativeToStartPoint"; } src/main/java/com/dji/sample/patches/xml/mode/WaypointHeadingParam.java
New file @@ -0,0 +1,20 @@ package com.dji.sample.patches.xml.mode; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 13:38 */ @Data public class WaypointHeadingParam { private String waypointHeadingMode; private String waypointHeadingAngle; private String waypointPoiPoint; private String waypointHeadingPathMode; private String waypointHeadingPoiIndex; } src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java
New file @@ -0,0 +1,98 @@ package com.dji.sample.patches.xml.mode; import com.dji.sample.patches.model.entity.LotInfo; import com.dji.sample.patches.xml.mode.share.ActionGroup; import com.dji.sample.patches.xml.mode.share.ActionMode; import com.dji.sample.patches.xml.mode.share.ActionTrigger; import com.dji.sample.patches.xml.mode.share.action.utils.*; import lombok.Builder; import lombok.Data; import org.locationtech.jts.geom.Coordinate; import java.util.ArrayList; import java.util.List; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 11:11 */ @Data @Builder public class XMLTemplateModel { private String author = "aix"; private String createTime; private String updateTime; private MissionConfig missionConfig; private Folder folder; public static XMLTemplateModel init(Coordinate[] coordinates,List<LotInfo> lotInfos) { Folder folder = FolderUtils.setFloder(); List<Placemark> placemarkList = new ArrayList<>(); int i = 0; for (Coordinate c:coordinates) { if (i != 0) {//去除第一个航点 Placemark placemark = PlacemarkUtils.setPlacemark(c.x + "," + c.y); // 增加事件组 ActionGroup actionGroup = new ActionGroup(); actionGroup.setActionGroupId(i);//动作组id从0开始单调连续递增。 actionGroup.setActionGroupStartIndex(i);//动作组开始生效的航点 actionGroup.setActionGroupEndIndex(i);//动作组结束生效的航点 actionGroup.setActionGroupMode("sequence"); ActionTrigger at = new ActionTrigger(); at.setActionTriggerType("reachPoint"); actionGroup.setActionTrigger(at); // 开始增加事件 List<ActionMode> list = new ArrayList<>(); ActionMode actionMode = new ActionMode(); actionMode.setActionId(0); actionMode.setActionActuatorFunc(CameraActionEnum.TAKE_PHOTO.getDescription());//拍照事件 // 计算获取图斑编号 int quotient = i / 4; if (i % 4 != 0) { // 检查是否有余数 quotient++; // 如果有余数,商加1 } if (quotient == 0) quotient = 1; actionMode.setActionActuatorFuncParam(ActionUtils.setTakePhoto(lotInfos.get(quotient-1).getDkbh())); list.add(actionMode); ActionMode actionMode2 = new ActionMode(); actionMode2.setActionId(1); actionMode2.setActionActuatorFunc(CameraActionEnum.GIMBAL_ROTATE.getDescription());//拍照事件 actionMode2.setActionActuatorFuncParam(ActionUtils.setGimbalRotate()); list.add(actionMode2); actionGroup.setActions(list); placemark.setActionGroup(actionGroup); placemarkList.add(placemark); } i = i+1; } folder.setPlacemarkList(placemarkList); XMLTemplateModel xtm = XMLTemplateModel.builder() .author("Aix") .createTime(String.valueOf(System.currentTimeMillis())) .updateTime(String.valueOf(System.currentTimeMillis())) .missionConfig(MissionConfigUtils.setMissionConfig()) .folder(folder) .build(); return xtm; } } src/main/java/com/dji/sample/patches/xml/mode/share/ActionGroup.java
New file @@ -0,0 +1,45 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Data; import java.util.List; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 13:45 */ @Data public class ActionGroup { /** * 动作组id * * 注:在一个kmz文件内该ID唯一。建议从0开始单调连续递增。 */ private Integer actionGroupId; /** * 动作组开始生效的航点 */ private Integer actionGroupStartIndex; /** * 动作组结束生效的航点 * * 注:当“动作组结束生效的航点”与“动作组开始生效的航点”一致,则代表该动作组仅在该航点处生效。 * * 注:该元素必须大于等于“actionGroupStartIndex”。 */ private Integer actionGroupEndIndex; /** * 动作执行模式 * sequence:串行执行。即动作组内的动作依次按顺序执行。 */ private String actionGroupMode = "sequence"; /** * 动作组触发器 */ private ActionTrigger actionTrigger; /** * 动作列表 */ private List<ActionMode> actions; } src/main/java/com/dji/sample/patches/xml/mode/share/ActionMode.java
New file @@ -0,0 +1,43 @@ package com.dji.sample.patches.xml.mode.share; import com.dji.sample.patches.xml.mode.share.action.param.ActionActuatorFuncParam; import com.dji.sample.patches.xml.mode.CameraActionEnum; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 13:46 */ @Data public class ActionMode { /** * 动作id * * 注:在一个动作组内该ID唯一。建议从0开始单调连续递增。 */ private Integer actionId; /** * 动作类型 * takePhoto:单拍 * startRecord:开始录像 * stopRecord:结束录像 * focus:对焦 * zoom:变焦 * customDirName:创建新文件夹 * gimbalRotate:旋转云台 * rotateYaw:飞行器偏航 * hover:悬停等待 * gimbalEvenlyRotate:航段间均匀转动云台pitch角 * accurateShoot:精准复拍动作(已暂停维护,建议使用orientedShoot) * orientedShoot:精准复拍动作 * panoShot:全景拍照动作(仅支持M30/M30T) */ private String actionActuatorFunc = CameraActionEnum.TAKE_PHOTO.getDescription(); /** * 动作参数 */ private ActionActuatorFuncParam actionActuatorFuncParam; } src/main/java/com/dji/sample/patches/xml/mode/share/ActionTrigger.java
New file @@ -0,0 +1,30 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:09 */ @Data public class ActionTrigger { /** * 动作触发器类型 * reachPoint:到达航点时执行 * betweenAdjacentPoints:航段触发,均匀转云台 * multipleTiming:等时触发 * multipleDistance:等距触发 * * 注:“betweenAdjacentPoints”需配合动作"gimbalEvenlyRotate"使用 */ private String actionTriggerType; /** * 动作触发器参数 * > 0 * * 注:当“actionTriggerType”为“multipleTiming”时,该元素表示间隔时间,单位是s。当“actionTriggerType”为“multipleDistance”时,该元素表示间隔距离,单位是m。 */ private String actionTriggerParam; } src/main/java/com/dji/sample/patches/xml/mode/share/AutoRerouteInfo.java
New file @@ -0,0 +1,18 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 10:14 */ @Data public class AutoRerouteInfo { private Integer missionAutoRerouteMode; private Integer transitionalAutoRerouteMode; } src/main/java/com/dji/sample/patches/xml/mode/share/DroneInfo.java
New file @@ -0,0 +1,18 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Builder; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: 无人机参数 * @USER: aix * @DATE: 2024/3/27 11:29 */ @Data public class DroneInfo { private String droneEnumValue = "67"; private String droneSubEnumValue = "1"; } src/main/java/com/dji/sample/patches/xml/mode/share/GlobalWaypointHeadingParam.java
New file @@ -0,0 +1,43 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 11:59 */ @Data public class GlobalWaypointHeadingParam { /** * 飞行器偏航角模式 必需元素 * followWayline:沿航线方向。飞行器机头沿着航线方向飞至下一航点 * manually:手动控制。飞行器在飞至下一航点的过程中,用户可以手动控制飞行器机头朝向 * fixed:锁定当前偏航角。飞行器机头保持执行完航点动作后的飞行器偏航角飞至下一航点 * smoothTransition:自定义。通过“wpml:waypointHeadingAngle”给定某航点的目标偏航角,并在航段飞行过程中均匀过渡至下一航点的目标偏航角。 * towardPOI:朝向兴趣点 */ private String waypointHeadingMode; /** * 飞行器偏航角度 * 必需元素 * * 注:当且仅当“wpml:waypointHeadingMode”为“smoothTransition”时必需 */ private Integer waypointHeadingAngle; /** * 兴趣点 * 仅当wpml:waypointHeadingMode为towardPOI时必需 */ private String waypointPoiPoint; /** * 飞行器偏航角转动方向 必需元素 * clockwise:顺时针旋转飞行器偏航角 * counterClockwise:逆时针旋转飞行器偏航角 * followBadArc:沿最短路径旋转飞行器偏航角 */ private String waypointHeadingPathMode; private String waypointHeadingPoiIndex; } src/main/java/com/dji/sample/patches/xml/mode/share/PayloadInfo.java
New file @@ -0,0 +1,19 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Builder; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: 云台参数 * @USER: aix * @DATE: 2024/3/27 11:30 */ @Data public class PayloadInfo { private String payloadEnumValue = "53"; private String payloadSubEnumValue = "0"; private String payloadPositionIndex = "0"; } src/main/java/com/dji/sample/patches/xml/mode/share/PayloadParam.java
New file @@ -0,0 +1,76 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Builder; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 17:07 */ @Data @Builder public class PayloadParam { /** * 负载挂载位置 * 0:飞行器1号挂载位置。M300 RTK,M350 RTK机型,对应机身左前方。其它机型,对应主云台。 * 1:飞行器2号挂载位置。M300 RTK,M350 RTK机型,对应机身右前方。 * 2:飞行器3号挂载位置。M300 RTK,M350 RTK机型,对应机身上方。 */ private Integer payloadPositionIndex; /** * 负载对焦模式 * firstPoint:首个航点自动对焦 * custom:标定对焦值对焦 */ private String focusMode; /** * 负载测光模式 * average:全局测光 * spot:点测光 */ private String meteringMode; /** * 是否开启畸变矫正 * 0:不开启 * 1:开启 */ private Integer dewarpingEnable = 0; /** * 激光雷达回波模式 * singleReturnStrongest:单回波 * dualReturn:双回波 * tripleReturn:三回波 */ private String returnMode; /** * 负载采样率 * 60000,80000,120000,160000,180000,240000 */ private String samplingRate; /** * 负载扫描模式 * repetitive:重复扫描 * nonRepetitive:非重复扫描 */ private String scanningMode; /** * 真彩上色 * 0: 不上色 * 1: 真彩上色 */ private Integer modelColoringEnable = 0; /** * 图片格式列表 * wide:存储广角镜头照片 * zoom:存储变焦镜头照片 * ir:存储红外镜头照片 * narrow_band: 存储窄带镜头拍摄照片 * visable:可见光照片 * 注:存储多个镜头照片,格式如“<wpml:imageFormat>wide,ir</wpml:imageFormat> */ private String imageFormat; } src/main/java/com/dji/sample/patches/xml/mode/share/WaypointTurnParam.java
New file @@ -0,0 +1,35 @@ package com.dji.sample.patches.xml.mode.share; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 13:38 */ @Data public class WaypointTurnParam { /** * 必须元素 * 航点类型(航点转弯模式) * coordinateTurn:协调转弯,不过点,提前转弯 * toPointAndStopWithDiscontinuityCurvature:直线飞行,飞行器到点停 * toPointAndStopWithContinuityCurvature:曲线飞行,飞行器到点停 * toPointAndPassWithContinuityCurvature:曲线飞行,飞行器过点不停 * 注:DJI Pilot 2/司空 2 上“平滑过点,提前转弯”模式设置方法为: * 1)将wpml:waypointTurnMode设置为toPointAndPassWithContinuityCurvature * 2)将wpml:useStraightLine设置为1 */ private String waypointTurnMode; /** * 航点转弯截距 * (0, 航段最大长度] * * 注:两航点间航段长度必需大于两航点转弯截距之和。此元素定义了飞行器在距离该航点若干米前,提前多少距离转弯 * 必须元素 * * 注:当且仅当以下两种情况下必需“wpml:waypointTurnMode”为“coordinateTurn”“wpml:waypointTurnMode”为“toPointAndPassWithContinuityCurvature”,且“wpml:useStraightLine”为“1” */ private String waypointTurnDampingDist; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/ActionActuatorFuncParam.java
New file @@ -0,0 +1,55 @@ package com.dji.sample.patches.xml.mode.share.action.param; import com.dji.sample.patches.xml.mode.CameraActionEnum; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/27 13:47 */ @Data public class ActionActuatorFuncParam { /** * 负载挂载位置 * 0:飞行器1号挂载位置。M300 RTK,M350 RTK机型,对应机身左前方。其它机型,对应主云台。 * 1:飞行器2号挂载位置。M300 RTK,M350 RTK机型,对应机身右前方。 * 2:飞行器3号挂载位置。M300 RTK,M350 RTK机型,对应机身上方。 */ private Integer payloadPositionIndex; public static ActionActuatorFuncParam createActionActuatorFuncParam(CameraActionEnum type) { switch (type) { case TAKE_PHOTO: return new TakePhotoParam(); case START_RECORD: return new StartRecordParam(); case STOP_RECORD: return new StopRecordParam(); case FOCUS: return new FocusParam(); case ZOOM: return new ZoomParam(); case CUSTOM_DIR_NAME: return new CustomDirNameParam(); case GIMBAL_ROTATE: return new GimbalRotateParam(); case GIMBAL_EVENLY_ROTATE: return new GimbalEvenlyRotateParam(); case ROTATE_YAW: return new RotateYawParam(); case HOVER: return new HoverParam(); case ORIENTED_SHOOT: return new OrientedShootParam(); case PANO_SHOT: return new PanoShotParam(); default: throw new IllegalStateException("Unexpected value: " + type); } } } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/CustomDirNameParam.java
New file @@ -0,0 +1,19 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:45 */ @Data public class CustomDirNameParam extends ActionActuatorFuncParam { /** * 新文件夹的名称 */ private String directoryName; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/FocusParam.java
New file @@ -0,0 +1,44 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:43 */ @Data public class FocusParam extends ActionActuatorFuncParam { /** * 是否点对焦 * 0:区域对焦 1:点对焦 */ private Integer isPointFocus; /** * 对焦点位置 * * 注:对焦点或对焦区域左上角在画面的X轴(宽)坐标。0为最左侧,1为最右侧。 */ private Double focusX; /** * 对焦点位置 * 注:对焦点或对焦区域左上角在画面的Y轴(高)坐标。0为最上方,1为最下方。 */ private Double focusY; /** * 对焦区域宽度比 * 注:对焦区域大小占画面整体的比例,此为宽度比 */ private Double focusRegionWidth; /** * 对焦区域高度比 * 注:对焦区域大小占画面整体的比例,此为高度比 */ private Double focusRegionHeight; /** * 是否无穷远对焦 * 0: 非无穷远对焦 1: 无穷远对焦 */ private Integer isInfiniteFocus; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/GimbalEvenlyRotateParam.java
New file @@ -0,0 +1,20 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:51 */ @Data public class GimbalEvenlyRotateParam extends ActionActuatorFuncParam { /** * 云台Pitch转动角度 * 注:不同云台可转动范围不同 */ private Double gimbalPitchRotateAngle; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/GimbalRotateParam.java
New file @@ -0,0 +1,68 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:46 */ @Data public class GimbalRotateParam extends ActionActuatorFuncParam { /** * 云台偏航角转动坐标系 * north:相对地理北 */ private String gimbalHeadingYawBase; /** * 云台转动模式 * absoluteAngle:绝对角度,相对于正北方的角度 */ private String gimbalRotateMode; /** * 是否使能云台Pitch转动 * 0:不使能 * 1:使能 */ private Integer gimbalPitchRotateEnable; /** * 云台Pitch转动角度 * 注:不同云台可转动范围不同 */ private Double gimbalPitchRotateAngle; /** * 是否使能云台Roll转动 * 0:不使能 * 1:使能 */ private Integer gimbalRollRotateEnable; /** * 云台Roll转动角度 * 注:不同云台可转动范围不同 */ private Double gimbalRollRotateAngle; /** * 是否使能云台Yaw转动 * 0:不使能 * 1:使能 */ private Integer gimbalYawRotateEnable; /** * 云台Yaw转动角度 * 注:不同云台可转动范围不同 */ private Double gimbalYawRotateAngle; /** * 是否使能云台转动时间 * 0:不使能 * 1:使能 */ private Integer gimbalRotateTimeEnable; /** * 云台完成转动用时 */ private Double gimbalRotateTime; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/HoverParam.java
New file @@ -0,0 +1,19 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:55 */ @Data public class HoverParam extends ActionActuatorFuncParam { /** * 飞行器悬停等待时间 s */ private Double hoverTime; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/OrientedShootParam.java
New file @@ -0,0 +1,152 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:57 */ @Data public class OrientedShootParam extends ActionActuatorFuncParam { /** * 云台Pitch转动角度 */ private Double gimbalPitchRotateAngle; /** * 云台Yaw转动角度 * 注:M3E/M3T,M3D/M3TD 机型 wpml:gimbalYawRotateAngle 与 wpml:aircraftHeading 需保持一致 */ private Double gimbalYawRotateAngle; /** * 目标选中框中心水平坐标 * 注:照片左上角为坐标原点,水平方向为X轴,竖直方向为Y轴 */ private Integer focusX; /** * 目标选中框中心竖直坐标 * 注:照片左上角为坐标原点,水平方向为X轴,竖直方向为Y轴 */ private Integer focusY; /** * 目标选中框宽 */ private Integer focusRegionWidth; /** * 目标选中框高 */ private Integer focusRegionHeight; /** * 变焦焦距 */ private Double focalLength; /** * 飞行器目标偏航角(相对于地理北) * *注:飞行器旋转至该目标偏航角。0°为正北方向,90°为正东方向,-90°为正西方向,-180°/180°为正南方向 * *注:M3E/M3T,M3D/M3TD 机型 wpml:gimbalYawRotateAngle 与 wpml:aircraftHeading 需保持一致 */ private Double aircraftHeading; /** * 是否框选精准复拍目标 * 1: 已框选目标物 * 0: 未框选目标物 * *注:该值设置为1,复拍时飞行器会自主寻找目标进行拍摄。该值设置为0,复拍时飞行器只会按照飞行器姿态和负载姿态进行动作重复,不会自主寻找目标 */ private Integer accurateFrameValid; /** * 拍摄照片存储类型 * zoom: 存储变焦镜头拍摄照片 * wide: 存储广角镜头拍摄照片 * ir: 存储红外镜头拍摄照片 * visable:可见光照片 * *注:存储多个镜头照片,格式如“<wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>”表示同时使用广角、红外镜头 */ private String payloadLensIndex; /** * 是否使用全局存储类型 * 0:不使用全局设置 * 1:使用全局设置 */ private Integer useGlobalPayloadLensIndex; /** * 目标框角度 * *注:目标框的旋转角度(以Y轴为基准,顺时针旋转) */ private Double targetAngle; /** * 动作唯一标识 * *注:拍照时,该值将被写入照片文件中,用于关联动作和照片文件 */ private String actionUUID; /** * 照片宽度 */ private Integer imageWidth; /** * 照片高度 */ private Integer imageHeight; /** * AF电机位置 */ private Integer AFPos; /** * 云台端口号 * 拍摄照片的相机安装位置 * *注:M30/M30T机型该值固定为0 */ private Integer gimbalPort; /** * 相机类型 * 52(机型:M30双光相机), * 53(机型:M30T三光相机) * 66(机型:Mavic 3E 相机) * 67(机型:Mavic 3T 相机) * 80(机型:Matrice 3D 相机) * 81(机型:Matrice 3TD 相机) */ private Integer orientedCameraType; /** * 照片文件路径 * */ private String orientedFilePath; /** * 照片文件MD5 */ private String orientedFileMD5; /** * 照片文件大小 */ private Integer orientedFileSize; /** * 照片文件后缀 */ private String orientedFileSuffix; /** * 光圈大小 * *注:该值为真实光圈x100 */ private Integer orientedCameraApertue; /** * 环境亮度 */ private Integer orientedCameraLuminance; /** * 快门时间 */ private Double orientedCameraShutterTime; /** * ISO */ private Integer orientedCameraISO; /** * 拍照模式 * normalPhoto: 普通拍照 * lowLightSmartShooting:低光智能拍照 */ private String orientedPhotoMode; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/PanoShotParam.java
New file @@ -0,0 +1,36 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 13:49 */ @Data public class PanoShotParam extends ActionActuatorFuncParam { /** * 拍摄照片存储类型 * zoom: 存储变焦镜头拍摄照片 * wide: 存储广角镜头拍摄照片 * ir: 存储红外镜头拍摄照片 * narrow_band: 存储窄带镜头拍摄照片 * visable:可见光照片 * 注:存储多个镜头照片,格式如“<wpml:payloadLensIndex>wide,ir,narrow_band</wpml:payloadLensIndex>”表示同时使用广角、红外和窄带镜头 */ private String payloadLensIndex; /** * 是否使用全局存储类型 * 0:不使用全局设置 * 1:使用全局设置 */ private Integer useGlobalPayloadLensIndex; /** * 全景拍照模式 * panoShot_360:全景模式 */ private String panoShotSubMode; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/RotateYawParam.java
New file @@ -0,0 +1,27 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:54 */ @Data public class RotateYawParam extends ActionActuatorFuncParam { /** * 飞行器目标偏航角(相对于地理北) * 注:飞行器旋转至该目标偏航角。0°为正北方向,90°为正东方向,-90°为正西方向,-180°/180°为正南方向。 */ private Double aircraftHeading; /** * 飞行器偏航角转动模式 * clockwise:顺时针旋转 * counterClockwise:逆时针旋转 */ private String aircraftPathMode; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/StartRecordParam.java
New file @@ -0,0 +1,34 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:41 */ @Data public class StartRecordParam extends ActionActuatorFuncParam { /** * 拍摄照片文件后缀 * 为生成媒体文件命名时将额外附带该后缀 */ private String fileSuffix; /** * 拍摄照片存储类型 * zoom: 存储变焦镜头拍摄照片 * wide: 存储广角镜头拍摄照片 * ir: 存储红外镜头拍摄照片 * narrow_band: 存储窄带镜头拍摄照片 * visable:可见光照片 * 注:存储多个镜头照片,格式如“<wpml:payloadLensIndex>wide,ir,narrow_band</wpml:payloadLensIndex>”表示同时使用广角、红外和窄带镜头 */ private String payloadLensIndex; /** * 是否使用全局存储类型 * 0:不使用全局设置 * 1:使用全局设置 */ private Integer useGlobalPayloadLensIndex; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/StopRecordParam.java
New file @@ -0,0 +1,25 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:42 */ @Data public class StopRecordParam extends ActionActuatorFuncParam { /** * 拍摄照片存储类型 * zoom: 存储变焦镜头拍摄照片 * wide: 存储广角镜头拍摄照片 * ir: 存储红外镜头拍摄照片 * narrow_band: 存储窄带镜头拍摄照片 * visable:可见光照片 * 注:存储多个镜头照片,格式如“<wpml:payloadLensIndex>wide,ir,narrow_band</wpml:payloadLensIndex>”表示同时使用广角、红外和窄带镜头 */ private String payloadLensIndex; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/TakePhotoParam.java
New file @@ -0,0 +1,36 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:39 */ @Data public class TakePhotoParam extends ActionActuatorFuncParam { /** * 拍摄照片文件后缀 * 为生成媒体文件命名时将额外附带该后缀 */ private String fileSuffix; /** * 拍摄照片存储类型 * zoom: 存储变焦镜头拍摄照片 * wide: 存储广角镜头拍摄照片 * ir: 存储红外镜头拍摄照片 * narrow_band: 存储窄带镜头拍摄照片 * visable:可见光照片 * 注:存储多个镜头照片,格式如“<wpml:payloadLensIndex>wide,ir,narrow_band</wpml:payloadLensIndex>”表示同时使用广角、红外和窄带镜头 */ private String payloadLensIndex; /** * 是否使用全局存储类型 * 0:不使用全局设置 * 1:使用全局设置 */ private Integer useGlobalPayloadLensIndex; } src/main/java/com/dji/sample/patches/xml/mode/share/action/param/ZoomParam.java
New file @@ -0,0 +1,19 @@ package com.dji.sample.patches.xml.mode.share.action.param; import lombok.Data; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/28 11:44 */ @Data public class ZoomParam extends ActionActuatorFuncParam { /** * 变焦焦距 */ private Double focalLength; } src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/ActionUtils.java
New file @@ -0,0 +1,71 @@ package com.dji.sample.patches.xml.mode.share.action.utils; import com.dji.sample.patches.xml.mode.share.action.param.GimbalRotateParam; import com.dji.sample.patches.xml.mode.share.action.param.StartRecordParam; import com.dji.sample.patches.xml.mode.share.action.param.StopRecordParam; import com.dji.sample.patches.xml.mode.share.action.param.TakePhotoParam; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/29 9:28 */ public class ActionUtils { /** * 设置单拍事件 * @return */ public static TakePhotoParam setTakePhoto(String dkbh) { TakePhotoParam takePhotoParam = new TakePhotoParam(); takePhotoParam.setFileSuffix("航点" + dkbh); takePhotoParam.setPayloadLensIndex("wide,ir"); takePhotoParam.setUseGlobalPayloadLensIndex(1); takePhotoParam.setPayloadPositionIndex(0); return takePhotoParam; } /** * 设置开始录像事件 * @return */ public static StartRecordParam setStartRecord() { StartRecordParam startRecordParam = new StartRecordParam(); startRecordParam.setFileSuffix("航点"); startRecordParam.setPayloadLensIndex("wide,ir"); startRecordParam.setUseGlobalPayloadLensIndex(1); startRecordParam.setPayloadPositionIndex(0); return startRecordParam; } /** * 设置结束录像事件 * @return */ public static StopRecordParam setStopRecord() { StopRecordParam stopRecordParam = new StopRecordParam(); stopRecordParam.setPayloadLensIndex("wide,ir"); return stopRecordParam; } /** * 设置旋转云台 * @return */ public static GimbalRotateParam setGimbalRotate() { GimbalRotateParam gimbalRotateParam = new GimbalRotateParam(); gimbalRotateParam.setGimbalHeadingYawBase("north"); gimbalRotateParam.setGimbalRotateMode("absoluteAngle"); gimbalRotateParam.setGimbalPitchRotateEnable(1); gimbalRotateParam.setGimbalPitchRotateAngle(-83D); gimbalRotateParam.setGimbalRollRotateEnable(0); gimbalRotateParam.setGimbalRollRotateAngle(0D); gimbalRotateParam.setGimbalYawRotateEnable(0); gimbalRotateParam.setGimbalYawRotateAngle(0D); gimbalRotateParam.setGimbalRotateTimeEnable(0); gimbalRotateParam.setGimbalRotateTime(0D); return gimbalRotateParam; } } src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/FolderUtils.java
New file @@ -0,0 +1,47 @@ package com.dji.sample.patches.xml.mode.share.action.utils; import com.dji.sample.patches.xml.mode.Folder; import com.dji.sample.patches.xml.mode.WaylineCoordinateSysParam; import com.dji.sample.patches.xml.mode.share.GlobalWaypointHeadingParam; /** * @PROJECT_NAME: drone * @DESCRIPTION: 设置模板信息 * @USER: aix * @DATE: 2024/3/29 10:25 */ public class FolderUtils { public static Folder setFloder() { Folder folder = new Folder(); folder.setPayloadParam(PayloadParamUtils.setPayloadParam()); folder.setWaylineCoordinateSysParam(new WaylineCoordinateSysParam()); folder.setTemplateType("waypoint");//航点模式 folder.setTemplateId("0"); WaylineCoordinateSysParam wcs = new WaylineCoordinateSysParam(); wcs.setCoordinateMode("WGS84"); wcs.setHeightMode("relativeToStartPoint"); folder.setWaylineCoordinateSysParam(wcs); folder.setAutoFlightSpeed(10D);//全局航线飞行速度 folder.setGlobalHeight(100D); //全局航线高度(相对起飞点高度) folder.setCaliFlightEnable(0);// 是否开启标定飞行 folder.setGimbalPitchMode("manual");//云台俯仰角控制模式manual:手动控制。飞行器从一个航点飞向下一个航点的过程中,支持用户手动控制云台的俯仰角度。若无用户控制,则保持飞离航点时的云台俯仰角度。 usePointSetting:依照每个航点设置。飞行器从一个航点飞向下一个航点的过程中,云台俯仰角均匀过渡至下一个航点的俯仰角。 // GlobalWaypointHeadingParam gwhp = new GlobalWaypointHeadingParam(); gwhp.setWaypointHeadingMode("followWayline"); gwhp.setWaypointHeadingAngle(0); gwhp.setWaypointPoiPoint("0.000000,0.000000,0.000000"); gwhp.setWaypointHeadingPathMode("followBadArc"); gwhp.setWaypointHeadingPoiIndex("0"); folder.setGlobalWaypointHeadingParam(gwhp); folder.setGlobalWaypointTurnMode("toPointAndStopWithDiscontinuityCurvature"); folder.setGlobalUseStraightLine(1); return folder; } } src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/MissionConfigUtils.java
New file @@ -0,0 +1,31 @@ package com.dji.sample.patches.xml.mode.share.action.utils; import com.dji.sample.patches.xml.mode.MissionConfig; import com.dji.sample.patches.xml.mode.share.DroneInfo; import com.dji.sample.patches.xml.mode.share.PayloadInfo; /** * @PROJECT_NAME: drone * @DESCRIPTION: 设置任务信息 * @USER: aix * @DATE: 2024/3/29 11:10 */ public class MissionConfigUtils { public static MissionConfig setMissionConfig() { MissionConfig mc = MissionConfig.builder() .flyToWaylineMode("safely")//安全模式 .finishAction("goHome") .exitOnRCLost("executeLostAction")//退出航线,执行失控动作 .executeRCLostAction("goBack") .takeOffSecurityHeight(20D)//安全起飞高度 .globalTransitionalSpeed(10D) .globalRTHHeight(100D) .droneInfo(new DroneInfo()) .payloadInfo(new PayloadInfo()) .build(); return mc; } } src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/PayloadParamUtils.java
New file @@ -0,0 +1,21 @@ package com.dji.sample.patches.xml.mode.share.action.utils; import com.dji.sample.patches.xml.mode.share.PayloadParam; /** * @PROJECT_NAME: drone * @DESCRIPTION: * @USER: aix * @DATE: 2024/3/29 11:44 */ public class PayloadParamUtils { public static PayloadParam setPayloadParam() { PayloadParam pp = PayloadParam.builder() .payloadPositionIndex(0) .imageFormat("wide,ir") .build(); return pp; } } src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/PlacemarkUtils.java
New file @@ -0,0 +1,28 @@ package com.dji.sample.patches.xml.mode.share.action.utils; import com.dji.sample.patches.xml.mode.Placemark; import com.dji.sample.patches.xml.mode.WaypointHeadingParam; /** * @PROJECT_NAME: drone * @DESCRIPTION: 航点设置 * @USER: aix * @DATE: 2024/3/29 9:47 */ public class PlacemarkUtils { public static Placemark setPlacemark(String xy) { Placemark placemark = new Placemark(); placemark.setCoordinates(xy); placemark.setEllipsoidHeight(100D); placemark.setHeight(100D); placemark.setUseGlobalHeight(1); placemark.setUseGlobalSpeed(1); placemark.setUseGlobalHeadingParam(1); placemark.setUseGlobalTurnParam(1); placemark.setGimbalPitchAngle(0D); return placemark; } } src/main/resources/template/newtemplate.xml
New file @@ -0,0 +1,868 @@ <?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.3"> <Document> <!-- 步骤1:实现文件创建信息 --> <wpml:author>Aix</wpml:author> <wpml:createTime>1711938126849</wpml:createTime> <wpml:updateTime>1711938126849</wpml:updateTime> <!-- 步骤2:设置任务配置 --> <wpml:missionConfig> <wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode> <wpml:finishAction>goHome</wpml:finishAction> <wpml:exitOnRCLost>executeLostAction</wpml:exitOnRCLost> <wpml:executeRCLostAction>goBack</wpml:executeRCLostAction> <wpml:takeOffSecurityHeight>20</wpml:takeOffSecurityHeight> <wpml:takeOffRefPoint></wpml:takeOffRefPoint> <wpml:takeOffRefPointAGLHeight></wpml:takeOffRefPointAGLHeight> <wpml:globalTransitionalSpeed>10</wpml:globalTransitionalSpeed> <wpml:globalRTHHeight>100</wpml:globalRTHHeight> <wpml:droneInfo> <!-- 用M30申报无人机型号 --> <wpml:droneEnumValue>67</wpml:droneEnumValue> <wpml:droneSubEnumValue>1</wpml:droneSubEnumValue> </wpml:droneInfo> <wpml:payloadInfo> <!-- 用M30声明有效载荷模型 --> <wpml:payloadEnumValue>53</wpml:payloadEnumValue> <wpml:payloadSubEnumValue>0</wpml:payloadSubEnumValue> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> </wpml:payloadInfo> </wpml:missionConfig> <!-- 步骤3:设置路径点模板文件夹 --> <Folder> <wpml:templateType>waypoint</wpml:templateType> <wpml:templateId>0</wpml:templateId> <wpml:waylineCoordinateSysParam> <wpml:coordinateMode>WGS84</wpml:coordinateMode> <wpml:heightMode>relativeToStartPoint</wpml:heightMode> </wpml:waylineCoordinateSysParam> <wpml:autoFlightSpeed>10</wpml:autoFlightSpeed> <wpml:globalHeight>100</wpml:globalHeight> <wpml:caliFlightEnable>0</wpml:caliFlightEnable> <wpml:gimbalPitchMode>manual</wpml:gimbalPitchMode> <wpml:globalWaypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:globalWaypointHeadingParam> <wpml:globalWaypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:globalWaypointTurnMode> <wpml:globalUseStraightLine>1</wpml:globalUseStraightLine> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86002109342,28.6202713913694 </coordinates> </Point> <wpml:index>0</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>1</wpml:actionGroupId> <wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86002109342,28.6142037658042 </coordinates> </Point> <wpml:index>1</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>2</wpml:actionGroupId> <wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866374254306,28.6142037658042 </coordinates> </Point> <wpml:index>2</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>3</wpml:actionGroupId> <wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866374254306,28.6202713913694 </coordinates> </Point> <wpml:index>3</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>4</wpml:actionGroupId> <wpml:actionGroupStartIndex>4</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>4</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86425430209,28.6357383285408 </coordinates> </Point> <wpml:index>4</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>5</wpml:actionGroupId> <wpml:actionGroupStartIndex>5</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>5</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86425430209,28.633120921433 </coordinates> </Point> <wpml:index>5</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>6</wpml:actionGroupId> <wpml:actionGroupStartIndex>6</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>6</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866977149064,28.633120921433 </coordinates> </Point> <wpml:index>6</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>7</wpml:actionGroupId> <wpml:actionGroupStartIndex>7</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>7</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866977149064,28.6357383285408 </coordinates> </Point> <wpml:index>7</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>8</wpml:actionGroupId> <wpml:actionGroupStartIndex>8</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>8</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.838147600941,28.618654178036 </coordinates> </Point> <wpml:index>8</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>9</wpml:actionGroupId> <wpml:actionGroupStartIndex>9</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>9</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.838147600941,28.6160843601496 </coordinates> </Point> <wpml:index>9</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>10</wpml:actionGroupId> <wpml:actionGroupStartIndex>10</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>10</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.841288489469,28.6160843601496 </coordinates> </Point> <wpml:index>10</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>11</wpml:actionGroupId> <wpml:actionGroupStartIndex>11</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>11</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.841288489469,28.618654178036 </coordinates> </Point> <wpml:index>11</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>12</wpml:actionGroupId> <wpml:actionGroupStartIndex>12</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>12</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <!-- 负载设置 --> <wpml:payloadParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:focusMode></wpml:focusMode> <wpml:meteringMode></wpml:meteringMode> <wpml:returnMode></wpml:returnMode> <wpml:samplingRate></wpml:samplingRate> <wpml:scanningMode></wpml:scanningMode> <wpml:imageFormat>wide,ir</wpml:imageFormat> </wpml:payloadParam> </Folder> </Document> </kml> src/main/resources/template/newwaylines.xml
New file @@ -0,0 +1,725 @@ <?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.3"> <Document> <wpml:missionConfig> <wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode> <wpml:finishAction>goHome</wpml:finishAction> <wpml:exitOnRCLost>executeLostAction</wpml:exitOnRCLost> <wpml:executeRCLostAction>goBack</wpml:executeRCLostAction> <wpml:takeOffSecurityHeight>20</wpml:takeOffSecurityHeight> <wpml:globalTransitionalSpeed>10</wpml:globalTransitionalSpeed> <wpml:globalRTHHeight>100</wpml:globalRTHHeight> <wpml:droneInfo> <wpml:droneEnumValue>67</wpml:droneEnumValue> <wpml:droneSubEnumValue>1</wpml:droneSubEnumValue> </wpml:droneInfo> <wpml:payloadInfo> <wpml:payloadEnumValue>53</wpml:payloadEnumValue> <wpml:payloadSubEnumValue>0</wpml:payloadSubEnumValue> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> </wpml:payloadInfo> </wpml:missionConfig> <Folder> <wpml:templateId>0</wpml:templateId> <wpml:executeHeightMode>relativeToStartPoint</wpml:executeHeightMode> <wpml:waylineId>0</wpml:waylineId> <wpml:autoFlightSpeed>10</wpml:autoFlightSpeed> <Placemark> <Point> <coordinates> 115.86002109342,28.6202713913694 </coordinates> </Point> <wpml:index>0</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>1</wpml:actionGroupId> <wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.86002109342,28.6142037658042 </coordinates> </Point> <wpml:index>1</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>2</wpml:actionGroupId> <wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.866374254306,28.6142037658042 </coordinates> </Point> <wpml:index>2</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>3</wpml:actionGroupId> <wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.866374254306,28.6202713913694 </coordinates> </Point> <wpml:index>3</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>4</wpml:actionGroupId> <wpml:actionGroupStartIndex>4</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>4</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.86425430209,28.6357383285408 </coordinates> </Point> <wpml:index>4</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>5</wpml:actionGroupId> <wpml:actionGroupStartIndex>5</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>5</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.86425430209,28.633120921433 </coordinates> </Point> <wpml:index>5</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>6</wpml:actionGroupId> <wpml:actionGroupStartIndex>6</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>6</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.866977149064,28.633120921433 </coordinates> </Point> <wpml:index>6</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>7</wpml:actionGroupId> <wpml:actionGroupStartIndex>7</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>7</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.866977149064,28.6357383285408 </coordinates> </Point> <wpml:index>7</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>8</wpml:actionGroupId> <wpml:actionGroupStartIndex>8</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>8</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.838147600941,28.618654178036 </coordinates> </Point> <wpml:index>8</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>9</wpml:actionGroupId> <wpml:actionGroupStartIndex>9</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>9</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.838147600941,28.6160843601496 </coordinates> </Point> <wpml:index>9</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>10</wpml:actionGroupId> <wpml:actionGroupStartIndex>10</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>10</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.841288489469,28.6160843601496 </coordinates> </Point> <wpml:index>10</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>11</wpml:actionGroupId> <wpml:actionGroupStartIndex>11</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>11</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <coordinates> 115.841288489469,28.618654178036 </coordinates> </Point> <wpml:index>11</wpml:index> <wpml:executeHeight>100</wpml:executeHeight> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>1</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>12</wpml:actionGroupId> <wpml:actionGroupStartIndex>12</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>12</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> </Folder> </Document> </kml> src/main/resources/template/template.kml
New file @@ -0,0 +1,868 @@ <?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.3"> <Document> <!-- 步骤1:实现文件创建信息 --> <wpml:author>Aix</wpml:author> <wpml:createTime>1711701361124</wpml:createTime> <wpml:updateTime>1711701361124</wpml:updateTime> <!-- 步骤2:设置任务配置 --> <wpml:missionConfig> <wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode> <wpml:finishAction>goHome</wpml:finishAction> <wpml:exitOnRCLost>executeLostAction</wpml:exitOnRCLost> <wpml:executeRCLostAction>goBack</wpml:executeRCLostAction> <wpml:takeOffSecurityHeight>20</wpml:takeOffSecurityHeight> <wpml:takeOffRefPoint></wpml:takeOffRefPoint> <wpml:takeOffRefPointAGLHeight></wpml:takeOffRefPointAGLHeight> <wpml:globalTransitionalSpeed></wpml:globalTransitionalSpeed> <wpml:globalRTHHeight></wpml:globalRTHHeight> <wpml:droneInfo> <!-- 用M30申报无人机型号 --> <wpml:droneEnumValue>67</wpml:droneEnumValue> <wpml:droneSubEnumValue>1</wpml:droneSubEnumValue> </wpml:droneInfo> <wpml:payloadInfo> <!-- 用M30声明有效载荷模型 --> <wpml:payloadEnumValue>53</wpml:payloadEnumValue> <wpml:payloadSubEnumValue>0</wpml:payloadSubEnumValue> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> </wpml:payloadInfo> </wpml:missionConfig> <!-- 步骤3:设置路径点模板文件夹 --> <Folder> <wpml:templateType>waypoint</wpml:templateType> <wpml:templateId>0</wpml:templateId> <wpml:waylineCoordinateSysParam> <wpml:coordinateMode></wpml:coordinateMode> <wpml:heightMode></wpml:heightMode> </wpml:waylineCoordinateSysParam> <wpml:autoFlightSpeed>10</wpml:autoFlightSpeed> <wpml:globalHeight>100</wpml:globalHeight> <wpml:caliFlightEnable>0</wpml:caliFlightEnable> <wpml:gimbalPitchMode>manual</wpml:gimbalPitchMode> <wpml:globalWaypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:globalWaypointHeadingParam> <wpml:globalWaypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:globalWaypointTurnMode> <wpml:globalUseStraightLine>1</wpml:globalUseStraightLine> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86002109342,28.6202713913694 </coordinates> </Point> <wpml:index>0</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>1</wpml:actionGroupId> <wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86002109342,28.6142037658042 </coordinates> </Point> <wpml:index>1</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>2</wpml:actionGroupId> <wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866374254306,28.6142037658042 </coordinates> </Point> <wpml:index>2</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>3</wpml:actionGroupId> <wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866374254306,28.6202713913694 </coordinates> </Point> <wpml:index>3</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>4</wpml:actionGroupId> <wpml:actionGroupStartIndex>4</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>4</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh01</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86425430209,28.6357383285408 </coordinates> </Point> <wpml:index>4</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>5</wpml:actionGroupId> <wpml:actionGroupStartIndex>5</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>5</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.86425430209,28.633120921433 </coordinates> </Point> <wpml:index>5</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>6</wpml:actionGroupId> <wpml:actionGroupStartIndex>6</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>6</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866977149064,28.633120921433 </coordinates> </Point> <wpml:index>6</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>7</wpml:actionGroupId> <wpml:actionGroupStartIndex>7</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>7</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.866977149064,28.6357383285408 </coordinates> </Point> <wpml:index>7</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>8</wpml:actionGroupId> <wpml:actionGroupStartIndex>8</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>8</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh02</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.838147600941,28.618654178036 </coordinates> </Point> <wpml:index>8</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>9</wpml:actionGroupId> <wpml:actionGroupStartIndex>9</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>9</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.838147600941,28.6160843601496 </coordinates> </Point> <wpml:index>9</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>10</wpml:actionGroupId> <wpml:actionGroupStartIndex>10</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>10</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.841288489469,28.6160843601496 </coordinates> </Point> <wpml:index>10</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>11</wpml:actionGroupId> <wpml:actionGroupStartIndex>11</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>11</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> 115.841288489469,28.618654178036 </coordinates> </Point> <wpml:index>11</wpml:index> <wpml:ellipsoidHeight>100</wpml:ellipsoidHeight> <wpml:height>100</wpml:height> <wpml:waypointSpeed></wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex></wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>1</wpml:useGlobalHeight> <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam> <wpml:useStraightLine></wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <wpml:actionGroup> <wpml:actionGroupId>12</wpml:actionGroupId> <wpml:actionGroupStartIndex>12</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>12</wpml:actionGroupEndIndex> <wpml:actionGroupMode>sequence</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType> </wpml:actionTrigger> <!-- 动作 --> <wpml:action> <wpml:actionId>0</wpml:actionId> <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:fileSuffix>航点dkbh03</wpml:fileSuffix> <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex> <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex> </wpml:actionActuatorFuncParam> </wpml:action> <!-- 动作 --> <wpml:action> <wpml:actionId>1</wpml:actionId> <wpml:actionActuatorFunc>gimbalRotate</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:gimbalHeadingYawBase>north</wpml:gimbalHeadingYawBase> <wpml:gimbalRotateMode>absoluteAngle</wpml:gimbalRotateMode> <wpml:gimbalPitchRotateEnable>1</wpml:gimbalPitchRotateEnable> <wpml:gimbalPitchRotateAngle>-83</wpml:gimbalPitchRotateAngle> <wpml:gimbalRollRotateEnable>0</wpml:gimbalRollRotateEnable> <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle> <wpml:gimbalYawRotateEnable>0</wpml:gimbalYawRotateEnable> <wpml:gimbalYawRotateAngle>0</wpml:gimbalYawRotateAngle> <wpml:gimbalRotateTimeEnable>0</wpml:gimbalRotateTimeEnable> <wpml:gimbalRotateTime>0</wpml:gimbalRotateTime> </wpml:actionActuatorFuncParam> </wpml:action> </wpml:actionGroup> </Placemark> <!-- 负载设置 --> <wpml:payloadParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <wpml:focusMode></wpml:focusMode> <wpml:meteringMode></wpml:meteringMode> <wpml:returnMode></wpml:returnMode> <wpml:samplingRate></wpml:samplingRate> <wpml:scanningMode></wpml:scanningMode> <wpml:imageFormat>wide,ir</wpml:imageFormat> </wpml:payloadParam> </Folder> </Document> </kml> src/main/resources/template/template.xml
New file @@ -0,0 +1,181 @@ <?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.3"> <Document> <!-- 步骤1:实现文件创建信息 --> <wpml:author>${author!''}</wpml:author> <wpml:createTime>${createTime!''}</wpml:createTime> <wpml:updateTime>${updateTime!''}</wpml:updateTime> <!-- 步骤2:设置任务配置 --> <wpml:missionConfig> <wpml:flyToWaylineMode>${missionConfig.flyToWaylineMode!''}</wpml:flyToWaylineMode> <wpml:finishAction>${missionConfig.finishAction!''}</wpml:finishAction> <wpml:exitOnRCLost>${missionConfig.exitOnRCLost!''}</wpml:exitOnRCLost> <wpml:executeRCLostAction>${missionConfig.executeRCLostAction!''}</wpml:executeRCLostAction> <wpml:takeOffSecurityHeight>${missionConfig.takeOffSecurityHeight!''}</wpml:takeOffSecurityHeight> <wpml:takeOffRefPoint>${missionConfig.takeOffRefPoint!''}</wpml:takeOffRefPoint> <wpml:takeOffRefPointAGLHeight>${missionConfig.takeOffRefPointAGLHeight!''}</wpml:takeOffRefPointAGLHeight> <wpml:globalTransitionalSpeed>${missionConfig.globalTransitionalSpeed!''}</wpml:globalTransitionalSpeed> <wpml:globalRTHHeight>${missionConfig.globalRTHHeight!''}</wpml:globalRTHHeight> <wpml:droneInfo> <!-- 用M30申报无人机型号 --> <wpml:droneEnumValue>${missionConfig.droneInfo.droneEnumValue!''}</wpml:droneEnumValue> <wpml:droneSubEnumValue>${missionConfig.droneInfo.droneSubEnumValue!''}</wpml:droneSubEnumValue> </wpml:droneInfo> <wpml:payloadInfo> <!-- 用M30声明有效载荷模型 --> <wpml:payloadEnumValue>${missionConfig.payloadInfo.payloadEnumValue!''}</wpml:payloadEnumValue> <wpml:payloadSubEnumValue>${missionConfig.payloadInfo.payloadSubEnumValue!''}</wpml:payloadSubEnumValue> <wpml:payloadPositionIndex>${missionConfig.payloadInfo.payloadPositionIndex!''}</wpml:payloadPositionIndex> </wpml:payloadInfo> </wpml:missionConfig> <!-- 步骤3:设置路径点模板文件夹 --> <Folder> <wpml:templateType>${folder.templateType!''}</wpml:templateType> <wpml:templateId>${folder.templateId!''}</wpml:templateId> <wpml:waylineCoordinateSysParam> <wpml:coordinateMode>${folder.waylineCoordinateSysParam.coordinateMode!''}</wpml:coordinateMode> <wpml:heightMode>${folder.waylineCoordinateSysParam.heightMode!''}</wpml:heightMode> </wpml:waylineCoordinateSysParam> <wpml:autoFlightSpeed>${folder.autoFlightSpeed!''}</wpml:autoFlightSpeed> <wpml:globalHeight>${folder.globalHeight!''}</wpml:globalHeight> <wpml:caliFlightEnable>${folder.caliFlightEnable!''}</wpml:caliFlightEnable> <wpml:gimbalPitchMode>${folder.gimbalPitchMode!''}</wpml:gimbalPitchMode> <wpml:globalWaypointHeadingParam> <wpml:waypointHeadingMode>${folder.globalWaypointHeadingParam.waypointHeadingMode!''}</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>${folder.globalWaypointHeadingParam.waypointHeadingAngle!''}</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>${folder.globalWaypointHeadingParam.waypointPoiPoint!''}</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>${folder.globalWaypointHeadingParam.waypointHeadingPathMode!''}</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>${folder.globalWaypointHeadingParam.waypointHeadingPoiIndex!''}</wpml:waypointHeadingPoiIndex> </wpml:globalWaypointHeadingParam> <wpml:globalWaypointTurnMode>${folder.globalWaypointTurnMode!''}</wpml:globalWaypointTurnMode> <wpml:globalUseStraightLine>${folder.globalUseStraightLine!''}</wpml:globalUseStraightLine> <#if folder.placemarkList??> <#assign placemarkIndex = 0> <#list folder.placemarkList as placemark> <Placemark> <Point> <!-- 经度和纬度 --> <coordinates> ${placemark.coordinates!''} </coordinates> </Point> <wpml:index>${placemarkIndex!''}</wpml:index> <#assign placemarkIndex = placemarkIndex + 1> <wpml:ellipsoidHeight>${placemark.ellipsoidHeight!''}</wpml:ellipsoidHeight> <wpml:height>${placemark.height!''}</wpml:height> <wpml:waypointSpeed>${placemark.waypointSpeed!''}</wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>${folder.globalWaypointHeadingParam.waypointHeadingMode!''}</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>${folder.globalWaypointHeadingParam.waypointHeadingAngle!''}</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>${folder.globalWaypointHeadingParam.waypointPoiPoint!''}</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>${folder.globalWaypointHeadingParam.waypointHeadingPathMode!''}</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>${folder.globalWaypointHeadingParam.waypointHeadingPoiIndex!''}</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>${folder.globalWaypointTurnMode!''}</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useGlobalHeight>${placemark.useGlobalHeight!''}</wpml:useGlobalHeight> <wpml:useGlobalSpeed>${placemark.useGlobalSpeed!''}</wpml:useGlobalSpeed> <wpml:useGlobalHeadingParam>${placemark.useGlobalHeadingParam!''}</wpml:useGlobalHeadingParam> <wpml:useGlobalTurnParam>${placemark.useGlobalTurnParam!''}</wpml:useGlobalTurnParam> <wpml:useStraightLine>${placemark.useStraightLine!''}</wpml:useStraightLine> <!-- 宣布航路点1#的行动组 --> <#if placemark.actionGroup??> <wpml:actionGroup> <wpml:actionGroupId>${placemark.actionGroup.actionGroupId!''}</wpml:actionGroupId> <wpml:actionGroupStartIndex>${placemark.actionGroup.actionGroupStartIndex!''}</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>${placemark.actionGroup.actionGroupEndIndex!''}</wpml:actionGroupEndIndex> <wpml:actionGroupMode>${placemark.actionGroup.actionGroupMode!''}</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>${placemark.actionGroup.actionTrigger.actionTriggerType!''}</wpml:actionTriggerType> </wpml:actionTrigger> <#if placemark.actionGroup.actions??> <#assign idx = 0> <#list placemark.actionGroup.actions as action> <!-- 动作 --> <wpml:action> <wpml:actionId>${idx!''}</wpml:actionId> <wpml:actionActuatorFunc>${action.actionActuatorFunc!''}</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <#if action.actionActuatorFuncParam.fileSuffix??> <wpml:fileSuffix>${action.actionActuatorFuncParam.fileSuffix!''}</wpml:fileSuffix> </#if> <#if action.actionActuatorFuncParam.payloadLensIndex??> <wpml:payloadLensIndex>${action.actionActuatorFuncParam.payloadLensIndex!''}</wpml:payloadLensIndex> </#if> <#if action.actionActuatorFuncParam.useGlobalPayloadLensIndex??> <wpml:useGlobalPayloadLensIndex>${action.actionActuatorFuncParam.useGlobalPayloadLensIndex!''}</wpml:useGlobalPayloadLensIndex> </#if> <#if action.actionActuatorFuncParam.isPointFocus??> <wpml:isPointFocus>${action.actionActuatorFuncParam.isPointFocus!''}</wpml:isPointFocus> </#if> <#if action.actionActuatorFuncParam.focusX??> <wpml:focusX>${action.actionActuatorFuncParam.focusX!''}</wpml:focusX> </#if> <#if action.actionActuatorFuncParam.focusY??> <wpml:focusY>${action.actionActuatorFuncParam.focusY!''}</wpml:focusY> </#if> <#if action.actionActuatorFuncParam.focusRegionWidth??> <wpml:focusRegionWidth>${action.actionActuatorFuncParam.focusRegionWidth!''}</wpml:focusRegionWidth> </#if> <#if action.actionActuatorFuncParam.focusRegionHeight??> <wpml:focusRegionHeight>${action.actionActuatorFuncParam.focusRegionHeight!''}</wpml:focusRegionHeight> </#if> <#if action.actionActuatorFuncParam.isInfiniteFocus??> <wpml:isInfiniteFocus>${action.actionActuatorFuncParam.isInfiniteFocus!''}</wpml:isInfiniteFocus> </#if> <#if action.actionActuatorFuncParam.gimbalHeadingYawBase??> <wpml:gimbalHeadingYawBase>${action.actionActuatorFuncParam.gimbalHeadingYawBase!''}</wpml:gimbalHeadingYawBase> </#if> <#if action.actionActuatorFuncParam.gimbalRotateMode??> <wpml:gimbalRotateMode>${action.actionActuatorFuncParam.gimbalRotateMode!''}</wpml:gimbalRotateMode> </#if> <#if action.actionActuatorFuncParam.gimbalPitchRotateEnable??> <wpml:gimbalPitchRotateEnable>${action.actionActuatorFuncParam.gimbalPitchRotateEnable!''}</wpml:gimbalPitchRotateEnable> </#if> <#if action.actionActuatorFuncParam.gimbalPitchRotateAngle??> <wpml:gimbalPitchRotateAngle>${action.actionActuatorFuncParam.gimbalPitchRotateAngle!''}</wpml:gimbalPitchRotateAngle> </#if> <#if action.actionActuatorFuncParam.gimbalRollRotateEnable??> <wpml:gimbalRollRotateEnable>${action.actionActuatorFuncParam.gimbalRollRotateEnable!''}</wpml:gimbalRollRotateEnable> </#if> <#if action.actionActuatorFuncParam.gimbalRollRotateAngle??> <wpml:gimbalRollRotateAngle>${action.actionActuatorFuncParam.gimbalRollRotateAngle!''}</wpml:gimbalRollRotateAngle> </#if> <#if action.actionActuatorFuncParam.gimbalYawRotateEnable??> <wpml:gimbalYawRotateEnable>${action.actionActuatorFuncParam.gimbalYawRotateEnable!''}</wpml:gimbalYawRotateEnable> </#if> <#if action.actionActuatorFuncParam.gimbalYawRotateAngle??> <wpml:gimbalYawRotateAngle>${action.actionActuatorFuncParam.gimbalYawRotateAngle!''}</wpml:gimbalYawRotateAngle> </#if> <#if action.actionActuatorFuncParam.gimbalRotateTimeEnable??> <wpml:gimbalRotateTimeEnable>${action.actionActuatorFuncParam.gimbalRotateTimeEnable!''}</wpml:gimbalRotateTimeEnable> </#if> <#if action.actionActuatorFuncParam.gimbalRotateTime??> <wpml:gimbalRotateTime>${action.actionActuatorFuncParam.gimbalRotateTime!''}</wpml:gimbalRotateTime> </#if> </wpml:actionActuatorFuncParam> </wpml:action> <#assign idx = idx + 1> </#list> </#if> </wpml:actionGroup> </#if> </Placemark> </#list> </#if> <!-- 负载设置 --> <wpml:payloadParam> <wpml:payloadPositionIndex>${folder.payloadParam.payloadPositionIndex!''}</wpml:payloadPositionIndex> <wpml:focusMode>${folder.payloadParam.focusMode!''}</wpml:focusMode> <wpml:meteringMode>${folder.payloadParam.meteringMode!''}</wpml:meteringMode> <wpml:returnMode>${folder.payloadParam.returnMode!''}</wpml:returnMode> <wpml:samplingRate>${folder.payloadParam.samplingRate!''}</wpml:samplingRate> <wpml:scanningMode>${folder.payloadParam.scanningMode!''}</wpml:scanningMode> <wpml:imageFormat>${folder.payloadParam.imageFormat!''}</wpml:imageFormat> </wpml:payloadParam> </Folder> </Document> </kml> src/main/resources/template/waylines.xml
New file @@ -0,0 +1,136 @@ <?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.3"> <Document> <wpml:missionConfig> <wpml:flyToWaylineMode>${missionConfig.flyToWaylineMode!''}</wpml:flyToWaylineMode> <wpml:finishAction>${missionConfig.finishAction!''}</wpml:finishAction> <wpml:exitOnRCLost>${missionConfig.exitOnRCLost!''}</wpml:exitOnRCLost> <wpml:executeRCLostAction>${missionConfig.executeRCLostAction!''}</wpml:executeRCLostAction> <wpml:takeOffSecurityHeight>${missionConfig.takeOffSecurityHeight!''}</wpml:takeOffSecurityHeight> <wpml:globalTransitionalSpeed>${missionConfig.globalTransitionalSpeed!''}</wpml:globalTransitionalSpeed> <wpml:globalRTHHeight>${missionConfig.globalRTHHeight!''}</wpml:globalRTHHeight> <wpml:droneInfo> <wpml:droneEnumValue>${missionConfig.droneInfo.droneEnumValue!''}</wpml:droneEnumValue> <wpml:droneSubEnumValue>${missionConfig.droneInfo.droneSubEnumValue!''}</wpml:droneSubEnumValue> </wpml:droneInfo> <wpml:payloadInfo> <wpml:payloadEnumValue>${missionConfig.payloadInfo.payloadEnumValue!''}</wpml:payloadEnumValue> <wpml:payloadSubEnumValue>${missionConfig.payloadInfo.payloadSubEnumValue!''}</wpml:payloadSubEnumValue> <wpml:payloadPositionIndex>${missionConfig.payloadInfo.payloadPositionIndex!''}</wpml:payloadPositionIndex> </wpml:payloadInfo> </wpml:missionConfig> <Folder> <wpml:templateId>${folder.templateId!''}</wpml:templateId> <wpml:executeHeightMode>${folder.waylineCoordinateSysParam.heightMode!''}</wpml:executeHeightMode> <wpml:waylineId>0</wpml:waylineId> <wpml:autoFlightSpeed>${folder.autoFlightSpeed!''}</wpml:autoFlightSpeed> <#if folder.placemarkList??> <#assign placemarkIndex = 0> <#list folder.placemarkList as placemark> <Placemark> <Point> <coordinates> ${placemark.coordinates!''} </coordinates> </Point> <wpml:index>${placemarkIndex!''}</wpml:index> <#assign placemarkIndex = placemarkIndex + 1> <wpml:executeHeight>${placemark.height!''}</wpml:executeHeight> <wpml:waypointSpeed>${placemark.waypointSpeed!''}</wpml:waypointSpeed> <wpml:waypointHeadingParam> <wpml:waypointHeadingMode>${folder.globalWaypointHeadingParam.waypointHeadingMode!''}</wpml:waypointHeadingMode> <wpml:waypointHeadingAngle>${folder.globalWaypointHeadingParam.waypointHeadingAngle!''}</wpml:waypointHeadingAngle> <wpml:waypointPoiPoint>${folder.globalWaypointHeadingParam.waypointPoiPoint!''}</wpml:waypointPoiPoint> <wpml:waypointHeadingPathMode>${folder.globalWaypointHeadingParam.waypointHeadingPathMode!''}</wpml:waypointHeadingPathMode> <wpml:waypointHeadingPoiIndex>${folder.globalWaypointHeadingParam.waypointHeadingPoiIndex!''}</wpml:waypointHeadingPoiIndex> </wpml:waypointHeadingParam> <wpml:waypointTurnParam> <wpml:waypointTurnMode>${folder.globalWaypointTurnMode!''}</wpml:waypointTurnMode> <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist> </wpml:waypointTurnParam> <wpml:useStraightLine>${folder.globalUseStraightLine!''}</wpml:useStraightLine> <wpml:actionGroup> <wpml:actionGroupId>${placemark.actionGroup.actionGroupId!''}</wpml:actionGroupId> <wpml:actionGroupStartIndex>${placemark.actionGroup.actionGroupStartIndex!''}</wpml:actionGroupStartIndex> <wpml:actionGroupEndIndex>${placemark.actionGroup.actionGroupEndIndex!''}</wpml:actionGroupEndIndex> <wpml:actionGroupMode>${placemark.actionGroup.actionGroupMode!''}</wpml:actionGroupMode> <wpml:actionTrigger> <wpml:actionTriggerType>${placemark.actionGroup.actionTrigger.actionTriggerType!''}</wpml:actionTriggerType> </wpml:actionTrigger> <#if placemark.actionGroup.actions??> <#assign idx = 0> <#list placemark.actionGroup.actions as action> <wpml:action> <wpml:actionId>${idx!''}</wpml:actionId> <wpml:actionActuatorFunc>${action.actionActuatorFunc!''}</wpml:actionActuatorFunc> <wpml:actionActuatorFuncParam> <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex> <#if action.actionActuatorFuncParam.fileSuffix??> <wpml:fileSuffix>${action.actionActuatorFuncParam.fileSuffix!''}</wpml:fileSuffix> </#if> <#if action.actionActuatorFuncParam.payloadLensIndex??> <wpml:payloadLensIndex>${action.actionActuatorFuncParam.payloadLensIndex!''}</wpml:payloadLensIndex> </#if> <#if action.actionActuatorFuncParam.useGlobalPayloadLensIndex??> <wpml:useGlobalPayloadLensIndex>${action.actionActuatorFuncParam.useGlobalPayloadLensIndex!''}</wpml:useGlobalPayloadLensIndex> </#if> <#if action.actionActuatorFuncParam.isPointFocus??> <wpml:isPointFocus>${action.actionActuatorFuncParam.isPointFocus!''}</wpml:isPointFocus> </#if> <#if action.actionActuatorFuncParam.focusX??> <wpml:focusX>${action.actionActuatorFuncParam.focusX!''}</wpml:focusX> </#if> <#if action.actionActuatorFuncParam.focusY??> <wpml:focusY>${action.actionActuatorFuncParam.focusY!''}</wpml:focusY> </#if> <#if action.actionActuatorFuncParam.focusRegionWidth??> <wpml:focusRegionWidth>${action.actionActuatorFuncParam.focusRegionWidth!''}</wpml:focusRegionWidth> </#if> <#if action.actionActuatorFuncParam.focusRegionHeight??> <wpml:focusRegionHeight>${action.actionActuatorFuncParam.focusRegionHeight!''}</wpml:focusRegionHeight> </#if> <#if action.actionActuatorFuncParam.isInfiniteFocus??> <wpml:isInfiniteFocus>${action.actionActuatorFuncParam.isInfiniteFocus!''}</wpml:isInfiniteFocus> </#if> <#if action.actionActuatorFuncParam.gimbalHeadingYawBase??> <wpml:gimbalHeadingYawBase>${action.actionActuatorFuncParam.gimbalHeadingYawBase!''}</wpml:gimbalHeadingYawBase> </#if> <#if action.actionActuatorFuncParam.gimbalRotateMode??> <wpml:gimbalRotateMode>${action.actionActuatorFuncParam.gimbalRotateMode!''}</wpml:gimbalRotateMode> </#if> <#if action.actionActuatorFuncParam.gimbalPitchRotateEnable??> <wpml:gimbalPitchRotateEnable>${action.actionActuatorFuncParam.gimbalPitchRotateEnable!''}</wpml:gimbalPitchRotateEnable> </#if> <#if action.actionActuatorFuncParam.gimbalPitchRotateAngle??> <wpml:gimbalPitchRotateAngle>${action.actionActuatorFuncParam.gimbalPitchRotateAngle!''}</wpml:gimbalPitchRotateAngle> </#if> <#if action.actionActuatorFuncParam.gimbalRollRotateEnable??> <wpml:gimbalRollRotateEnable>${action.actionActuatorFuncParam.gimbalRollRotateEnable!''}</wpml:gimbalRollRotateEnable> </#if> <#if action.actionActuatorFuncParam.gimbalRollRotateAngle??> <wpml:gimbalRollRotateAngle>${action.actionActuatorFuncParam.gimbalRollRotateAngle!''}</wpml:gimbalRollRotateAngle> </#if> <#if action.actionActuatorFuncParam.gimbalYawRotateEnable??> <wpml:gimbalYawRotateEnable>${action.actionActuatorFuncParam.gimbalYawRotateEnable!''}</wpml:gimbalYawRotateEnable> </#if> <#if action.actionActuatorFuncParam.gimbalYawRotateAngle??> <wpml:gimbalYawRotateAngle>${action.actionActuatorFuncParam.gimbalYawRotateAngle!''}</wpml:gimbalYawRotateAngle> </#if> <#if action.actionActuatorFuncParam.gimbalRotateTimeEnable??> <wpml:gimbalRotateTimeEnable>${action.actionActuatorFuncParam.gimbalRotateTimeEnable!''}</wpml:gimbalRotateTimeEnable> </#if> <#if action.actionActuatorFuncParam.gimbalRotateTime??> <wpml:gimbalRotateTime>${action.actionActuatorFuncParam.gimbalRotateTime!''}</wpml:gimbalRotateTime> </#if> </wpml:actionActuatorFuncParam> </wpml:action> <#assign idx = idx + 1> </#list> </#if> </wpml:actionGroup> </Placemark> </#list> </#if> </Folder> </Document> </kml> src/main/resources/template2/newTemplate.xml
New file @@ -0,0 +1,48 @@ <?xml version="1.0" encoding="utf-8"?> <INFO>这就是一个简单的模板</INFO> <Profile> <ID>9e55fa00152a4f5bab88c6215664d03c</ID> <Name>张三三</Name> <Demo> <Subject>subject0</Subject> <Score>60</Score> </Demo> <Demo> <Subject>subject1</Subject> <Score>61</Score> </Demo> <Demo> <Subject>subject2</Subject> <Score>62</Score> </Demo> <Demo> <Subject>subject3</Subject> <Score>63</Score> </Demo> <Demo> <Subject>subject4</Subject> <Score>64</Score> </Demo> <Demo> <Subject>subject5</Subject> <Score>65</Score> </Demo> <Demo> <Subject>subject6</Subject> <Score>66</Score> </Demo> <Demo> <Subject>subject7</Subject> <Score>67</Score> </Demo> <Demo> <Subject>subject8</Subject> <Score>68</Score> </Demo> <Demo> <Subject>subject9</Subject> <Score>69</Score> </Demo> </Profile> src/main/resources/template2/template.xml
New file @@ -0,0 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <INFO>这就是一个简单的模板</INFO> <Profile> <ID>${id!''}</ID> <Name>${name!''}</Name> <#list demoList as list> <Demo> <Subject>${list.subject}</Subject> <Score>${list.score}</Score> </Demo> </#list> </Profile>