czt
2025-06-10 694f541f9f4bc51818395be84e5ddf322c8048d8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.ld.igds.protocol.bhzn.utils;
 
import lombok.extern.slf4j.Slf4j;
 
/**
 * 风向转换工具类
 * @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];
    }
}