wind.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package util
  2. type Direction struct {
  3. Namezh string
  4. Name string
  5. Center float64
  6. DirectionA float64
  7. DirectionB float64
  8. }
  9. var ArrWindSpeed [19][2]float64
  10. var mapWindGrade map[int]string
  11. var arrDirection []Direction
  12. func GetWindGrade(speed float64) (string, int) {
  13. var grade int
  14. for i, v := range ArrWindSpeed {
  15. if v[0] <= speed && speed <= v[1] {
  16. grade = i
  17. break
  18. }
  19. }
  20. if str, ok := mapWindGrade[grade]; ok {
  21. return str, grade
  22. }
  23. return "", grade
  24. }
  25. func GetWindDirection(direction float64) Direction {
  26. for _, v := range arrDirection {
  27. if v.Center != 0 {
  28. if direction > v.DirectionA && direction <= v.DirectionB {
  29. return v
  30. }
  31. } else {
  32. if direction > v.DirectionA || direction <= v.DirectionB {
  33. return v
  34. }
  35. }
  36. }
  37. return Direction{}
  38. }
  39. func init() {
  40. //风力等级范围
  41. ArrWindSpeed = [19][2]float64{
  42. {0.0, 0.2}, {0.3, 1.5}, {1.6, 3.3}, {3.4, 5.4}, {5.5, 7.9}, {8.0, 10.7},
  43. {10.8, 13.8}, {13.9, 17.1}, {17.2, 20.7}, {20.8, 24.4}, {24.5, 28.4}, {28.5, 32.6},
  44. {32.7, 36.9}, {37, 41}, {42, 45}, {46, 51}, {52, 59}, {60, 61.2}, {61.2, 102400},
  45. }
  46. //风力等级描述
  47. mapWindGrade = make(map[int]string)
  48. mapWindGrade[0] = "无风"
  49. mapWindGrade[1] = "软风"
  50. mapWindGrade[2] = "轻风"
  51. mapWindGrade[3] = "微风"
  52. mapWindGrade[4] = "和风"
  53. mapWindGrade[5] = "清劲风"
  54. mapWindGrade[6] = "强风"
  55. mapWindGrade[7] = "疾风"
  56. mapWindGrade[8] = "大风"
  57. mapWindGrade[9] = "烈风"
  58. mapWindGrade[10] = "狂风"
  59. mapWindGrade[11] = "暴风"
  60. mapWindGrade[12] = "台风"
  61. mapWindGrade[13] = "台风"
  62. mapWindGrade[14] = "台风"
  63. mapWindGrade[15] = "台风"
  64. mapWindGrade[16] = "台风"
  65. mapWindGrade[17] = "台风"
  66. mapWindGrade[18] = "台风"
  67. //风向描述及度数
  68. arrDirection = make([]Direction, 8, 8)
  69. arrDirection[0] = Direction{Namezh: "北", Name: "N", Center: 0, DirectionA: 337.5, DirectionB: 22.5}
  70. arrDirection[1] = Direction{Namezh: "东北", Name: "NE", Center: 45, DirectionA: 22.5, DirectionB: 67.5}
  71. arrDirection[2] = Direction{Namezh: "东", Name: "E", Center: 90, DirectionA: 67.5, DirectionB: 112.5}
  72. arrDirection[3] = Direction{Namezh: "东南", Name: "SN", Center: 135, DirectionA: 112.5, DirectionB: 157.5}
  73. arrDirection[4] = Direction{Namezh: "南", Name: "S", Center: 180, DirectionA: 157.5, DirectionB: 202.5}
  74. arrDirection[5] = Direction{Namezh: "西南", Name: "SW", Center: 225, DirectionA: 202.5, DirectionB: 247.5}
  75. arrDirection[6] = Direction{Namezh: "西", Name: "W", Center: 270, DirectionA: 247.5, DirectionB: 292.5}
  76. arrDirection[7] = Direction{Namezh: "西北", Name: "NW", Center: 315, DirectionA: 292.5, DirectionB: 337.5}
  77. }