package com.ard.route.util; import com.ard.route.domain.djuav.*; import com.ard.route.domain.sixhe.ArdRouteActions; import com.ard.route.domain.sixhe.ArdRouteChange; import com.ard.route.domain.sixhe.ArdRoutePoints; import java.util.ArrayList; import java.util.List; import static com.ard.route.enums.kml.DroneEnumValueEnums.M350_RTK; import static com.ard.route.util.ToolUtils.getDoublePoint; /** * 初始化数据 * 测试数据 */ public class InitializationUtils { // 禅思H20T 公倍数 private static final Double CHANSI_H20T = 23.76237623; // 禅思H20T 焦距值 private static final Double CHANSI_H20_FOCUS = 6.83; private static final String WAYPOINT_TURN_MODE_DEFAULT = "toPointAndStopWithDiscontinuityCurvature"; /** * 初始化KMZ 默认数据 */ public UavRouteReq initialization(UavRouteReq uavRouteReq){ uavRouteReq.setTemplateType("waypoint"); // 起始点默认航线第一个点 if (uavRouteReq.getTakeOffRefPoint() == null){ uavRouteReq.setTakeOffRefPoint( uavRouteReq.getRoutePointList().get(0).getLatitude() + "," + uavRouteReq.getRoutePointList().get(0).getLongitude() + "," + uavRouteReq.getRoutePointList().get(0).getHeight()); } //uavRouteReq.setDroneType(89); uavRouteReq.setSubDroneType(0); uavRouteReq.setPayloadType(43); uavRouteReq.setPayloadPosition(0); uavRouteReq.setImageFormat("wide"); uavRouteReq.setFinishAction("goHome"); uavRouteReq.setExitOnRcLostAction("goBack"); //uavRouteReq.setGlobalHeight(100.0); //uavRouteReq.setAutoFlightSpeed(5.0); WaypointHeadingReq waypointHeadingReq = new WaypointHeadingReq(); waypointHeadingReq.setWaypointHeadingMode("followWayline"); uavRouteReq.setWaypointHeadingReq(waypointHeadingReq); WaypointTurnReq waypointTurnReq = new WaypointTurnReq(); if (uavRouteReq.getGlobalWaypointTurnMode() != null){ waypointTurnReq.setWaypointTurnMode(uavRouteReq.getGlobalWaypointTurnMode()); }else { waypointTurnReq.setWaypointTurnMode(WAYPOINT_TURN_MODE_DEFAULT); } uavRouteReq.setWaypointTurnReq(waypointTurnReq); uavRouteReq.setGimbalPitchMode("usePointSetting"); if (M350_RTK.getValue().equals(uavRouteReq.getDroneType())) { // 变焦数值加工 buildZoom(uavRouteReq); } // 修改每个航点的高度 buildHeight(uavRouteReq); // 动作组编号数据加工 buildActionGroupReq(uavRouteReq); return uavRouteReq; } /** * 构建动作组编号 */ public void buildActionGroupReq(UavRouteReq uavRouteReq){ int pointActionCounter = 0; for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) { if (routePointReq.getActionGroupList() != null){ for (ActionGroupReq actionGroupReq : routePointReq.getActionGroupList()) { actionGroupReq.setActionGroupId(pointActionCounter++); actionGroupReq.setActionGroupStartIndex(routePointReq.getRoutePointIndex()); actionGroupReq.setActionGroupEndIndex(routePointReq.getRoutePointIndex()); actionGroupReq.setActionTriggerType("reachPoint"); } } } } /** * 修改每个航点的高度 * 根据起飞点高度减去当前航点高度 */ public void buildHeight(UavRouteReq uavRouteReq){ if (!"EGM96".equals(uavRouteReq.getHeightMode())){ double takeOffHeight = getDoublePoint(uavRouteReq.getTakeOffRefPoint(),"alt"); for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) { routePointReq.setHeight(routePointReq.getHeight() - takeOffHeight); } } } /** * 变焦动作加工 */ private void buildZoom(UavRouteReq uavRouteReq){ for (RoutePointReq routePointReq : uavRouteReq.getRoutePointList()) { if (!routePointReq.getActionGroupList().isEmpty()){ for (ActionGroupReq actionGroupReq : routePointReq.getActionGroupList()) { for (PointActionReq action : actionGroupReq.getActions()) { if (action.getZoom() != null){ action.setZoom(multiple23(action.getZoom())); } } } } } } public static Double multiple23(Double zoom){ return zoom * CHANSI_H20T; } public static Double divided23(Double zoom){ return zoom / CHANSI_H20T; } }