风速格点数据
获取全球全球海洋风速格点数据。风速格点数据我们可以通过风速图层数据计算而来,无需获取,每三小时更新 风速图层数据返回的是风速的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};
}