风速格点数据
获取全球全球海洋风速格点数据。风速格点数据我们可以通过风速图层数据计算而来,无需获取,每三小时更新 风速图层数据返回的是风速的u分量和 v分量,首先我们通过风速图层数据获取风速的U分量值,再通过数据获取V分量上的值,然后合成就可以得到该点的风速及风向值
返回数据
/** * 计算风向风速 * * @param u u经向风分量(x) * @param v v纬向风分量(y) * @return BigDecimal[] */ private static BigDecimal[] getDirAndSpeed(BigDecimal u, BigDecimal v) { double ud = u.doubleValue(); double vd = v.doubleValue(); //计算风速 double speedd = Math.sqrt(Math.pow(ud, 2) + Math.pow(vd, 2)); BigDecimal speed = new BigDecimal(speedd).setScale(5, BigDecimal.ROUND_HALF_UP); //计算角度 double dird = Math.atan(ud / vd) * 180 / Math.PI; if (ud != 0 && vd < 0) { dird = dird + 180; } else if (ud < 0 && vd > 0) { dird = dird + 360; } else if (ud == 0 && vd > 0) { dird = 0; } else if (ud == 0 && vd < 0) { dird = 180; } else if (ud > 0 && vd == 0) { dird = 90; } else if (ud < 0 && vd == 0) { dird = 270; } else if (ud == 0 && vd == 0) { dird = -999; } BigDecimal dir = new BigDecimal(dird).setScale(5, BigDecimal.ROUND_HALF_UP); return new BigDecimal[]{dir, speed}; }