风向计算方法封装
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* 风向角度 -> 风向代码(N/NE/E/SE/S/SW/W/NW)
|
||||||
|
*/
|
||||||
|
export function windDirectionCode(deg: number | null | string): string | null {
|
||||||
|
if (deg == null || deg === "" || isNaN(Number(deg))) return null;
|
||||||
|
const d = Number(deg);
|
||||||
|
if (d < 0 || d > 360) return null;
|
||||||
|
return ["N", "NE", "E", "SE", "S", "SW", "W", "NW"][Math.floor((d + 22.5) / 45) % 8];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 风向角度 -> 风向中文标签(通过字典 wind_direction_type 映射)
|
||||||
|
* @param deg 风向角度
|
||||||
|
* @param dicts 字典列表
|
||||||
|
*/
|
||||||
|
export function windDirectionLabel(deg: number | null | string, dicts: any[]): string {
|
||||||
|
const code = windDirectionCode(deg);
|
||||||
|
if (!code) return "—"; // em dash
|
||||||
|
const type = dicts.find((d: any) => d.dictType === "wind_direction_type");
|
||||||
|
const entry = type?.dataList?.find((e: any) => e.dictValue === code);
|
||||||
|
return entry?.dictLabel || code;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user