Java 工具类:风向度数(角度°)转风向,附风向16方位图

 

目录

前言

风向图例

Java 风向度数转风向工具类


前言

开发过程中,经常会遇到风向数据处理,大都是风向的度数(°),如果直接进行展示,对用户来说不太友好,因此大都会转换成风向。


风向图例

 常见风向描述分为以下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];
    }
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是有多懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值