xieb
2024-04-01 891ac00aaae4434027de3544356b94f6012b3f3e
规划生成航线xml
1 files modified
44 files added
4603 ■■■■■ changed files
pom.xml 30 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/utils/DistanceCalculator.java 103 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java 140 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/controller/XMLController.java 105 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/CameraActionEnum.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/Folder.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/MissionConfig.java 58 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/Placemark.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/WaylineCoordinateSysParam.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/WaypointHeadingParam.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/XMLTemplateModel.java 98 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/ActionGroup.java 45 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/ActionMode.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/ActionTrigger.java 30 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/AutoRerouteInfo.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/DroneInfo.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/GlobalWaypointHeadingParam.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/PayloadInfo.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/PayloadParam.java 76 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/WaypointTurnParam.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/ActionActuatorFuncParam.java 55 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/CustomDirNameParam.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/FocusParam.java 44 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/GimbalEvenlyRotateParam.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/GimbalRotateParam.java 68 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/HoverParam.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/OrientedShootParam.java 152 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/PanoShotParam.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/RotateYawParam.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/StartRecordParam.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/StopRecordParam.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/TakePhotoParam.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/param/ZoomParam.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/ActionUtils.java 71 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/FolderUtils.java 47 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/MissionConfigUtils.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/PayloadParamUtils.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/xml/mode/share/action/utils/PlacemarkUtils.java 28 ●●●●● patch | view | raw | blame | history
src/main/resources/template/newtemplate.xml 868 ●●●●● patch | view | raw | blame | history
src/main/resources/template/newwaylines.xml 725 ●●●●● patch | view | raw | blame | history
src/main/resources/template/template.kml 868 ●●●●● patch | view | raw | blame | history
src/main/resources/template/template.xml 181 ●●●●● patch | view | raw | blame | history
src/main/resources/template/waylines.xml 136 ●●●●● patch | view | raw | blame | history
src/main/resources/template2/newTemplate.xml 48 ●●●●● patch | view | raw | blame | history
src/main/resources/template2/template.xml 14 ●●●●● patch | view | raw | blame | history
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>