From 3d37a280c2bbefc5769053ec7298a0211ab79b8d Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Fri, 26 Apr 2024 08:49:33 +0800
Subject: [PATCH] 新增坐标系转换,在DB数据进出库时进行转换。优化DB成果展示的临时文件问题。

---
 src/main/java/com/dji/sample/territory/service/impl/TbFjServiceImpl.java          |   18 +
 src/main/java/com/dji/sample/territory/utils/CoordinateSystemUtil.java            |   88 ++++++++
 /dev/null                                                                         |    0 
 src/main/java/com/dji/sample/territory/service/impl/TbDkjbxxServiceImpl.java      |   12 
 src/main/resources/template/wpmz/waylines.wpml                                    |  392 +++++++++++++++++++++++++++++++--------
 pom.xml                                                                           |    6 
 src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java                   |   14 
 src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java |   58 +++--
 8 files changed, 458 insertions(+), 130 deletions(-)

diff --git a/pom.xml b/pom.xml
index 9e252ad..c2e1d65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -269,6 +269,12 @@
             <artifactId>jave-core</artifactId>
             <version>3.0.0</version>
         </dependency>
+        <!---坐标系转换工具-->
+        <dependency>
+            <groupId>org.geotools</groupId>
+            <artifactId>gt-epsg-hsql</artifactId>
+            <version>28.0</version>
+        </dependency>
 
     </dependencies>
 
diff --git a/src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java b/src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java
index 72ad27d..84868e4 100644
--- a/src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java
+++ b/src/main/java/com/dji/sample/patches/service/impl/ShpToDataSourceServiceImpl.java
@@ -27,16 +27,15 @@
 import static com.dji.sample.patches.utils.FormatConversionUtil.getCentros;
 import static com.dji.sample.patches.utils.MultipartFileTOFileUtil.convert;
 import static com.dji.sample.patches.utils.ZipUtil.*;
+import static com.dji.sample.territory.utils.CoordinateSystemUtil.*;
 import static org.locationtech.jts.io.WKTConstants.POLYGON;
 
 @Service
 public class ShpToDataSourceServiceImpl implements ShpToDataSourceService {
 
     @Autowired
-    private ShpToDataSourceMapper mapper;
+    private ShpToDataSourceMapper shpToDataSourceMapper;
 
-    @Autowired
-    private IWaylineFileService service;
     private String head = POLYGON;
     private MultipartFile multipartFile;
 
@@ -44,6 +43,7 @@
 
     @Autowired
     private PatchesConfigPojo patchesConfigPojo;
+
     @Transactional
     public MultipartFile insertGeo(MultipartFile file, String workspaceId, String waylineName, double airportLat, double airportLon) throws Exception {
         List<LotInfo> list = new ArrayList<>();
@@ -67,11 +67,11 @@
             String[] points = end.split(",");
             lotInfo.setXzb(Double.valueOf(points[0]));
             lotInfo.setYzb(Double.valueOf(points[1]));
-            mapper.insert(lotInfo);
+            shpToDataSourceMapper.insert(lotInfo);
         }
         Coordinate[] coordinates = GeoToolsUtil.getRoutePointOrder(list, airportLat, airportLon);
         XMLTemplateModel xmlModel = XMLTemplateModel.init(coordinates, list);
-        CreateWaylineFileUtils.createWaylineFile(xmlModel,patchesConfigPojo.getTemplate(),patchesConfigPojo.getTargetTemplate(),patchesConfigPojo.getWaylines(),patchesConfigPojo.getTargetWaylines());
+        CreateWaylineFileUtils.createWaylineFile(xmlModel, patchesConfigPojo.getTemplate(), patchesConfigPojo.getTargetTemplate(), patchesConfigPojo.getWaylines(), patchesConfigPojo.getTargetWaylines());
         // 压缩文件夹中的内容
         String destKMZFile = patchesConfigPojo.getDestKMZFile() + waylineName + ".kmz"; // 输出的KMZ文件路径
         zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
@@ -79,40 +79,42 @@
         MultipartFileTOFileUtil.deleteFile(file1);
         return multipartFile;
     }
+
     @Transactional
-    public void savaInMysql(List<TbDkjbxxEntity> list,String workspaceId){
-        for (int i = 0; i <list.size() ; i++) {
+    public void savaInMysql(List<TbDkjbxxEntity> list, String workspaceId) {
+        for (int i = 0; i < list.size(); i++) {
             LotInfo lotInfo = new LotInfo();
             lotInfo.setWorkspaceId(workspaceId);
-            lotInfo=dbConvertToEntity(list.get(i),workspaceId);
-            mapper.insert(lotInfo);
+            lotInfo = dbConvertToEntity(list.get(i), workspaceId);
+            shpToDataSourceMapper.insert(lotInfo);
         }
     }
+
     /**
      * 将SQlite数据库中DKJBXX对象转换为LotInfo对象。
+     *
      * @param file 需要转换的DKJBXX对象。
      * @return 返回一个构建好的LotInfo对象,包含从数据库实体中转换来的信息。
      */
-    private LotInfo dbConvertToEntity(TbDkjbxxEntity file,String workspaceId) {
+    private LotInfo dbConvertToEntity(TbDkjbxxEntity file, String workspaceId) {
+        double[] coordinates = extractCoordinates(pointCGCStoWGS(file.getXzb(), file.getYzb()));
         LotInfo.LotInfoBuilder builder = LotInfo.builder();
-        if (file != null) {
-            builder.bsm(file.getBsm())
-                    .bz(file.getBz())
-                    .dkmj(file.getDkmj())
-                    .dkmc(file.getDkmc())
-                    .dkbh(file.getDkbh())
-                    .xmc(file.getXmc())
-                    .xzb(file.getXzb())
-                    .sfbhzdk(file.getSfbhzdk())
-                    .sjlx(file.getSjlx())
-                    .dkfw(file.getDkfw())
-                    .xzqdm(file.getXzqdm())
-                    .yzb(file.getYzb())
-                    .kzxx(file.getKzxx())
-                    .dklx(file.getDklx())
-                    .workspaceId(workspaceId)
-                    .build();
-        }
+        builder.bsm(file.getBsm())
+                .bz(file.getBz())
+                .dkmj(file.getDkmj())
+                .dkmc(file.getDkmc())
+                .dkbh(file.getDkbh())
+                .xmc(file.getXmc())
+                .xzb(coordinates[0])
+                .sfbhzdk(file.getSfbhzdk())
+                .sjlx(file.getSjlx())
+                .dkfw(poylonCGCStoWGS(file.getDkfw()))
+                .xzqdm(file.getXzqdm())
+                .yzb(coordinates[1])
+                .kzxx(file.getKzxx())
+                .dklx(file.getDklx())
+                .workspaceId(workspaceId)
+                .build();
         return builder.build();
     }
 }
diff --git a/src/main/java/com/dji/sample/territory/service/impl/TbDkjbxxServiceImpl.java b/src/main/java/com/dji/sample/territory/service/impl/TbDkjbxxServiceImpl.java
index 894b616..a5be0c5 100644
--- a/src/main/java/com/dji/sample/territory/service/impl/TbDkjbxxServiceImpl.java
+++ b/src/main/java/com/dji/sample/territory/service/impl/TbDkjbxxServiceImpl.java
@@ -33,6 +33,8 @@
 
 import static com.dji.sample.patches.utils.MultipartFileTOFileUtil.convert;
 import static com.dji.sample.patches.utils.ZipUtil.zipFolder;
+import static com.dji.sample.territory.utils.CoordinateSystemUtil.*;
+
 
 /**
  * @PROJECT_NAME: drone
@@ -106,8 +108,7 @@
         String destKMZFile = patchesConfigPojo.getDestKMZFile() + waylineName + ".kmz"; // 输出的KMZ文件路径
         zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile);
         // 将压缩文件转换为MultipartFile对象
-        MultipartFile multipartFile = convert(new File(destKMZFile));
-        return multipartFile;
+        return convert(new File(destKMZFile));
     }
 
     /**
@@ -119,6 +120,7 @@
     private List<LotInfo> dbConvertToEntity(List<TbDkjbxxEntity> list) {
         List<LotInfo> infos = new ArrayList<>();
         for (TbDkjbxxEntity file : list) {
+            double[] coordinates = extractCoordinates(pointCGCStoWGS(file.getXzb(), file.getYzb()));
             // 使用Builder模式构建LotInfo对象
             LotInfo.LotInfoBuilder builder = LotInfo.builder();
             if (file != null) {
@@ -129,12 +131,12 @@
                         .dkmc(file.getDkmc())
                         .dkbh(file.getDkbh())
                         .xmc(file.getXmc())
-                        .xzb(file.getXzb())
+                        .xzb(coordinates[0])
                         .sfbhzdk(file.getSfbhzdk())
                         .sjlx(file.getSjlx())
-                        .dkfw(file.getDkfw())
+                        .dkfw(poylonCGCStoWGS(file.getDkfw()))
                         .xzqdm(file.getXzqdm())
-                        .yzb(file.getYzb())
+                        .yzb(coordinates[1])
                         .kzxx(file.getKzxx())
                         .dklx(file.getDklx())
                         .build();
diff --git a/src/main/java/com/dji/sample/territory/service/impl/TbFjServiceImpl.java b/src/main/java/com/dji/sample/territory/service/impl/TbFjServiceImpl.java
index 0f534bd..de85568 100644
--- a/src/main/java/com/dji/sample/territory/service/impl/TbFjServiceImpl.java
+++ b/src/main/java/com/dji/sample/territory/service/impl/TbFjServiceImpl.java
@@ -1,17 +1,15 @@
 package com.dji.sample.territory.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dji.sample.media.model.MediaFileEntity;
 import com.dji.sample.patches.config.pojo.PatchesConfigPojo;
 import com.dji.sample.patches.model.entity.LotInfo;
-import com.dji.sample.patches.utils.MultipartFileTOFileUtil;
 import com.dji.sample.territory.dao.ITbFjMapper;
 import com.dji.sample.territory.model.entity.TbFjEntity;
 import com.dji.sample.territory.service.ITbFJService;
 import com.dji.sample.territory.utils.VideoZipUtil;
-import com.dji.sample.territory.utils.WaterMark;
+import com.dji.sample.territory.utils.WaterMarkUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -22,6 +20,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
+
+import static com.dji.sample.territory.utils.CoordinateSystemUtil.*;
 
 @Service
 @DS("sqlite-ret")
@@ -73,6 +73,9 @@
         JSONObject shootPosition = jsonObject.getJSONObject("shootPosition");
         Double lat = shootPosition.getDouble("lat");
         Double lng = shootPosition.getDouble("lng");
+        double[] coordinates = extractCoordinates(pointWGStoCGCS(lng, lat));
+        double x = Double.parseDouble(((formatCoordinate(coordinates[1]))));
+        double y = Double.parseDouble(((formatCoordinate(coordinates[0]))));
         //本地数据库没有的数据在FJ表非空用0
         int psjd = 0;
         String fjhxz = "0";
@@ -93,7 +96,7 @@
         //对应图片和视频文件进行不同处理
         boolean endsWith = key.endsWith(".mp4");
         if (!endsWith) {
-            file1 = WaterMark.addWatermark(file, patchesConfigPojo.getUnzip(), pssj, lat, lng);
+            file1 = WaterMarkUtil.addWatermark(file, patchesConfigPojo.getUnzip(), pssj, lat, lng);
             FJ = fileToByteArray(file1);
         } else {
             file1 = VideoZipUtil.compressVideo(file, 800000, 128000, 1280, 720);
@@ -107,8 +110,8 @@
                     .dklx(dklx)
                     .xdgd(relativeAltitude)
                     .jdgd(absoluteAltitude)
-                    .Latitude(lat)
-                    .longitude(lng)
+                    .Latitude(x)
+                    .longitude(y)
                     .fj(FJ)
                     .fjmc(fjmc)
                     .fjlx(fjlx)
@@ -136,12 +139,11 @@
      */
     public File downloadFile(String fileUrl) {
         File downloadedFile = null;
-        String localFilePath = patchesConfigPojo.getUnzip() + "tmp.jpg";
         try {
             URL url = new URL(fileUrl);
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
             connection.setRequestMethod("GET");
-            downloadedFile = new File(localFilePath);
+            downloadedFile = new File(File.createTempFile("temp", ".jpeg").toURI());
             InputStream inputStream = connection.getInputStream();
             OutputStream outputStream = new FileOutputStream(downloadedFile);
             byte[] buffer = new byte[1024];
diff --git a/src/main/java/com/dji/sample/territory/utils/CoordinateSystemUtil.java b/src/main/java/com/dji/sample/territory/utils/CoordinateSystemUtil.java
new file mode 100644
index 0000000..eff1297
--- /dev/null
+++ b/src/main/java/com/dji/sample/territory/utils/CoordinateSystemUtil.java
@@ -0,0 +1,88 @@
+package com.dji.sample.territory.utils;
+
+import org.geotools.geometry.jts.JTS;
+import org.geotools.referencing.CRS;
+import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.io.WKTReader;
+import org.opengis.referencing.FactoryException;
+import org.opengis.referencing.crs.CRSAuthorityFactory;
+import org.opengis.referencing.crs.CoordinateReferenceSystem;
+import org.opengis.referencing.operation.MathTransform;
+import org.opengis.referencing.operation.TransformException;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.Point;
+
+
+public class CoordinateSystemUtil {
+    public static Geometry pointCGCStoWGS(Double lot, Double lat) {
+        String wkt = "POINT (" + lot + " " + lat + ")";
+        Geometry source = createGeometry(wkt, 4527);
+        return coordinateTransform(source, 4326);
+    }
+
+    public static Geometry pointWGStoCGCS(Double lot, Double lat) {
+        String wkt = "POINT (" + lot + " " + lat + ")";
+        Geometry source = createGeometry(wkt, 4326);
+        return coordinateTransform(source, 4527);
+    }
+
+    public static String poylonWGStoCGCS(String poylon) {
+        Geometry source = createGeometry(poylon, 4326);
+        Geometry transformedGeometry = coordinateTransform(source, 4527);
+        return transformedGeometry.toText();
+    }
+
+    public static String poylonCGCStoWGS(String poylon) {
+        Geometry source = createGeometry(poylon, 4527);
+        Geometry transformedGeometry = coordinateTransform(source, 4326);
+        return transformedGeometry.toText();
+    }
+
+    public static double[] extractCoordinates(Geometry geometry) {
+        // 如果是点类型的几何对象,则直接提取坐标
+        if (geometry instanceof Point) {
+            Coordinate coordinate = geometry.getCoordinate();
+            return new double[]{coordinate.getX(), coordinate.getY()};
+        } else {
+            // 如果不是点类型,则返回 null 或者根据需要处理其他几何对象类型
+            return null;
+        }
+    }
+
+    // 格式化坐标值,保留指定小数位数
+    public static String formatCoordinate(double coordinate) {
+        return String.format("%.15f", coordinate).replaceAll("\\.?0*$", "");
+    }
+
+    public static Geometry createGeometry(String wkt, int srid) {
+        try {
+            WKTReader reader = new WKTReader();
+            Geometry geometry = reader.read(wkt);
+            geometry.setSRID(srid);
+            return geometry;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static Geometry coordinateTransform(Geometry sourceGeometry, int targetSrid) {
+        if (sourceGeometry == null || sourceGeometry.getSRID() == 0 || targetSrid == 0) {
+            return null;
+        }
+        try {
+            CRSAuthorityFactory factory = CRS.getAuthorityFactory(true);
+            CoordinateReferenceSystem source = factory.createCoordinateReferenceSystem("EPSG:" + sourceGeometry.getSRID());
+            CoordinateReferenceSystem target = factory.createCoordinateReferenceSystem("EPSG:" + targetSrid);
+            MathTransform transform = CRS.findMathTransform(source, target, true);
+            Geometry res = JTS.transform(sourceGeometry, transform);
+            if (res != null) {
+                res.setSRID(targetSrid);
+            }
+            return res;
+        } catch (FactoryException | TransformException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/dji/sample/territory/utils/WaterMark.java b/src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
similarity index 94%
rename from src/main/java/com/dji/sample/territory/utils/WaterMark.java
rename to src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
index 3fb012a..359ab80 100644
--- a/src/main/java/com/dji/sample/territory/utils/WaterMark.java
+++ b/src/main/java/com/dji/sample/territory/utils/WaterMarkUtil.java
@@ -4,18 +4,14 @@
 import java.awt.*;
 import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
 import static com.dji.sample.territory.utils.ImgZipUtil.compressImageAndGetFile;
 
-public class WaterMark {
+public class WaterMarkUtil {
     /**
      * 将图片加上水印并压缩
      *
@@ -36,7 +32,7 @@
         try {
             originalImage = ImageIO.read(originalImageFile);
         } catch (IOException e) {
-            throw new IllegalArgumentException("读取图片失败"+e.getMessage());
+            throw new IllegalArgumentException("读取图片失败" + e.getMessage());
         }
 
         // 创建 Graphics2D 对象以在图像上绘制水印
@@ -91,15 +87,15 @@
         // 释放 Graphics2D 对象
         g2d.dispose();
         // 保存添加水印后的图片
-        File outputFile = new File(path + "mark.jpg");
+        File outputFile = File.createTempFile("mark", ".jpg");
         File originalImageFiles = new File(outputFile.toURI());
-        float compressionQuality = 0.5f; // 0.0 - 1.0, higher value means better quality
-        File compressedImageFile = compressImageAndGetFile(originalImageFiles, compressionQuality);
         try {
             ImageIO.write(originalImage, "jpg", outputFile);
         } catch (IOException e) {
             throw new IllegalArgumentException("水印图片保存失败");
         }
+        float compressionQuality = 0.5f; // 0.0 - 1.0, higher value means better quality
+        File compressedImageFile = compressImageAndGetFile(originalImageFiles, compressionQuality);
         return compressedImageFile;
     }
 
diff --git a/src/main/resources/template/wpmz/waylines.wpml b/src/main/resources/template/wpmz/waylines.wpml
index 011399d..95d8a60 100644
--- a/src/main/resources/template/wpmz/waylines.wpml
+++ b/src/main/resources/template/wpmz/waylines.wpml
@@ -27,7 +27,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.86,28.6203
+              115.96365555439534,29.716475941547785
             </coordinates>
           </Point>
           <wpml:index>0</wpml:index>
@@ -58,7 +58,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh0</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH9</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -85,7 +85,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.86,28.6142
+              115.96365555439534,29.713866368623894
             </coordinates>
           </Point>
           <wpml:index>1</wpml:index>
@@ -116,7 +116,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh0</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH9</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -143,7 +143,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8664,28.6142
+              115.9660562906906,29.713866368623894
             </coordinates>
           </Point>
           <wpml:index>2</wpml:index>
@@ -174,7 +174,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh0</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH9</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -201,7 +201,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8664,28.6203
+              115.9660562906906,29.716475941547785
             </coordinates>
           </Point>
           <wpml:index>3</wpml:index>
@@ -232,7 +232,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh0</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH9</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -259,7 +259,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8643,28.6357
+              116.03519853650467,29.734985791781188
             </coordinates>
           </Point>
           <wpml:index>4</wpml:index>
@@ -290,7 +290,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh1</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH30</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -317,7 +317,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8643,28.6331
+              116.03519853650467,29.734260467123622
             </coordinates>
           </Point>
           <wpml:index>5</wpml:index>
@@ -348,7 +348,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh1</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH30</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -375,7 +375,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.867,28.6331
+              116.03584879735196,29.734260467123622
             </coordinates>
           </Point>
           <wpml:index>6</wpml:index>
@@ -406,7 +406,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh1</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH30</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -433,7 +433,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.867,28.6357
+              116.03584879735196,29.734985791781188
             </coordinates>
           </Point>
           <wpml:index>7</wpml:index>
@@ -464,7 +464,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh1</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH30</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -491,7 +491,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.841,28.6317
+              116.05430666373506,29.73297437675559
             </coordinates>
           </Point>
           <wpml:index>8</wpml:index>
@@ -522,7 +522,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh2</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH128</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -549,7 +549,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.841,28.6305
+              116.05430666373506,29.73237741786269
             </coordinates>
           </Point>
           <wpml:index>9</wpml:index>
@@ -580,7 +580,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh2</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH128</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -607,7 +607,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.844,28.6305
+              116.05524626576859,29.73237741786269
             </coordinates>
           </Point>
           <wpml:index>10</wpml:index>
@@ -638,7 +638,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh2</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH128</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -665,7 +665,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.844,28.6317
+              116.05524626576859,29.73297437675559
             </coordinates>
           </Point>
           <wpml:index>11</wpml:index>
@@ -696,7 +696,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh2</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH128</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -723,7 +723,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8381,28.6187
+              116.06053864502329,29.72938770837061
             </coordinates>
           </Point>
           <wpml:index>12</wpml:index>
@@ -754,7 +754,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh3</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH62</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -781,7 +781,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8381,28.6161
+              116.06053864502329,29.72834046052801
             </coordinates>
           </Point>
           <wpml:index>13</wpml:index>
@@ -812,7 +812,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh3</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH62</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -839,7 +839,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8413,28.6161
+              116.06152007665057,29.72834046052801
             </coordinates>
           </Point>
           <wpml:index>14</wpml:index>
@@ -870,7 +870,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh3</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH62</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -897,7 +897,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8413,28.6187
+              116.06152007665057,29.72938770837061
             </coordinates>
           </Point>
           <wpml:index>15</wpml:index>
@@ -928,7 +928,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh3</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH62</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -955,7 +955,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8059,28.6239
+              116.05896077289664,29.723607391068132
             </coordinates>
           </Point>
           <wpml:index>16</wpml:index>
@@ -986,7 +986,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh4</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH95</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1013,7 +1013,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8059,28.622
+              116.05896077289664,29.723260373485036
             </coordinates>
           </Point>
           <wpml:index>17</wpml:index>
@@ -1044,7 +1044,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh4</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH95</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1071,7 +1071,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8102,28.622
+              116.06024543429979,29.723260373485036
             </coordinates>
           </Point>
           <wpml:index>18</wpml:index>
@@ -1102,7 +1102,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh4</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH95</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1129,7 +1129,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8102,28.6239
+              116.06024543429979,29.723607391068132
             </coordinates>
           </Point>
           <wpml:index>19</wpml:index>
@@ -1160,7 +1160,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh4</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH95</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1187,7 +1187,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8297,28.6659
+              116.07328744724568,29.732003064280082
             </coordinates>
           </Point>
           <wpml:index>20</wpml:index>
@@ -1218,7 +1218,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh5</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH71</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1245,7 +1245,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8297,28.6604
+              116.07328744724568,29.731482745847817
             </coordinates>
           </Point>
           <wpml:index>21</wpml:index>
@@ -1276,7 +1276,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh5</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH71</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1303,7 +1303,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.837,28.6604
+              116.07475745687982,29.731482745847817
             </coordinates>
           </Point>
           <wpml:index>22</wpml:index>
@@ -1334,7 +1334,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh5</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH71</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1361,7 +1361,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.837,28.6659
+              116.07475745687982,29.732003064280082
             </coordinates>
           </Point>
           <wpml:index>23</wpml:index>
@@ -1392,7 +1392,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh5</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH71</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1419,7 +1419,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8575,28.6791
+              116.07472459298403,29.733154079670935
             </coordinates>
           </Point>
           <wpml:index>24</wpml:index>
@@ -1450,7 +1450,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh6</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH45</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1477,7 +1477,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8575,28.6762
+              116.07472459298403,29.73282269004129
             </coordinates>
           </Point>
           <wpml:index>25</wpml:index>
@@ -1508,7 +1508,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh6</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH45</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1535,7 +1535,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8637,28.6762
+              116.07543090289826,29.73282269004129
             </coordinates>
           </Point>
           <wpml:index>26</wpml:index>
@@ -1566,7 +1566,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh6</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH45</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1593,7 +1593,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8637,28.6791
+              116.07543090289826,29.733154079670935
             </coordinates>
           </Point>
           <wpml:index>27</wpml:index>
@@ -1624,7 +1624,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh6</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH45</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1651,7 +1651,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.9122,28.6232
+              116.05774811006198,29.747054068573668
             </coordinates>
           </Point>
           <wpml:index>28</wpml:index>
@@ -1682,7 +1682,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh7</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH58</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1709,7 +1709,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.9122,28.6212
+              116.05774811006198,29.746637525892087
             </coordinates>
           </Point>
           <wpml:index>29</wpml:index>
@@ -1740,7 +1740,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh7</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH58</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1767,7 +1767,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.916,28.6212
+              116.05837186812666,29.746637525892087
             </coordinates>
           </Point>
           <wpml:index>30</wpml:index>
@@ -1798,7 +1798,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh7</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH58</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1825,7 +1825,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.916,28.6232
+              116.05837186812666,29.747054068573668
             </coordinates>
           </Point>
           <wpml:index>31</wpml:index>
@@ -1856,7 +1856,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh7</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH58</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1883,7 +1883,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8834,28.5772
+              116.0613850080327,29.7505885618751
             </coordinates>
           </Point>
           <wpml:index>32</wpml:index>
@@ -1914,7 +1914,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh8</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH144</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1941,7 +1941,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8834,28.5721
+              116.0613850080327,29.74988220476916
             </coordinates>
           </Point>
           <wpml:index>33</wpml:index>
@@ -1972,7 +1972,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh8</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH144</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -1999,7 +1999,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8875,28.5721
+              116.06199884978851,29.74988220476916
             </coordinates>
           </Point>
           <wpml:index>34</wpml:index>
@@ -2030,7 +2030,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh8</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH144</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -2057,7 +2057,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8875,28.5772
+              116.06199884978851,29.7505885618751
             </coordinates>
           </Point>
           <wpml:index>35</wpml:index>
@@ -2088,7 +2088,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh8</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH144</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -2115,7 +2115,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8576,28.5751
+              116.05308705717263,29.74332811660386
             </coordinates>
           </Point>
           <wpml:index>36</wpml:index>
@@ -2146,7 +2146,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh9</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH8</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -2173,7 +2173,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8576,28.5729
+              116.05308705717263,29.743149036452856
             </coordinates>
           </Point>
           <wpml:index>37</wpml:index>
@@ -2204,7 +2204,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh9</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH8</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -2231,7 +2231,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8591,28.5729
+              116.05327607244435,29.743149036452856
             </coordinates>
           </Point>
           <wpml:index>38</wpml:index>
@@ -2262,7 +2262,7 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh9</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH8</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
@@ -2289,7 +2289,7 @@
         <Placemark>
           <Point>
             <coordinates>
-              115.8591,28.5751
+              116.05327607244435,29.74332811660386
             </coordinates>
           </Point>
           <wpml:index>39</wpml:index>
@@ -2320,7 +2320,239 @@
               <wpml:actionActuatorFunc>takePhoto</wpml:actionActuatorFunc>
               <wpml:actionActuatorFuncParam>
               <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
-                <wpml:fileSuffix>航点dkbh9</wpml:fileSuffix>
+                <wpml:fileSuffix>航点P1BH8</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>
+              116.04681246268414,29.749830419836638
+            </coordinates>
+          </Point>
+          <wpml:index>40</wpml:index>
+          <wpml:executeHeight>100</wpml:executeHeight>
+          <wpml:waypointSpeed>10</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>40</wpml:actionGroupId>
+            <wpml:actionGroupStartIndex>40</wpml:actionGroupStartIndex>
+            <wpml:actionGroupEndIndex>40</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>航点P1BH18</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>
+              116.04681246268414,29.74952429317054
+            </coordinates>
+          </Point>
+          <wpml:index>41</wpml:index>
+          <wpml:executeHeight>100</wpml:executeHeight>
+          <wpml:waypointSpeed>10</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>41</wpml:actionGroupId>
+            <wpml:actionGroupStartIndex>41</wpml:actionGroupStartIndex>
+            <wpml:actionGroupEndIndex>41</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>航点P1BH18</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>
+              116.04726448674698,29.74952429317054
+            </coordinates>
+          </Point>
+          <wpml:index>42</wpml:index>
+          <wpml:executeHeight>100</wpml:executeHeight>
+          <wpml:waypointSpeed>10</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>42</wpml:actionGroupId>
+            <wpml:actionGroupStartIndex>42</wpml:actionGroupStartIndex>
+            <wpml:actionGroupEndIndex>42</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>航点P1BH18</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>
+              116.04726448674698,29.749830419836638
+            </coordinates>
+          </Point>
+          <wpml:index>43</wpml:index>
+          <wpml:executeHeight>100</wpml:executeHeight>
+          <wpml:waypointSpeed>10</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>43</wpml:actionGroupId>
+            <wpml:actionGroupStartIndex>43</wpml:actionGroupStartIndex>
+            <wpml:actionGroupEndIndex>43</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>航点P1BH18</wpml:fileSuffix>
                 <wpml:payloadLensIndex>wide,ir</wpml:payloadLensIndex>
                 <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
               </wpml:actionActuatorFuncParam>
diff --git a/src/main/resources/tmp/mark.jpg b/src/main/resources/tmp/mark.jpg
deleted file mode 100644
index 024c101..0000000
--- a/src/main/resources/tmp/mark.jpg
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/tmp/tmp.jpg b/src/main/resources/tmp/tmp.jpg
deleted file mode 100644
index 3df14e6..0000000
--- a/src/main/resources/tmp/tmp.jpg
+++ /dev/null
Binary files differ

--
Gitblit v1.9.3