我有来自OpenWeatherMap API的风向数据,数据以0到360度表示.我想将其转换为文本格式

I have wind direction data coming from OpenWeatherMap API, and the data is represented in 0 to 360 degrees. I want to convert this into text format

本文关键字:数据 表示 360度 格式 文本 转换 OpenWeatherMap API      更新时间:2024-02-12
function  toTextualDescription(degree){
    if ((degree>337.5 && degree<360)|| (degree>22.5 && degree<22.5))
    {return 'Northerly';}
    else if(degree>22.5 && degree<67.5){return 'North Easterly';}
    else if(degree>67.5 && degree<112.5){return 'Easterly';}
    else if(degree>122.5 && degree<157.5){return 'South Easterly';} 
    else if(degree>157.5 && degree<202.5){return 'Southerly';}
    else if(degree>202.5 && degree<247.5){return 'South Westerly';}
    else if(degree>247.5 && degree<292.5){return 'Westerly';}
    else if(degree>292.5 && degree<337.5){return 'North Westerly';}
}

https://compuweather.com/files/2009/10/CompuWeather-Wind-Direction-Compass-Chart.pdf在上面的链接上,您可以找到方向表示,我想将AS,北,东北,东,东南,南,西南,西和西北的文本度更改为文本,您能提出更好的方法吗?我正在使用Javascript。

if语句中不需要太多检查。此外,你不需要其他如果,因为返回将在适当的位置结束函数执行。

function  toTextualDescription(degree){
    if (degree>337.5) return 'Northerly';
    if (degree>292.5) return 'North Westerly';
    if(degree>247.5) return 'Westerly';
    if(degree>202.5) return 'South Westerly';
    if(degree>157.5) return 'Southerly';
    if(degree>122.5) return 'South Easterly';
    if(degree>67.5) return 'Easterly';
    if(degree>22.5){return 'North Easterly';}
    return 'Northerly';
}
let compassSector = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW", "N"];
weather.windDirection = compassSector[(data.wind.deg / 22.5).toFixed(0)];

这是一种使用扇区名称数组的方法。 这也适用于值 <0 和> 360

function toTextualDescription(degree) {
  var sectors = ['Northerly','North Easterly','Easterly','South Easterly','Southerly','South Westerly','Westerly','North Westerly'];
  
  degree += 22.5;
  if (degree < 0) 
    degree = 360 - Math.abs(degree) % 360;
  else 
    degree = degree % 360;
  
  var which = parseInt(degree / 45);
  return sectors[which];
}
console.log("0: " + toTextualDescription(0));
console.log("-30: " + toTextualDescription(-30));
console.log("900: " + toTextualDescription(900));
console.log("22.4999: " + toTextualDescription(22.4999));
console.log("22.5: " + toTextualDescription(22.5));
console.log("359: " + toTextualDescription(359));