{
 "essaouira": {
  "lat": 31.5,
  "lon": -9.77,
  "timezone": "Africa/Casablanca",
  "months": [
   {
    "month": 1,
    "avgKn": 9.1,
    "pctDays12": 28,
    "pctDays15": 13,
    "avgMaxTempC": 19.3,
    "dirs": {
     "NE": 53,
     "N": 29,
     "SW": 11
    }
   },
   {
    "month": 2,
    "avgKn": 10.2,
    "pctDays12": 34,
    "pctDays15": 18,
    "avgMaxTempC": 19.7,
    "dirs": {
     "N": 43,
     "NE": 40,
     "SW": 9
    }
   },
   {
    "month": 3,
    "avgKn": 11.2,
    "pctDays12": 40,
    "pctDays15": 22,
    "avgMaxTempC": 20.3,
    "dirs": {
     "N": 51,
     "NE": 26,
     "SW": 13
    }
   },
   {
    "month": 4,
    "avgKn": 11.6,
    "pctDays12": 47,
    "pctDays15": 27,
    "avgMaxTempC": 21.5,
    "dirs": {
     "N": 64,
     "NE": 17,
     "SW": 9
    }
   },
   {
    "month": 5,
    "avgKn": 12.7,
    "pctDays12": 56,
    "pctDays15": 36,
    "avgMaxTempC": 23.2,
    "dirs": {
     "N": 71,
     "NE": 14,
     "SW": 6
    }
   },
   {
    "month": 6,
    "avgKn": 12.8,
    "pctDays12": 57,
    "pctDays15": 37,
    "avgMaxTempC": 24.3,
    "dirs": {
     "N": 80,
     "NE": 10,
     "NW": 6
    }
   },
   {
    "month": 7,
    "avgKn": 14.0,
    "pctDays12": 75,
    "pctDays15": 46,
    "avgMaxTempC": 26.6,
    "dirs": {
     "N": 86,
     "NE": 12,
     "NW": 1
    }
   },
   {
    "month": 8,
    "avgKn": 13.0,
    "pctDays12": 64,
    "pctDays15": 35,
    "avgMaxTempC": 27.0,
    "dirs": {
     "N": 84,
     "NE": 15,
     "NW": 1
    }
   },
   {
    "month": 9,
    "avgKn": 11.0,
    "pctDays12": 46,
    "pctDays15": 18,
    "avgMaxTempC": 25.5,
    "dirs": {
     "N": 77,
     "NE": 18,
     "NW": 2
    }
   },
   {
    "month": 10,
    "avgKn": 9.1,
    "pctDays12": 28,
    "pctDays15": 11,
    "avgMaxTempC": 24.7,
    "dirs": {
     "N": 60,
     "NE": 19,
     "SW": 15
    }
   },
   {
    "month": 11,
    "avgKn": 9.4,
    "pctDays12": 28,
    "pctDays15": 14,
    "avgMaxTempC": 22.3,
    "dirs": {
     "N": 41,
     "NE": 38,
     "SW": 15
    }
   },
   {
    "month": 12,
    "avgKn": 8.0,
    "pctDays12": 21,
    "pctDays15": 11,
    "avgMaxTempC": 20.6,
    "dirs": {
     "NE": 48,
     "N": 26,
     "SW": 20
    }
   }
  ]
 },
 "sidi-kaouki": {
  "lat": 31.355,
  "lon": -9.8,
  "timezone": "Africa/Casablanca",
  "months": [
   {
    "month": 1,
    "avgKn": 8.8,
    "pctDays12": 28,
    "pctDays15": 13,
    "avgMaxTempC": 19.7,
    "dirs": {
     "N": 48,
     "NE": 34,
     "SW": 9
    }
   },
   {
    "month": 2,
    "avgKn": 9.9,
    "pctDays12": 33,
    "pctDays15": 19,
    "avgMaxTempC": 20.1,
    "dirs": {
     "N": 59,
     "NE": 24,
     "SW": 7
    }
   },
   {
    "month": 3,
    "avgKn": 10.8,
    "pctDays12": 35,
    "pctDays15": 19,
    "avgMaxTempC": 20.7,
    "dirs": {
     "N": 58,
     "NE": 13,
     "SW": 12
    }
   },
   {
    "month": 4,
    "avgKn": 11.6,
    "pctDays12": 44,
    "pctDays15": 24,
    "avgMaxTempC": 21.9,
    "dirs": {
     "N": 67,
     "NW": 14,
     "SW": 8
    }
   },
   {
    "month": 5,
    "avgKn": 12.7,
    "pctDays12": 54,
    "pctDays15": 32,
    "avgMaxTempC": 23.7,
    "dirs": {
     "N": 74,
     "NW": 13,
     "SW": 5
    }
   },
   {
    "month": 6,
    "avgKn": 13.3,
    "pctDays12": 59,
    "pctDays15": 40,
    "avgMaxTempC": 24.7,
    "dirs": {
     "N": 80,
     "NW": 14,
     "W": 2
    }
   },
   {
    "month": 7,
    "avgKn": 13.7,
    "pctDays12": 71,
    "pctDays15": 39,
    "avgMaxTempC": 27.6,
    "dirs": {
     "N": 94,
     "NW": 3,
     "NE": 2
    }
   },
   {
    "month": 8,
    "avgKn": 12.6,
    "pctDays12": 57,
    "pctDays15": 30,
    "avgMaxTempC": 27.9,
    "dirs": {
     "N": 92,
     "NE": 4,
     "NW": 3
    }
   },
   {
    "month": 9,
    "avgKn": 11.0,
    "pctDays12": 42,
    "pctDays15": 18,
    "avgMaxTempC": 25.9,
    "dirs": {
     "N": 86,
     "NW": 7,
     "NE": 4
    }
   },
   {
    "month": 10,
    "avgKn": 8.9,
    "pctDays12": 24,
    "pctDays15": 9,
    "avgMaxTempC": 25.0,
    "dirs": {
     "N": 69,
     "SW": 13,
     "NE": 7
    }
   },
   {
    "month": 11,
    "avgKn": 9.0,
    "pctDays12": 24,
    "pctDays15": 13,
    "avgMaxTempC": 22.7,
    "dirs": {
     "N": 54,
     "NE": 22,
     "SW": 12
    }
   },
   {
    "month": 12,
    "avgKn": 7.5,
    "pctDays12": 18,
    "pctDays15": 8,
    "avgMaxTempC": 21.0,
    "dirs": {
     "N": 43,
     "NE": 30,
     "SW": 16
    }
   }
  ]
 },
 "moulay-bouzerktoun": {
  "lat": 31.645,
  "lon": -9.68,
  "timezone": "Africa/Casablanca",
  "months": [
   {
    "month": 1,
    "avgKn": 9.1,
    "pctDays12": 28,
    "pctDays15": 13,
    "avgMaxTempC": 19.3,
    "dirs": {
     "NE": 53,
     "N": 29,
     "SW": 11
    }
   },
   {
    "month": 2,
    "avgKn": 10.2,
    "pctDays12": 34,
    "pctDays15": 18,
    "avgMaxTempC": 19.7,
    "dirs": {
     "N": 43,
     "NE": 40,
     "SW": 9
    }
   },
   {
    "month": 3,
    "avgKn": 11.2,
    "pctDays12": 40,
    "pctDays15": 22,
    "avgMaxTempC": 20.3,
    "dirs": {
     "N": 51,
     "NE": 26,
     "SW": 13
    }
   },
   {
    "month": 4,
    "avgKn": 11.6,
    "pctDays12": 47,
    "pctDays15": 27,
    "avgMaxTempC": 21.5,
    "dirs": {
     "N": 64,
     "NE": 17,
     "SW": 9
    }
   },
   {
    "month": 5,
    "avgKn": 12.7,
    "pctDays12": 56,
    "pctDays15": 36,
    "avgMaxTempC": 23.2,
    "dirs": {
     "N": 71,
     "NE": 14,
     "SW": 6
    }
   },
   {
    "month": 6,
    "avgKn": 12.8,
    "pctDays12": 57,
    "pctDays15": 37,
    "avgMaxTempC": 24.3,
    "dirs": {
     "N": 80,
     "NE": 10,
     "NW": 6
    }
   },
   {
    "month": 7,
    "avgKn": 14.0,
    "pctDays12": 75,
    "pctDays15": 46,
    "avgMaxTempC": 26.6,
    "dirs": {
     "N": 86,
     "NE": 12,
     "NW": 1
    }
   },
   {
    "month": 8,
    "avgKn": 13.0,
    "pctDays12": 64,
    "pctDays15": 35,
    "avgMaxTempC": 27.0,
    "dirs": {
     "N": 84,
     "NE": 15,
     "NW": 1
    }
   },
   {
    "month": 9,
    "avgKn": 11.0,
    "pctDays12": 46,
    "pctDays15": 18,
    "avgMaxTempC": 25.5,
    "dirs": {
     "N": 77,
     "NE": 18,
     "NW": 2
    }
   },
   {
    "month": 10,
    "avgKn": 9.1,
    "pctDays12": 28,
    "pctDays15": 11,
    "avgMaxTempC": 24.7,
    "dirs": {
     "N": 60,
     "NE": 19,
     "SW": 15
    }
   },
   {
    "month": 11,
    "avgKn": 9.4,
    "pctDays12": 28,
    "pctDays15": 14,
    "avgMaxTempC": 22.3,
    "dirs": {
     "N": 41,
     "NE": 38,
     "SW": 15
    }
   },
   {
    "month": 12,
    "avgKn": 8.0,
    "pctDays12": 21,
    "pctDays15": 11,
    "avgMaxTempC": 20.6,
    "dirs": {
     "NE": 48,
     "N": 26,
     "SW": 20
    }
   }
  ]
 },
 "_meta": {
  "source": "Open-Meteo Historical Weather API (ERA5 reanalysis, Copernicus/ECMWF)",
  "period": "2015-01-01 to 2024-12-31",
  "method": "Daytime 11:00-18:00 local; avgKn = mean daytime wind at 10 m in knots; pctDays12/15 = % of days whose daytime mean wind >= 12/15 kn; dirs = share of hours >= 8 kn by direction; avgMaxTempC = mean daily daytime max air temperature",
  "caveat": "ERA5 is a ~25-30 km reanalysis grid; it smooths local thermal and coastal acceleration, so measured beach winds are often stronger."
 }
}