From b0da63410a7aaf64b11183c95b3da38013a6457b Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 28 Oct 2025 15:05:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java | 48 +++++++++++++++---------------------------------
1 files changed, 15 insertions(+), 33 deletions(-)
diff --git a/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java b/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
index cff95f2..b888454 100644
--- a/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/RouteFileUtils.java
@@ -57,25 +57,12 @@
/**
* 生成航线 KMZ 文件
*
- * @param fileName 文件名
- * @param kmlParams 参数对象
- * @return 本地文件路径
- */
- public static String buildKmz(String fileName, KmlParams kmlParams) {
- KmlInfo kmlInfo = buildKml(kmlParams);
- KmlInfo wpmlInfo = buildWpml(kmlParams);
- return buildKmz(fileName, kmlInfo, wpmlInfo);
- }
-
- /**
- * 生成航线 KMZ 文件
- *
* @param fileName 文件名
* @param kmlInfo kml 文件信息
* @param wpmlInfo wpml 文件信息
* @return 本地文件路径
*/
- public static String buildKmz(String fileName, KmlInfo kmlInfo, KmlInfo wpmlInfo) {
+ public static String buildKmz(String fileName, KmlInfo kmlInfo, KmlInfo wpmlInfo, String kmzFilePath) {
XStream xStream = new XStream(new DomDriver());
xStream.processAnnotations(KmlInfo.class);
xStream.addImplicitCollection(KmlActionGroup.class, "action");
@@ -83,7 +70,7 @@
String kml = XML_HEADER + xStream.toXML(kmlInfo);
String wpml = XML_HEADER + xStream.toXML(wpmlInfo);
- try (FileOutputStream fileOutputStream = new FileOutputStream(LOCAL_KMZ_FILE_PATH + fileName + ".kmz");
+ try (FileOutputStream fileOutputStream = new FileOutputStream(kmzFilePath + fileName + ".kmz");
ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream)) {
zipOutputStream.setLevel(0); // 0 表示不压缩,存储方式
@@ -96,10 +83,10 @@
} catch (Exception e) {
throw new RuntimeException(e);
}
- return LOCAL_KMZ_FILE_PATH + fileName + ".kmz";
+ return kmzFilePath + fileName + ".kmz";
}
- private static void buildZipFile(String name, ZipOutputStream zipOutputStream, String content) throws IOException {
+ public static void buildZipFile(String name, ZipOutputStream zipOutputStream, String content) throws IOException {
ZipEntry kmlEntry = new ZipEntry(name);
zipOutputStream.putNextEntry(kmlEntry);
// 将内容写入 ZIP 条目
@@ -112,7 +99,6 @@
}
zipOutputStream.closeEntry(); // 关闭条目
}
-
public static KmlInfo buildKml(KmlParams kmlParams) {
KmlInfo kmlInfo = new KmlInfo();
@@ -129,7 +115,7 @@
public static KmlDocument buildKmlDocument(String fileType, KmlParams kmlParams) {
KmlDocument kmlDocument = new KmlDocument();
if (StringUtils.equals(fileType, FileTypeConstants.KML)) {
- kmlDocument.setAuthor("Cleaner");
+ kmlDocument.setAuthor("Ard-Creator");
kmlDocument.setCreateTime(String.valueOf(DateUtil.current()));
kmlDocument.setUpdateTime(String.valueOf(DateUtil.current()));
}
@@ -140,7 +126,11 @@
public static KmlMissionConfig buildKmlMissionConfig(KmlParams kmlParams) {
KmlMissionConfig kmlMissionConfig = new KmlMissionConfig();
- kmlMissionConfig.setFlyToWayLineMode(FlyToWaylineModeEnums.SAFELY.getValue());
+ if (kmlParams.getFlyToWaylineMode() != null){
+ kmlMissionConfig.setFlyToWayLineMode(kmlParams.getFlyToWaylineMode());
+ }else {
+ kmlMissionConfig.setFlyToWayLineMode(FlyToWaylineModeEnums.SAFELY.getValue());
+ }
kmlMissionConfig.setFinishAction(kmlParams.getFinishAction());
if (StringUtils.isNotBlank(kmlParams.getExitOnRcLostAction())) {
kmlMissionConfig.setExitOnRCLost(ExitOnRCLostEnums.EXECUTE_LOST_ACTION.getValue());
@@ -149,7 +139,11 @@
kmlMissionConfig.setExitOnRCLost(ExitOnRCLostEnums.GO_CONTINUE.getValue());
}
kmlMissionConfig.setTakeOffSecurityHeight("20");
- kmlMissionConfig.setGlobalTransitionalSpeed("15");
+ if (kmlParams.getGlobalTransitionalSpeed() != null){
+ kmlMissionConfig.setGlobalTransitionalSpeed(String.valueOf(kmlParams.getGlobalTransitionalSpeed()));
+ }else {
+ kmlMissionConfig.setGlobalTransitionalSpeed("15");
+ }
kmlMissionConfig.setGlobalRTHHeight("100");
kmlMissionConfig.setTakeOffRefPoint(kmlParams.getTakeOffRefPoint());
kmlMissionConfig.setDroneInfo(buildKmlDroneInfo(kmlParams.getDroneType(), kmlParams.getSubDroneType()));
@@ -173,9 +167,7 @@
kmlPayloadInfo.setPayloadEnumValue(String.valueOf(payloadType));
kmlPayloadInfo.setPayloadPositionIndex(String.valueOf(payloadPosition));
return kmlPayloadInfo;
-
}
-
public static KmlFolder buildKmlFolder(String fileType, KmlParams kmlParams) {
KmlFolder kmlFolder = new KmlFolder();
@@ -245,7 +237,6 @@
return kmlFolder;
}
-
public static KmlWayLineCoordinateSysParam buildKmlWayLineCoordinateSysParam(String templateType) {
KmlWayLineCoordinateSysParam kmlWayLineCoordinateSysParam = new KmlWayLineCoordinateSysParam();
kmlWayLineCoordinateSysParam.setCoordinateMode("WGS84");
@@ -275,7 +266,6 @@
// 0: 不上色 1: 真彩上色
kmlPayloadParam.setModelColoringEnable("1");
kmlPayloadParam.setImageFormat(kmlParams.getImageFormat());
-
return kmlPayloadParam;
}
@@ -290,7 +280,6 @@
}
kmlGlobalWaypointHeadingParam.setWaypointHeadingPathMode(WaypointHeadingPathModeEnums.FOLLOW_BAD_ARC.getValue());
return kmlGlobalWaypointHeadingParam;
-
}
public static KmlPlacemark buildKmlPlacemark(RoutePointInfo routePointInfo, KmlParams kmlParams, String fileType) {
@@ -298,7 +287,6 @@
kmlPlacemark.setIsRisky("0");
kmlPlacemark.setKmlPoint(buildKmlPoint(String.valueOf(routePointInfo.getLongitude()), String.valueOf(routePointInfo.getLatitude())));
kmlPlacemark.setIndex(String.valueOf(routePointInfo.getRoutePointIndex()));
-
handleHeight(routePointInfo, kmlParams, fileType, kmlPlacemark);
handleSpeed(routePointInfo, kmlParams, fileType, kmlPlacemark);
handleWaypointHeadingParam(routePointInfo, kmlParams, fileType, kmlPlacemark);
@@ -356,7 +344,6 @@
private static KmlPolygon buildKmlPolygon(List<CoordinatePointReq> coordinatePointReqList) {
KmlPolygon kmlPolygon = new KmlPolygon();
KmlLinearRing kmlLinearRing = new KmlLinearRing();
-
String coordinates = coordinatePointReqList.stream().map(point -> point.getLongitude() + "," + point.getLatitude() + "," + point.getHeight())
.collect(Collectors.joining(", "));
kmlLinearRing.setCoordinates(StringUtils.join(coordinates, " "));
@@ -405,9 +392,7 @@
kmlPlacemark.setWaypointHeadingParam(buildKmlWaypointHeadingParam(globalWaypointHeading.getWaypointHeadingMode(), globalWaypointHeading.getWaypointHeadingAngle(), globalWaypointHeading.getWaypointPoiPoint()));
}
}
-
}
-
private static void handleSpeed(RoutePointInfo routePointInfo, KmlParams kmlParams, String fileType, KmlPlacemark kmlPlacemark) {
if (ObjectUtil.isNotEmpty(routePointInfo.getSpeed())) {
@@ -484,7 +469,6 @@
kmlActionGroup.setActionGroupEndIndex(String.valueOf(ObjectUtil.isNotNull(routePointInfo.getEndIntervalRouteIndex()) ?
routePointInfo.getEndIntervalRouteIndex() : routePointInfo.getRoutePointIndex()));
kmlActionGroup.setActionGroupMode(ActionGroupModeEnums.SEQUENCE.getValue());
-
String actionTriggerType = ActionTriggerTypeEnums.REACH_POINT.getValue();
Double actionTriggerParam = 0.0;
if (ObjectUtil.isNotNull(routePointInfo.getTimeInterval())) {
@@ -494,7 +478,6 @@
actionTriggerType = ActionTriggerTypeEnums.MULTIPLE_DISTANCE.getValue();
actionTriggerParam = routePointInfo.getDistanceInterval();
}
-
kmlActionGroup.setActionTrigger(buildKmlActionTrigger(actionTriggerType, actionTriggerParam));
List<KmlAction> kmlActionList = new ArrayList<>();
for (PointActionReq pointActionReq : routePointInfo.getActions()) {
@@ -515,7 +498,6 @@
} else if (ObjectUtil.isNotNull(pointActionReq.getStopRecord()) && pointActionReq.getStopRecord()) {
kmlActionList.add(buildKmlAction(String.valueOf(pointActionReq.getActionIndex()), ActionActuatorFuncEnums.STOP_RECORD.getValue(), pointActionReq, kmlParams));
}
-
}
kmlActionGroup.setAction(kmlActionList);
return kmlActionGroup;
--
Gitblit v1.9.3