Xiajijian
2026-03-07 1f6fafd5c0d26ac863e7d48b40c802fa962b07cb
1. 修改生成kmz文件核心代码,海拔高度相关信息。
4 files modified
45 ■■■■■ changed files
ard-route/src/main/java/com/ard/route/domain/djuav/UavRouteReq.java 9 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/djuav/kml/KmlParams.java 10 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/util/InitializationUtils.java 1 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java 25 ●●●●● patch | view | raw | blame | history
ard-route/src/main/java/com/ard/route/domain/djuav/UavRouteReq.java
@@ -143,4 +143,13 @@
     */
    private String mappingHeadingMode;
    /**
     * 航点高程参考平面
     * EGM96:使用海拔高编辑
     * relativeToStartPoint:使用相对点的高度进行编辑
     * aboveGroundLevel:使用地形数据,AGL下编辑(仅支持司空2平台)
     * realTimeFollowSurface: 使用实时仿地模式(仅用于建图航拍模版),仅支持M3E/M3T/M3M机型
     */
    private String heightMode;
}
ard-route/src/main/java/com/ard/route/domain/djuav/kml/KmlParams.java
@@ -110,5 +110,15 @@
     * 全局航线速度
     */
    private Double globalTransitionalSpeed;
    /**
     * 航点高程参考平面
     * EGM96:使用海拔高编辑
     * relativeToStartPoint:使用相对点的高度进行编辑
     * aboveGroundLevel:使用地形数据,AGL下编辑(仅支持司空2平台)
     * realTimeFollowSurface: 使用实时仿地模式(仅用于建图航拍模版),仅支持M3E/M3T/M3M机型
     */
    private String heightMode;
}
ard-route/src/main/java/com/ard/route/util/InitializationUtils.java
@@ -56,6 +56,7 @@
        }
        uavRouteReq.setWaypointTurnReq(waypointTurnReq);
        uavRouteReq.setGimbalPitchMode("usePointSetting");
        uavRouteReq.setHeightMode("EGM96");
        if (M350_RTK.getValue().equals(uavRouteReq.getDroneType())) {
            // 变焦数值加工
            buildZoom(uavRouteReq);
ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
@@ -143,7 +143,9 @@
        }else {
            kmlMissionConfig.setGlobalTransitionalSpeed("15");
        }
        kmlMissionConfig.setGlobalRTHHeight("100");
        if (kmlParams.getHeightMode().equals(HeightModeEnums.RELATIVE_TO_START_POINT.getValue())){
            kmlMissionConfig.setGlobalRTHHeight("100");
        }
        kmlMissionConfig.setTakeOffRefPoint(kmlParams.getTakeOffRefPoint());
        kmlMissionConfig.setDroneInfo(buildKmlDroneInfo(kmlParams.getDroneType(), kmlParams.getSubDroneType()));
        kmlMissionConfig.setPayloadInfo(buildKmlPayloadInfo(kmlParams.getPayloadType(), kmlParams.getPayloadPosition()));
@@ -175,13 +177,28 @@
        kmlFolder.setAutoFlightSpeed(String.valueOf(kmlParams.getAutoFlightSpeed()));
        if (StringUtils.equals(fileType, FileTypeConstants.KML)) {
            kmlFolder.setTemplateType(kmlParams.getTemplateType());
            kmlFolder.setWaylineCoordinateSysParam(buildKmlWayLineCoordinateSysParam(kmlParams.getTemplateType(), HeightModeEnums.RELATIVE_TO_START_POINT.getValue(),
                    String.valueOf(kmlParams.getGlobalHeight())));
            if (kmlParams.getHeightMode().equals(HeightModeEnums.RELATIVE_TO_START_POINT.getValue())){
                kmlFolder.setWaylineCoordinateSysParam(
                        buildKmlWayLineCoordinateSysParam(
                                kmlParams.getTemplateType(),
                                HeightModeEnums.RELATIVE_TO_START_POINT.getValue(),
                                String.valueOf(kmlParams.getGlobalHeight())));
            }else if(kmlParams.getHeightMode().equals(HeightModeEnums.EGM96.getValue())){
                kmlFolder.setWaylineCoordinateSysParam(
                        buildKmlWayLineCoordinateSysParam(
                                kmlParams.getTemplateType(),
                                HeightModeEnums.EGM96.getValue(),
                                String.valueOf(kmlParams.getGlobalHeight())));
            }
            kmlFolder.setPayloadParam(buildKmlPayloadParam(kmlParams));
        }
        if (StringUtils.equals(fileType, FileTypeConstants.WPML)) {
            kmlFolder.setWaylineId("0");
            kmlFolder.setExecuteHeightMode(ExecuteHeightModeEnums.RELATIVE_TO_START_POINT.getValue());
            if (kmlParams.getHeightMode().equals(HeightModeEnums.RELATIVE_TO_START_POINT.getValue())){
                kmlFolder.setExecuteHeightMode(ExecuteHeightModeEnums.RELATIVE_TO_START_POINT.getValue());
            } else if (kmlParams.getHeightMode().equals(HeightModeEnums.EGM96.getValue())) {
                kmlFolder.setExecuteHeightMode(ExecuteHeightModeEnums.WGS84.getValue());
            }
            if (CollectionUtil.isNotEmpty(kmlParams.getStartActionList())) {
                KmlActionGroup kmlActionGroup = new KmlActionGroup();
                kmlActionGroup.setAction(getKmlActionList(kmlParams.getStartActionList(), kmlParams));