| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.moral.api.service.OrganizationService; |
| | | import com.moral.api.service.SpecialDeviceService; |
| | | import com.moral.api.utils.UnitConvertUtils; |
| | | import com.moral.constant.RedisConstants; |
| | | import com.moral.util.DateUtils; |
| | | import com.moral.util.GeodesyUtils; |
| | | import com.moral.util.MathUtils; |
| | | import com.moral.util.UnitConvertUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.function.Predicate; |
| | |
| | | dateMap.put("startTime", slotStartDate); |
| | | dateMap.put("endTime", slotEndDate); |
| | | dateMap.put("batch", mKey); |
| | | dateMap.put("total",mValue.size()); |
| | | timeSlots.add(dateMap); |
| | | }); |
| | | }); |
| | |
| | | for (HistorySecondUav data : datas) { |
| | | String value = data.getValue(); |
| | | Map<String, Object> valueMap = JSON.parseObject(value, Map.class); |
| | | //判断value里面有没有高度 |
| | | if (!valueMap.containsKey("flyhig")|| !valueMap.containsKey("flylat")|| !valueMap.containsKey("flylon")){ |
| | | continue; |
| | | } |
| | | //获取高度 |
| | | Double height = Double.valueOf((String) valueMap.get("flyhig")); |
| | | if (height < lowestHeight) |
| | |
| | | for (HistorySecondUav data : datas) { |
| | | String value = data.getValue(); |
| | | Map<String, Object> valueMap = JSON.parseObject(value, Map.class); |
| | | //判断value里面有没有高度 |
| | | if (!valueMap.containsKey("flyhig")|| !valueMap.containsKey("flylat")|| !valueMap.containsKey("flylon")){ |
| | | continue; |
| | | } |
| | | //获取高度 |
| | | Double height = Double.valueOf((String) valueMap.get("flyhig")); |
| | | //加上最低点绝对值 |
| | |
| | | } |
| | | //筛选无人机数据,保持每个点之间的距离在2米以上 |
| | | datas = filterDatas(datas); |
| | | if (datas.size()<2){ |
| | | return null; |
| | | } |
| | | //转换单位 |
| | | unitConvert(datas); |
| | | return datas; |
| | |
| | | datas.remove(0); |
| | | for (HistorySecondUav data : datas) { |
| | | Double distance = getDistance(tempData, data); |
| | | if (distance==null){ |
| | | continue; |
| | | } |
| | | if (distance > filterDistance) { |
| | | result.add(data); |
| | | tempData = data; |
| | |
| | | String value2 = uav2.getValue(); |
| | | Map<String, Object> value1Map = JSON.parseObject(value1, Map.class); |
| | | Map<String, Object> value2Map = JSON.parseObject(value2, Map.class); |
| | | //判断这两个数据里面有没有经纬度 |
| | | if (!value1Map.containsKey("flylon")||!value1Map.containsKey("flylat")||!value1Map.containsKey("flyhig")|| |
| | | !value2Map.containsKey("flylon")||!value2Map.containsKey("flylat")||!value2Map.containsKey("flyhig")){ |
| | | return null; |
| | | } |
| | | //获取数据1的经纬度和高度 |
| | | Double longtitude1 = Double.valueOf((String) value1Map.get("flylon")); |
| | | Double latitude1 = Double.valueOf((String) value1Map.get("flylat")); |