| | |
| | | /** |
| | | * 气象-风向转化工具 |
| | | */ |
| | | var WWindUtil = {}; |
| | | var WWindUtil = {} |
| | | /** |
| | | * 风向json |
| | | */ |
| | | WWindUtil.WDJson = { |
| | | "N": { |
| | | "en": "N", |
| | | "cn": "北", |
| | | "desc": "北" |
| | | N: { |
| | | en: 'N', |
| | | cn: '北', |
| | | desc: '北' |
| | | }, |
| | | "NNE": { |
| | | "en": "NNE", |
| | | "cn": "北东北", |
| | | "desc": "东北偏北" |
| | | NNE: { |
| | | en: 'NNE', |
| | | cn: '北东北', |
| | | desc: '东北偏北' |
| | | }, |
| | | "NE": { |
| | | "en": "NE", |
| | | "cn": "东北", |
| | | "desc": "东北" |
| | | NE: { |
| | | en: 'NE', |
| | | cn: '东北', |
| | | desc: '东北' |
| | | }, |
| | | "ENE": { |
| | | "en": "ENE", |
| | | "cn": "东东北", |
| | | "desc": "东北偏北" |
| | | ENE: { |
| | | en: 'ENE', |
| | | cn: '东东北', |
| | | desc: '东北偏东' |
| | | }, |
| | | "E": { |
| | | "en": "E", |
| | | "cn": "东", |
| | | "desc": "东" |
| | | E: { |
| | | en: 'E', |
| | | cn: '东', |
| | | desc: '东' |
| | | }, |
| | | "ESE": { |
| | | "en": "ESE", |
| | | "cn": "东东南", |
| | | "desc": "东南偏东" |
| | | ESE: { |
| | | en: 'ESE', |
| | | cn: '东东南', |
| | | desc: '东南偏东' |
| | | }, |
| | | "SE": { |
| | | "en": "SNE", |
| | | "cn": "东南", |
| | | "desc": "东南" |
| | | SE: { |
| | | en: 'SNE', |
| | | cn: '东南', |
| | | desc: '东南' |
| | | }, |
| | | "SSE": { |
| | | "en": "SSE", |
| | | "cn": "南东南", |
| | | "desc": "东南偏南" |
| | | SSE: { |
| | | en: 'SSE', |
| | | cn: '南东南', |
| | | desc: '东南偏南' |
| | | }, |
| | | "S": { |
| | | "en": "S", |
| | | "cn": "南", |
| | | "desc": "南" |
| | | S: { |
| | | en: 'S', |
| | | cn: '南', |
| | | desc: '南' |
| | | }, |
| | | "SSW": { |
| | | "en": "SSW", |
| | | "cn": "南西南", |
| | | "desc": "西南偏南" |
| | | SSW: { |
| | | en: 'SSW', |
| | | cn: '南西南', |
| | | desc: '西南偏南' |
| | | }, |
| | | "SW": { |
| | | "en": "SW", |
| | | "cn": "西南", |
| | | "desc": "西南" |
| | | SW: { |
| | | en: 'SW', |
| | | cn: '西南', |
| | | desc: '西南' |
| | | }, |
| | | "WSW": { |
| | | "en": "WSW", |
| | | "cn": "西西南", |
| | | "desc": "西南偏西" |
| | | WSW: { |
| | | en: 'WSW', |
| | | cn: '西西南', |
| | | desc: '西南偏西' |
| | | }, |
| | | "W": { |
| | | "en": "W", |
| | | "cn": "西", |
| | | "desc": "西" |
| | | W: { |
| | | en: 'W', |
| | | cn: '西', |
| | | desc: '西' |
| | | }, |
| | | "WNW": { |
| | | "en": "WNW", |
| | | "cn": "西西北", |
| | | "desc": "西北偏西" |
| | | WNW: { |
| | | en: 'WNW', |
| | | cn: '西西北', |
| | | desc: '西北偏西' |
| | | }, |
| | | "NW": { |
| | | "en": "NW", |
| | | "cn": "西北", |
| | | "desc": "西北" |
| | | NW: { |
| | | en: 'NW', |
| | | cn: '西北', |
| | | desc: '西北' |
| | | }, |
| | | "NNW": { |
| | | "en": "NW", |
| | | "cn": "北西北", |
| | | "desc": "西北偏北" |
| | | NNW: { |
| | | en: 'NW', |
| | | cn: '北西北', |
| | | desc: '西北偏北' |
| | | }, |
| | | "ERROR": { |
| | | "en": "error value", |
| | | "cn": "错误数值", |
| | | "desc": "错误数值" |
| | | ERROR: { |
| | | en: 'error value', |
| | | cn: '错误数值', |
| | | desc: '错误数值' |
| | | } |
| | | |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * 风力等级 |
| | | */ |
| | | WWindUtil.WRatingArr = [ |
| | | { |
| | | "min": 0, |
| | | "max": 0.2, |
| | | "level": 0, |
| | | "name": "无风", |
| | | "landScene": "烟示风向" |
| | | min: 0, |
| | | max: 0.2, |
| | | level: 0, |
| | | name: '无风', |
| | | landScene: '烟示风向' |
| | | }, |
| | | { |
| | | "min": 0.3, |
| | | "max": 1.5, |
| | | "level": 1, |
| | | "name": "1 级", |
| | | "landScene": "烟示风向" |
| | | min: 0.3, |
| | | max: 1.5, |
| | | level: 1, |
| | | name: '1 级', |
| | | landScene: '烟示风向' |
| | | }, |
| | | { |
| | | "min": 1.6, |
| | | "max": 3.3, |
| | | "level": 2, |
| | | "name": "2级", |
| | | "landScene": "感觉有风" |
| | | min: 1.6, |
| | | max: 3.3, |
| | | level: 2, |
| | | name: '2 级', |
| | | landScene: '感觉有风' |
| | | }, |
| | | { |
| | | "min": 3.4, |
| | | "max": 5.4, |
| | | "level": 3, |
| | | "name": "3级", |
| | | "landScene": "旌旗展开" |
| | | min: 3.4, |
| | | max: 5.4, |
| | | level: 3, |
| | | name: '3 级', |
| | | landScene: '旌旗展开' |
| | | }, |
| | | { |
| | | "min": 5.5, |
| | | "max": 7.9, |
| | | "level": 4, |
| | | "name": "4级", |
| | | "landScene": "吹起尘土" |
| | | min: 5.5, |
| | | max: 7.9, |
| | | level: 4, |
| | | name: '4 级', |
| | | landScene: '吹起尘土' |
| | | }, |
| | | { |
| | | "min": 8.0, |
| | | "max": 10.7, |
| | | "level": 5, |
| | | "name": "5级", |
| | | "landScene": "小树摇摆" |
| | | min: 8.0, |
| | | max: 10.7, |
| | | level: 5, |
| | | name: '5 级', |
| | | landScene: '小树摇摆' |
| | | }, |
| | | { |
| | | "min": 10.8, |
| | | "max": 13.8, |
| | | "level": 6, |
| | | "name": "6级", |
| | | "landScene": "电线有声" |
| | | min: 10.8, |
| | | max: 13.8, |
| | | level: 6, |
| | | name: '6 级', |
| | | landScene: '电线有声' |
| | | }, |
| | | { |
| | | "min": 13.9, |
| | | "max": 17.1, |
| | | "level": 7, |
| | | "name": "7级", |
| | | "landScene": "步行困难" |
| | | min: 13.9, |
| | | max: 17.1, |
| | | level: 7, |
| | | name: '7 级', |
| | | landScene: '步行困难' |
| | | }, |
| | | { |
| | | "min": 17.2, |
| | | "max": 20.7, |
| | | "level": 8, |
| | | "name": "8级", |
| | | "landScene": "折毁树枝" |
| | | min: 17.2, |
| | | max: 20.7, |
| | | level: 8, |
| | | name: '8 级', |
| | | landScene: '折毁树枝' |
| | | }, |
| | | { |
| | | "min": 20.8, |
| | | "max": 24.4, |
| | | "level": 9, |
| | | "name": "9级", |
| | | "landScene": "小损房屋" |
| | | min: 20.8, |
| | | max: 24.4, |
| | | level: 9, |
| | | name: '9 级', |
| | | landScene: '小损房屋' |
| | | }, |
| | | { |
| | | "min": 24.5, |
| | | "max": 28.4, |
| | | "level": 10, |
| | | "name": "10级", |
| | | "landScene": "拔起树木" |
| | | min: 24.5, |
| | | max: 28.4, |
| | | level: 10, |
| | | name: '10 级', |
| | | landScene: '拔起树木' |
| | | }, |
| | | { |
| | | "min": 28.5, |
| | | "max": 32.6, |
| | | "level": 11, |
| | | "name": "11级", |
| | | "landScene": "损毁重大" |
| | | min: 28.5, |
| | | max: 32.6, |
| | | level: 11, |
| | | name: '11 级', |
| | | landScene: '损毁重大' |
| | | }, |
| | | { |
| | | "min": 32.7, |
| | | "max": 36.9, |
| | | "level": 12, |
| | | "name": "12级", |
| | | "landScene": "摧毁极大" |
| | | min: 32.7, |
| | | max: 36.9, |
| | | level: 12, |
| | | name: '12 级', |
| | | landScene: '摧毁极大' |
| | | }, |
| | | { |
| | | "min": 37.0, |
| | | "max": 41.4, |
| | | "level": 13, |
| | | "name": "13级", |
| | | "landScene": "" |
| | | min: 37.0, |
| | | max: 41.4, |
| | | level: 13, |
| | | name: '13 级', |
| | | landScene: '' |
| | | }, |
| | | { |
| | | "min": 41.5, |
| | | "max": 46.1, |
| | | "level": 14, |
| | | "name": "14级", |
| | | "landScene": "" |
| | | min: 41.5, |
| | | max: 46.1, |
| | | level: 14, |
| | | name: '14 级', |
| | | landScene: '' |
| | | }, |
| | | { |
| | | "min": 46.2, |
| | | "max": 50.9, |
| | | "level": 15, |
| | | "name": "15级", |
| | | "landScene": "" |
| | | min: 46.2, |
| | | max: 50.9, |
| | | level: 15, |
| | | name: '15 级', |
| | | landScene: '' |
| | | }, |
| | | { |
| | | "min": 51.0, |
| | | "max": 56.0, |
| | | "level": 16, |
| | | "name": "16级", |
| | | "landScene": "" |
| | | min: 51.0, |
| | | max: 56.0, |
| | | level: 16, |
| | | name: '16 级', |
| | | landScene: '' |
| | | }, |
| | | { |
| | | "min": 56.1, |
| | | "max": null, |
| | | "level": 17, |
| | | "name": "17 级", |
| | | "landScene": "" |
| | | min: 56.1, |
| | | max: null, |
| | | level: 17, |
| | | name: '17 级', |
| | | landScene: '' |
| | | } |
| | | ] |
| | | |
| | |
| | | */ |
| | | WWindUtil.to16WindDirection = function (windNumberValue) { |
| | | if (windNumberValue > 360) { |
| | | return WWindUtil.WDJson.ERROR; |
| | | return WWindUtil.WDJson.ERROR |
| | | } |
| | | let a = Math.ceil(windNumberValue / 11.25); |
| | | let ret; |
| | | let a = Math.ceil(windNumberValue / 11.25) |
| | | console.log('aaaaa', a) |
| | | let ret |
| | | switch (a) { |
| | | case 32: |
| | | case 1: |
| | | ret = WWindUtil.WDJson.N; |
| | | break; |
| | | case 0: |
| | | ret = WWindUtil.WDJson.N |
| | | break |
| | | |
| | | case 2: |
| | | case 3: |
| | | ret = WWindUtil.WDJson.NNE; |
| | | break; |
| | | |
| | | ret = WWindUtil.WDJson.NNE |
| | | break |
| | | |
| | | case 4: |
| | | case 5: |
| | | ret = WWindUtil.WDJson.NE; |
| | | break; |
| | | ret = WWindUtil.WDJson.NE |
| | | break |
| | | |
| | | case 6: |
| | | case 7: |
| | | ret = WWindUtil.WDJson.ENE; |
| | | break; |
| | | ret = WWindUtil.WDJson.ENE |
| | | break |
| | | |
| | | case 8: |
| | | case 9: |
| | | ret = WWindUtil.WDJson.E; |
| | | break; |
| | | ret = WWindUtil.WDJson.E |
| | | break |
| | | |
| | | case 10: |
| | | case 11: |
| | | ret = WWindUtil.WDJson.ESE; |
| | | break; |
| | | ret = WWindUtil.WDJson.ESE |
| | | break |
| | | |
| | | case 12: |
| | | case 13: |
| | | ret = WWindUtil.WDJson.SE; |
| | | break; |
| | | ret = WWindUtil.WDJson.SE |
| | | break |
| | | |
| | | case 14: |
| | | case 15: |
| | | ret = WWindUtil.WDJson.SSE; |
| | | break; |
| | | ret = WWindUtil.WDJson.SSE |
| | | break |
| | | |
| | | case 16: |
| | | case 17: |
| | | ret = WWindUtil.WDJson.S; |
| | | break; |
| | | ret = WWindUtil.WDJson.S |
| | | break |
| | | |
| | | case 18: |
| | | case 19: |
| | | ret = WWindUtil.WDJson.SSW; |
| | | break; |
| | | ret = WWindUtil.WDJson.SSW |
| | | break |
| | | |
| | | case 20: |
| | | case 21: |
| | | ret = WWindUtil.WDJson.SW; |
| | | break; |
| | | ret = WWindUtil.WDJson.SW |
| | | break |
| | | |
| | | case 22: |
| | | case 23: |
| | | ret = WWindUtil.WDJson.WSW; |
| | | break; |
| | | ret = WWindUtil.WDJson.WSW |
| | | break |
| | | |
| | | case 24: |
| | | case 25: |
| | | ret = WWindUtil.WDJson.W; |
| | | break; |
| | | ret = WWindUtil.WDJson.W |
| | | break |
| | | |
| | | case 26: |
| | | case 27: |
| | | ret = WWindUtil.WDJson.WNW; |
| | | break; |
| | | ret = WWindUtil.WDJson.WNW |
| | | break |
| | | |
| | | case 28: |
| | | case 29: |
| | | ret = WWindUtil.WDJson.NW; |
| | | break; |
| | | ret = WWindUtil.WDJson.NW |
| | | break |
| | | |
| | | case 30: |
| | | case 31: |
| | | ret = WWindUtil.WDJson.NNW; |
| | | break; |
| | | ret = WWindUtil.WDJson.NNW |
| | | break |
| | | |
| | | default: |
| | | ret = WWindUtil.WDJson.ERROR; |
| | | break; |
| | | |
| | | ret = WWindUtil.WDJson.ERROR |
| | | break |
| | | } |
| | | return ret; |
| | | return ret |
| | | } |
| | | |
| | | /** 风向值转文字风向 |
| | |
| | | */ |
| | | WWindUtil.to8WindDirection = function (windNumberValue) { |
| | | if (windNumberValue > 360) { |
| | | return WWindUtil.WDJson.ERROR; |
| | | return WWindUtil.WDJson.ERROR |
| | | } |
| | | let a = Math.ceil(windNumberValue / 22.5); |
| | | let ret; |
| | | let a = Math.ceil(windNumberValue / 22.5) |
| | | let ret |
| | | switch (a) { |
| | | case 16: |
| | | case 1: |
| | | ret = WWindUtil.WDJson.N; |
| | | break; |
| | | ret = WWindUtil.WDJson.N |
| | | break |
| | | |
| | | case 2: |
| | | case 3: |
| | | ret = WWindUtil.WDJson.NE; |
| | | break; |
| | | |
| | | ret = WWindUtil.WDJson.NE |
| | | break |
| | | |
| | | case 4: |
| | | case 5: |
| | | ret = WWindUtil.WDJson.E; |
| | | break; |
| | | ret = WWindUtil.WDJson.E |
| | | break |
| | | |
| | | case 6: |
| | | case 7: |
| | | ret = WWindUtil.WDJson.SE; |
| | | break; |
| | | ret = WWindUtil.WDJson.SE |
| | | break |
| | | |
| | | case 8: |
| | | case 9: |
| | | ret = WWindUtil.WDJson.S; |
| | | break; |
| | | ret = WWindUtil.WDJson.S |
| | | break |
| | | |
| | | case 10: |
| | | case 11: |
| | | ret = WWindUtil.WDJson.SW; |
| | | break; |
| | | ret = WWindUtil.WDJson.SW |
| | | break |
| | | |
| | | case 12: |
| | | case 13: |
| | | ret = WWindUtil.WDJson.W; |
| | | break; |
| | | ret = WWindUtil.WDJson.W |
| | | break |
| | | |
| | | case 14: |
| | | case 15: |
| | | ret = WWindUtil.WDJson.NW; |
| | | break; |
| | | ret = WWindUtil.WDJson.NW |
| | | break |
| | | |
| | | default: |
| | | ret = WWindUtil.WDJson.ERROR; |
| | | break; |
| | | |
| | | ret = WWindUtil.WDJson.ERROR |
| | | break |
| | | } |
| | | return ret; |
| | | return ret |
| | | } |
| | | |
| | | /** 风速转风力等级 |
| | | * @param {Object} value 风速值 (m/s) |
| | | */ |
| | | WWindUtil.WindtoLevel = function (value) { |
| | | let vl = Number(value) |
| | | .toFixed(1); |
| | | console.log('vl:', vl); |
| | | if (!vl || vl < 0) { return null; } |
| | | let arr = WWindUtil.WRatingArr; |
| | | let vl = Number(value).toFixed(1) |
| | | console.log('vl:', vl) |
| | | if (!vl || vl < 0) { |
| | | return null |
| | | } |
| | | let arr = WWindUtil.WRatingArr |
| | | if (vl >= arr[arr.length - 1].min) { |
| | | return arr[arr.length - 1]; |
| | | return arr[arr.length - 1] |
| | | } |
| | | for (let i = 0; i < arr.length; i++) { |
| | | if (vl >= arr[i].min && vl <= arr[i].max) { |
| | | return arr[i]; |
| | | return arr[i] |
| | | } |
| | | } |
| | | return null; |
| | | return null |
| | | } |
| | | |
| | | // 风向值转文字 |
| | | WWindUtil.windValueFormat = function (value) { |
| | | try { |
| | | let vl = Number(value); |
| | | let vl = Number(value) |
| | | if (!vl || vl > 360 || vl < 0) { |
| | | return '-'; |
| | | return '-' |
| | | } |
| | | return WWindUtil.to16WindDirection(value).desc; |
| | | return WWindUtil.to16WindDirection(value).desc |
| | | } catch (e) { |
| | | return '-'; |
| | | return '-' |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | WWindUtil.windFormatLevel = function (value) { |
| | | try { |
| | | let vl = Number(value); |
| | | let vl = Number(value) |
| | | if (!vl || vl > 100 || vl < 0) { |
| | | return "-"; |
| | | return '-' |
| | | } |
| | | return WWindUtil.WindtoLevel(value).level + "级(" + WWindUtil.WindtoLevel(value).name + ")"; |
| | | return ( |
| | | WWindUtil.WindtoLevel(value).level + |
| | | '级(' + |
| | | WWindUtil.WindtoLevel(value).name + |
| | | ')' |
| | | ) |
| | | } catch (e) { |
| | | return "-"; |
| | | return '-' |
| | | } |
| | | } |
| | | |
| | | |
| | | export { |
| | | WWindUtil |
| | | }; |
| | | export { WWindUtil } |