package com.moral.util; import java.util.HashMap; import java.util.List; import java.util.Map; public class WindUtils { /** *@Description: 根据方向和风速,获取UV风向 * @return: < com.moral.entity.Device>> * @Author: lizijie * @Date: 2020/12/03 * * */ public static Map getWind_direction_speed(List> list){ //定义u:水平方向,v:竖直方向 double u = 0; double v = 0; for (Map map:list) { double u1 = 0; double v1 = 0; double wind_speed = Double.parseDouble(map.get("wind_speed").toString()); double wind_direction = Double.parseDouble(map.get("wind_direction").toString()); if (wind_speed == 0){ continue;//如果风速为0,结束此次循环,进入下次循环 } if (wind_direction==0){ u1 = 0; v1 = wind_speed*1; }else if (0 windDirectionSpeedMap = new HashMap<>(); if (u==0&&v==0){ windDirectionSpeedMap.put("wind_direction",0.0); windDirectionSpeedMap.put("wind_speed",0.0); }else if (u==0&&v>0){ windDirectionSpeedMap.put("wind_direction",0.0); windDirectionSpeedMap.put("wind_speed",v); }else if (u>0&&v>0){ windDirectionSpeedMap.put("wind_direction",Math.atan2(u,v)); windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)); }else if (u>0&&v==0){ windDirectionSpeedMap.put("wind_direction",90.0); windDirectionSpeedMap.put("wind_speed",u); }else if (u>0&&v<0){ windDirectionSpeedMap.put("wind_direction",Math.atan2(-v,u)+90); windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)); }else if (u==0&&v<0){ windDirectionSpeedMap.put("wind_direction",180.0); windDirectionSpeedMap.put("wind_speed",-v); }else if (u<0&&v<0){ windDirectionSpeedMap.put("wind_direction",Math.atan2(-u,-v)+180); windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)); }else if (u<0&&v==0){ windDirectionSpeedMap.put("wind_direction",270.0); windDirectionSpeedMap.put("wind_speed",-u); }else if (u<0&&v>0){ windDirectionSpeedMap.put("wind_direction",Math.atan2(v,-u)+270); windDirectionSpeedMap.put("wind_speed",Math.sqrt(u*u+v*v)); } return windDirectionSpeedMap; } }