(* Weather for a given date *) printTemp[wt_] := ToString[NumberForm[N[wt], {3, 1}, ExponentFunction -> (Null &)]] <> "°"; printTemp0[wt_] := ToString[Round[wt]] <> "°"; printWind[wv_] := ToString[NumberForm[N[wv], {3, 1}, ExponentFunction -> (Null &)]] <> " km/hour"; printPrec[x_] := ToString[NumberForm[N[10 x], {3, 1}, ExponentFunction -> (Null &)]] <> " mm"; printProc[x_] := ToString[Round[100 x/wprecaverage]] <> "%"; maintainWeatherDate[date_List] := ( (* condition *) wcond = ""; data = wAggData["Conditions", "Day"]; data = Select[data, (#[[1]] === date) &]; data1 = wAggData["PrecipitationTypes", "Day"]; data1 = Select[data1, (#[[1]] === date) &]; If[data =!= {}, data = data[[1, 2]]; If[data1 =!= {}, data = Join[data, data1[[1, 2]]]; ]; If[MatchQ[data, {List__}], wcond = stringtrim[StringJoin[Riffle[ToLowerCase/@data, ", "]]] <> ". "; ]; ]; (* temperature *) wtemp = wtempmean = wtempmin = wtempmax = ""; data = wAggData["MeanTemperature", "Day"]; data = Select[data, (#[[1]] === date) &]; If[data =!= {}, data = data[[1, 2]]; If[NumberQ[data], wtempmean = data]; ]; data = wAggData["MinTemperature", "Day"]; data = Select[data, (#[[1]] === date) &]; If[data =!= {}, data = data[[1, 2]]; If[NumberQ[data], wtempmin = data]; ]; data = wAggData["MaxTemperature", "Day"]; data = Select[data, (#[[1]] === date) &]; If[data =!= {}, data = data[[1, 2]]; If[NumberQ[data], wtempmax = data]; ]; (* Average over many years *) mdays = 10; dates = Table[DatePlus[date, {n, "Day"}], {n, -mdays, mdays}]; dates = Drop[#, 1] & /@ dates; data = wAggData["MeanTemperature", "Day"]; data = Select[data, MemberQ[dates, Drop[#[[1]], 1]] &]; data = #[[2]] & /@ data; data = Select[data, NumberQ]; wtempaverage = Mean[data]; (* Minimum over preceding two weeks *) mdays = 14; dates = Table[DatePlus[date, {n, "Day"}], {n, -mdays, -1}]; data = wAggData["MinTemperature", "Day"]; data = Select[data, MemberQ[dates, #[[1]]] &]; data = #[[2]] & /@ data; data = Select[data, NumberQ]; wtempmin2 = Min[data]; If[NumberQ[wtempmean] && NumberQ[wtempmin] && NumberQ[wtempmax] && NumberQ[wtempaverage] && NumberQ[wtempmin2], wtempd = wtempmean - wtempaverage; wtempa = Abs[wtempd]; wta = printTemp[wtempa]; wta = If[wtempa < 0.1, "average", If[wtempd < 0, wta <> " lower than normal", wta <> " higher than normal"]]; wtempmin2p = printTemp0[wtempmin2]; If[wtempmin2 < 0, wtempmin2p = "" <> wtempmin2p <> "";]; wtemp = "Temperature " <> printTemp[wtempmean] <> " (" <> wta <> "), min. " <> printTemp0[wtempmin] <> ", max. " <> printTemp0[wtempmax] <> ", min. over preceding two weeks is " <> wtempmin2p <> ". "; ]; (* wind speed *) wwind = ""; data = wAggData["MeanWindSpeed", "Day"]; data = Select[data, (#[[1]] === date) &]; If[data =!= {}, data = data[[1, 2]]; If[NumberQ[data], wwind = data]; ]; If[NumberQ[wwind], wwind = "Wind speed " <> printWind[wwind] <> ". "]; (* precipitation *) wprec = wprect = wprec2 = wprec8 = wprecaverage = ""; data = wAggData["TotalPrecipitation", "Day"]; data = Select[data, (#[[1]] === date) &]; If[data =!= {}, data = data[[1, 2]]; If[NumberQ[data], wprect = data]; ]; (* Average over many years *) mdays = 15; dates = Table[DatePlus[date, {n, "Day"}], {n, -mdays, mdays}]; dates = Drop[#, 1] & /@ dates; data = wAggData["TotalPrecipitation", "Day"]; data = Select[data, MemberQ[dates, Drop[#[[1]], 1]] &]; data = #[[2]] & /@ data; data = Select[data, NumberQ]; wprecaverage = Mean[data]; (* Mean over preceding two weeks *) mdays = 14; dates = Table[DatePlus[date, {n, "Day"}], {n, -mdays, -1}]; data = wAggData["TotalPrecipitation", "Day"]; data = Select[data, MemberQ[dates, #[[1]]] &]; data = #[[2]] & /@ data; data = Select[data, NumberQ]; wprec2 = Mean[data]; (* Mean over preceding two months *) mdays = 60; dates = Table[DatePlus[date, {n, "Day"}], {n, -mdays, -1}]; data = wAggData["TotalPrecipitation", "Day"]; data = Select[data, MemberQ[dates, #[[1]]] &]; data = #[[2]] & /@ data; data = Select[data, NumberQ]; wprec8 = Mean[data]; If[NumberQ[wprect] && NumberQ[wprec2] && NumberQ[wprec8] && NumberQ[wprecaverage], wprecp = printPrec[wprect]; If[wprect > 0, wprecp = wprecp <> " (" <> printProc[wprect] <> " normal)"]; wprec = "Precipitation " <> wprecp <> ", preceding two weeks " <> printProc[wprec2] <> " normal, preceding two months " <> printProc[wprec8] <> " normal. "; ]; );