风速格点数据

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