目录
前言
开发过程中,经常会遇到风向数据处理,大都是风向的度数(°),如果直接进行展示,对用户来说不太友好,因此大都会转换成风向。
风向图例
常见风向描述分为以下2类,可以选择合适的展示方式使用:
风向类型一:”北”, “东北偏北”, “东北”, “东北偏东”, “东”, “东南偏东”, “东南”, “东南偏南”, “南”,
“西南偏南”, “西南”, “西南偏西”, “西”, “西北偏西”, “西北”, “西北偏北”
风向类型二:”北”, “北东北”, “东北”, “东东北”, “东”, “东东南”, “东南”, “南东南”, “南”,
“南西南”, “西南”, “西西南”, “西”, “西西北”, “西北”, “北西北”
以下为风向16方位图:
N 北 0°
NNE 东北偏北 22.5°
NE 东北 45°
ENE 东北偏东 67.5°
E 东 90°
ESE 东南偏东 112.5°
SE 东南 135°
SSE 东南偏南 157.5°
S 南 180°
SSW 西南偏南 202.5°
SW 西南 225°
WSW 西南偏西 247.5°
W 西 270°
WNW 西北偏西 292.5°
NW 西北 315°
NNW 西北偏北 337.5°
Java 风向度数转风向工具类
以下为风向度数转风向代码。
/**
* 风向转换工具类
* @author 我是有多懒
* @since 2022-05-31
*/
@Slf4j
public class WindDirectionUtil {
//风向描述类型一
private static final String[] directArrOne = new String[]{
"北", "东北偏北", "东北", "东北偏东",
"东", "东南偏东", "东南", "东南偏南",
"南", "西南偏南", "西南", "西南偏西",
"西", "西北偏西", "西北", "西北偏北"};
//风向描述类型二
private static final String[] directArrTwo = new String[]{
"北", "北东北", "东北", "东东北",
"东", "东东南", "东南", "南东南",
"南", "南西南", "西南", "西西南",
"西", "西西北", "西北", "北西北"};
/**
* 风向角度转具体风向
* @param degrees 风向角度 0 <= degrees <= 360
* @return 具体风向
*/
public static String windDirectionSwitch(float degrees) {
int index = 0;
if (348.75 <= degrees && degrees <= 360) {
index = 0;
} else if (0 <= degrees && degrees <= 11.25) {
index = 0;
} else if (11.25 < degrees && degrees <= 33.75) {
index = 1;
} else if (33.75 < degrees && degrees <= 56.25) {
index = 2;
} else if (56.25 < degrees && degrees <= 78.75) {
index = 3;
} else if (78.75 < degrees && degrees <= 101.25) {
index = 4;
} else if (101.25 < degrees && degrees <= 123.75) {
index = 5;
} else if (123.75 < degrees && degrees <= 146.25) {
index = 6;
} else if (146.25 < degrees && degrees <= 168.75) {
index = 7;
} else if (168.75 < degrees && degrees <= 191.25) {
index = 8;
} else if (191.25 < degrees && degrees <= 213.75) {
index = 9;
} else if (213.75 < degrees && degrees <= 236.25) {
index = 10;
} else if (236.25 < degrees && degrees <= 258.75) {
index = 11;
} else if (258.75 < degrees && degrees <= 281.25) {
index = 12;
} else if (281.25 < degrees && degrees <= 303.75) {
index = 13;
} else if (303.75 < degrees && degrees <= 326.25) {
index = 14;
} else if (326.25 < degrees && degrees < 348.75) {
index = 15;
} else {
log.error("风向角度[{}] 大于 360", degrees);
}
return directArrOne[index];
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114736.html