风速风向计算,参考Wind Direction Quick Reference | Earth Observing Laboratory实现
代码如下
public static void main(String[] args) {
double u = -10;
double v = 10;
double[] dirAndSpeed = getDirAndSpeed(u, v);
System.out.println("speed:" + dirAndSpeed[0]);
System.out.println("dir:" + dirAndSpeed[1]);
double[] uv = getUV(dirAndSpeed[0], dirAndSpeed[1]);
System.out.println("u:" + uv[0]);
System.out.println("v:" + uv[1]);
}
/**
* 计算风向风速
* 正北风为0或360
*
* @param u u经向风分量(x)
* @param v v纬向风分量(y)
* @return BigDecimal[]
*/
private static double[] getDirAndSpeed(double u, double v) {
double ws = Math.sqrt(Math.pow(u, 2) + Math.pow(v, 2));
double wd = (270 - Math.toDegrees(Math.atan2(v, u))) % 360d;
return new double[]{ws, wd};
}
/**
* 计算UV向风
*
* @param speed 风速
* @param dir 风向
* @return BigDecimal[]
*/
private static double[] getUV(double speed, double dir) {
double radians = Math.toRadians(dir);
double u = -speed * Math.sin(radians);
double v = -speed * Math.cos(radians);
return new double[]{u, v};
}
本文详细介绍了一种计算风速和风向的方法,通过经纬向风分量转换为风速和风向,再逆向计算UV风分量,提供了一个实用的Java代码示例。
4万+

被折叠的 条评论
为什么被折叠?



