Liebe Freundinnen und Freunde von Realdaten,
Ab Mai 2025 macht MeteoSchweiz ihre Daten schrittweise als Open
Government Data (OGD) zugänglich.
Die verfügbaren Daten können entweder manuell heruntergeladen oder
automatisch als Dateien bezogen werden.
https://www.meteoschweiz.admin.ch/service-und-publikationen/service/open-data.html
Die Station Kloten misst seit 1.1.1935:
https://data.geo.admin.ch/ch.meteoschweiz.ogd-smn/klo/ogd-smn_klo_d_historical.csv
Seit 1.3.1950 wird die Tagesmitteltemperatur (tre200d0) ausgewiesen.
Ein Heiztag liegt vor, wenn die Tagesmitteltemperatur nicht über
(Schweiz: 12 °C, BRDtld: 15 °C) steigt.
Die Differenz zwischen (Schweiz: 20 °C, DBDtld: 21 °C) und der
Tagesmitteltemperatur an einem Heiztag wird als Heizgradtag [K d]
bezeichnet
und deren Darstellung ist recht geradlinig
Man beachte, dass trotz des Abschwungs der Extremwerte (4200, 3200) ->
(3400, 2800) die
2800 Heizgradtage bedeuten, dass weiterhin geheizt wird.
Grüsse
Udo.
Heizgradtage Kloten
klotenD = Import[FileNameJoin[{NotebookDirectory[], "others",
"swissmeteo", "ogd-smn_klo_d_historical.csv"}], "CSV"];
klotenS = Select[Take[First[StringSplit[#, ";"]], 3] & /@ klotenD,
(StringLength[#[[3]]] > 0) &]
klotenTS = {DateObject[StringTake[#[[2]], 10], "Day"],
If[ToExpression[#[[3]]] <= 12,
Quantity[20 - ToExpression[#[[3]]], "Kelvins"*"Days"], (* else *)
Quantity[0, "Kelvins"*"Days"]]} & /@ Rest[klotenS]
hgtHissy::granularNA = "Granularity of `1` is not in `2`.";
hgtHissy::offRange = "Either `1` or `2` outside the data range.";
hgtHissy[d2_DateObject, d1_DateObject] := hgtHissy[d1, d2] /;
QuantityMagnitude[DateDifference[d2, d1, "Day"]] < 0
hgtHissy[d1_DateObject, d2_DateObject] := Quantity[0, "Days"*"Kelvins"]
/; QuantityMagnitude[DateDifference[d1, d2, "Day"]] == 0
hgtHissy[d1_DateObject, d2_DateObject] := Block[{ts =
TimeSeries[klotenTS], granularOK = {"Day"}, gran1, gran2},
{gran1, gran2} = Information[#]["Granularity"] & /@ {d1, d2};
If[ContainsAny[{gran1}, granularOK],
If[ContainsAny[{gran2}, granularOK],
If[DateObject[ts["FirstDate"], "Day"] <= d1 \[And]
DatePlus[d2, -1] <= DateObject[ts["LastDate"], "Day"],
(* the Total[] presumes daily data *)
Total[TimeSeriesWindow[ts, {d1, DatePlus[d2, -1]}]],(* else *)
Message[hgtHissy::offRange, d1, DatePlus[d2, -1]];
Return[$Failed]
], (* else *)
Message[hgtHissy::granularNA, d2, granularOK];
Return[$Failed]
], (* else *)
Message[hgtHissy::granularNA, d1, granularOK];
Return[$Failed]
]
] /; QuantityMagnitude[DateDifference[d1, d2, "Day"]] > 0
hgtK = hgtHissy @@@ Table[{DateObject[{o, 1, 1}, "Day"], DateObject[{o +
1, 1, 1}, "Day"]}, {o, 1951, 2024}]
DateListStepPlot[ Transpose[{Table[DateObject[{o}, "Year"], {o, 1951,
2024}], hgtK}],
FrameLabel -> {"Jahr", "HGT"},
PlotLabel -> "Heizgradtage in Zürich/Kloten", Filling -> Axis]
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html