Răsfoiți Sursa

飞行路线设置

DESKTOP-2K9OVK9\siwei 1 lună în urmă
părinte
comite
c7d209c0e1

+ 10 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/gdbh/TGdbhFlightBatchDto.java

@@ -25,6 +25,8 @@ public class TGdbhFlightBatchDto {
     private String tilt;
     //高度
     private String height;
+    //刷新飞行 0 刷新
+    private String refresh;
 
     public String getId() {
         return id;
@@ -105,4 +107,12 @@ public class TGdbhFlightBatchDto {
     public void setHeight(String height) {
         this.height = height;
     }
+
+    public String getRefresh() {
+        return refresh;
+    }
+
+    public void setRefresh(String refresh) {
+        this.refresh = refresh;
+    }
 }

+ 95 - 73
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/impl/TGdbhGdServiceImpl.java

@@ -184,87 +184,109 @@ public class TGdbhGdServiceImpl implements ITGdbhGdService {
 
 
     private void writeFpf(TGdbhFlightBatchDto tGdbhFlightBatchDto, List<TGdbhFlightDto> flightDtoList, String filePathString) {
-        String speed = "10";
-        String heading = "0.000001";
-        String tilt = "0.100000000000000006";
-        if (null != tGdbhFlightBatchDto) {
-            if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getTilt())) {
-                tilt = tGdbhFlightBatchDto.getTilt();
-            }
-            if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getHeading())) {
-                heading = tGdbhFlightBatchDto.getHeading();
-            }
-            if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getSpeed())) {
-                speed = tGdbhFlightBatchDto.getSpeed();
-            }
-        }
         File filePath = new File(filePathString);
-        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
-            writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
-            writer.newLine(); // 写入换行
-            writer.write("<SceneRoute xmlns=\"http://www.supermap.com.cn/ugc60\">");
-            writer.newLine(); // 写入换行
-            writer.write("<route name=\"飞行路线_1\" speed=\"" + speed + "\" lineType=\"0\" showroutestop=\"True\" showrouteline=\"True\" altitudefree=\"False\" headingfree=\"False\" tiltfree=\"False\" flycircle=\"False\" alongline=\"False\">");
-            writer.newLine(); // 写入换行
-            writer.write("<style>");
-            writer.newLine(); // 写入换行
-            writer.write("<geostyle3d>");
-            writer.newLine(); // 写入换行
-            writer.write("<linecolor>RGBA(147,112,219,100)</linecolor>");
-            writer.newLine(); // 写入换行
-            writer.write("<linewidth>2</linewidth>");
-            writer.newLine(); // 写入换行
-            writer.write("<altitudeMode>Absolute</altitudeMode>");
-            writer.newLine(); // 写入换行
-            writer.write("<bottomAltitude>0.00</bottomAltitude>");
-            writer.newLine(); // 写入换行
-            writer.write("</geostyle3d>");
-            writer.newLine(); // 写入换行
-            writer.write("</style>");
-            writer.newLine(); // 写入换行
-            int len = flightDtoList.size();
-            boolean qiehuan = false;
-            String writetilt = tilt;
-            String writeheading = heading;
+        if ("0".equals(tGdbhFlightBatchDto.getRefresh()) || (!filePath.exists())) {
+            String speed = "10";
+            String heading = "0.000001";
+            String tilt = "0.100000000000000006";
+            if (null != tGdbhFlightBatchDto) {
+                if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getTilt())) {
+                    tilt = tGdbhFlightBatchDto.getTilt();
+                }
+                if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getHeading())) {
+                    heading = tGdbhFlightBatchDto.getHeading();
+                }
+                if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getSpeed())) {
+                    speed = tGdbhFlightBatchDto.getSpeed();
+                }
+            }
 
-            TGdbhFlightDto dto_0 = flightDtoList.get(0);
-            TGdbhFlightDto dto_1 = flightDtoList.get(1);
-            Double dr_mr = Double.valueOf(tGdbhFlightMapper.stAzimuth(dto_0.getLongitude(), dto_0.getLatitude(), dto_1.getLongitude(), dto_1.getLatitude()));
+            try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
+                writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+                writer.newLine(); // 写入换行
+                writer.write("<SceneRoute xmlns=\"http://www.supermap.com.cn/ugc60\">");
+                writer.newLine(); // 写入换行
+                writer.write("<route name=\"飞行路线_1\" speed=\"" + speed + "\" lineType=\"0\" showroutestop=\"True\" showrouteline=\"True\" altitudefree=\"False\" headingfree=\"False\" tiltfree=\"False\" flycircle=\"False\" alongline=\"False\">");
+                writer.newLine(); // 写入换行
+                writer.write("<style>");
+                writer.newLine(); // 写入换行
+                writer.write("<geostyle3d>");
+                writer.newLine(); // 写入换行
+                writer.write("<linecolor>RGBA(147,112,219,100)</linecolor>");
+                writer.newLine(); // 写入换行
+                writer.write("<linewidth>2</linewidth>");
+                writer.newLine(); // 写入换行
+                writer.write("<altitudeMode>Absolute</altitudeMode>");
+                writer.newLine(); // 写入换行
+                writer.write("<bottomAltitude>0.00</bottomAltitude>");
+                writer.newLine(); // 写入换行
+                writer.write("</geostyle3d>");
+                writer.newLine(); // 写入换行
+                writer.write("</style>");
+                writer.newLine(); // 写入换行
+                int len = flightDtoList.size();
+                boolean qiehuan = false;
+                String writetilt = tilt;
+                String writeheading = heading;
+
+                TGdbhFlightDto dto_0 = flightDtoList.get(0);
+                TGdbhFlightDto dto_1 = flightDtoList.get(1);
+                Double dr_mr = Double.valueOf(tGdbhFlightMapper.stAzimuth(dto_0.getLongitude(), dto_0.getLatitude(), dto_1.getLongitude(), dto_1.getLatitude()));
+
+                for (int i = 0; i < flightDtoList.size(); i++) {
+                    TGdbhFlightDto dto = flightDtoList.get(i);
+                    if (i > 0 && i + 1 < len) {
+                        TGdbhFlightDto dto_hou = flightDtoList.get(i + 1);
+                        Double dr_hou = Double.valueOf(tGdbhFlightMapper.stAzimuth(dto.getLongitude(), dto.getLatitude(), dto_hou.getLongitude(), dto_hou.getLatitude()));
+                        Double dr_hou4 = dr_hou;
+                        if (i + 5 <= len) {
+                            TGdbhFlightDto dto_hou2 = flightDtoList.get(i + 2);
+                            TGdbhFlightDto dto_hou3 = flightDtoList.get(i + 3);
+                            dr_hou4 = Double.valueOf(tGdbhFlightMapper.stAzimuth(dto_hou2.getLongitude(), dto_hou2.getLatitude(), dto_hou3.getLongitude(), dto_hou3.getLatitude()));
+                            if (dr_hou4 <= 10) {
+                                TGdbhFlightDto dto_hou4 = flightDtoList.get(i + 4);
+                                dr_hou4 = Double.valueOf(tGdbhFlightMapper.stAzimuth(dto_hou3.getLongitude(), dto_hou3.getLatitude(), dto_hou4.getLongitude(), dto_hou4.getLatitude()));
+                            }
+                        } else if (i + 5 > len) {
+                            dr_hou4 = dr_hou + 15;
+                        }
 
-            for (int i = 0; i < flightDtoList.size(); i++) {
-                TGdbhFlightDto dto = flightDtoList.get(i);
-                if (i > 0 && i + 1 < len) {
-                    TGdbhFlightDto dto_hou = flightDtoList.get(i + 1);
-                    Double dr_hou = Double.valueOf(tGdbhFlightMapper.stAzimuth(dto.getLongitude(), dto.getLatitude(), dto_hou.getLongitude(), dto_hou.getLatitude()));
-                    Double dr = Math.abs(dr_mr - dr_hou);
-                    if (dr > 10 && dr < 160) {
-                        writetilt = "0.100000000000000006";
-                        writeheading = heading;
-                    } else if (dr > 160) {
+                        Double dr4 = Math.abs(dr_hou - dr_hou4);
+                        if (dr4 > 10) {
+                            writetilt = "0.100000000000000006";
+                            writeheading = heading;
+                        } else {
+                            Double dr = Math.abs(dr_mr - dr_hou);
+                            if (dr > 10 && dr < 160) {
+                                writetilt = "0.100000000000000006";
+                                writeheading = heading;
+                            } else if (dr > 160) {
 //                        writetilt = (360 - Double.parseDouble(tilt)) + "";
-                        writeheading = "180.0";
-                        writetilt = tilt;
-                    } else {
-                        writetilt = tilt;
-                        writeheading = heading;
+                                writeheading = "180.0";
+                                writetilt = tilt;
+                            } else {
+                                writetilt = tilt;
+                                writeheading = heading;
+                            }
+                        }
                     }
-                }
-                String height = dto.getHeight();
-                if (null != tGdbhFlightBatchDto) {
-                    if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getHeight())) {
-                        height = tGdbhFlightBatchDto.getHeight();
+                    String height = dto.getHeight();
+                    if (null != tGdbhFlightBatchDto) {
+                        if (StringUtils.isNotEmpty(tGdbhFlightBatchDto.getHeight())) {
+                            height = tGdbhFlightBatchDto.getHeight();
+                        }
                     }
+                    String fpf = "<routestop name=\"" + dto.getPhoto_name() + "\" speed=\"0\" excluded=\"False\" viewType=\"camera\">" + "<camera>" + "<longitude>" + dto.getLongitude() + "</longitude>" + "<latitude>" + dto.getLatitude() + "</latitude>" + "<altitude>" + height + "</altitude>" + "<heading>" + writeheading + "</heading>" + "<tilt>" + writetilt + "</tilt>" + "<altitudeMode>Absolute</altitudeMode>" + "</camera>" + "<style>" + "<geostyle3d>" + "<icon/>" + "<markersize>4.8</markersize>" + "<markericonscale>1</markericonscale>" + "<markercolor>RGBA(255,255,255,255)</markercolor>" + "</geostyle3d>" + "</style>" + "<setting>" + "<turnTime>1.5</turnTime>" + "<turnSlowly>False</turnSlowly>" + "<stopPlayMode>StopPause</stopPlayMode>" + "<autoPlay>False</autoPlay>" + "<pauseTime>0</pauseTime>" + "<angularSpeed>1</angularSpeed>" + "</setting>" + "</routestop>";
+                    writer.write(fpf);
+                    writer.newLine(); // 写入换行
                 }
-                String fpf = "<routestop name=\"" + dto.getPhoto_name() + "\" speed=\"0\" excluded=\"False\" viewType=\"camera\">" + "<camera>" + "<longitude>" + dto.getLongitude() + "</longitude>" + "<latitude>" + dto.getLatitude() + "</latitude>" + "<altitude>" + height + "</altitude>" + "<heading>" + writeheading + "</heading>" + "<tilt>" + writetilt + "</tilt>" + "<altitudeMode>Absolute</altitudeMode>" + "</camera>" + "<style>" + "<geostyle3d>" + "<icon/>" + "<markersize>4.8</markersize>" + "<markericonscale>1</markericonscale>" + "<markercolor>RGBA(255,255,255,255)</markercolor>" + "</geostyle3d>" + "</style>" + "<setting>" + "<turnTime>1.5</turnTime>" + "<turnSlowly>False</turnSlowly>" + "<stopPlayMode>StopPause</stopPlayMode>" + "<autoPlay>False</autoPlay>" + "<pauseTime>0</pauseTime>" + "<angularSpeed>1</angularSpeed>" + "</setting>" + "</routestop>";
-                writer.write(fpf);
-                writer.newLine(); // 写入换行
+                writer.write("</route>");
+                writer.newLine(); // 写入换
+                writer.write("</SceneRoute>");
+                System.out.println("File written successfully!");
+            } catch (IOException e) {
+                System.err.println("Error writing file: " + e.getMessage());
             }
-            writer.write("</route>");
-            writer.newLine(); // 写入换
-            writer.write("</SceneRoute>");
-            System.out.println("File written successfully!");
-        } catch (IOException e) {
-            System.err.println("Error writing file: " + e.getMessage());
         }
     }