Phänologischer Kalender

phenology
flowering
calendar

#1

Für die kommende Saison bekommt das Thema rund um den langgehegten Wunsch, phänologische Daten im System zu haben und z.B. für Annotationen im Grafana oder Benachrichtigungen an die Imker verwenden zu können, wieder einmal etwas Aufmerksamkeit.

Wir sind ein wenig in die Details der vom DWD erhobenen Daten eingestiegen und haben uns einen Plan zurechtgelegt.

Viel Spaß beim Nachlesen!


[RFC] Neue InfluxDB Datenquelle "BIENENJAHR"
The PhenoCam Network: An ecosystem phenology web camera network
Phenological calendar for France
Daten vom DWD verstehen, verarbeiten und darstellen
Open weather data
Datenmischwerk
Klimadatenkalender zur Anzeige der phänologischen Daten des Deutschen Wetterdienstes
#2

Phänologische Daten vom DWD

Die DWD-Daten scheinen noch (teilweise? alle? nur historisch?) per FTP abrufbar zu sein. Besonders spannend für uns sind die phänologischen Daten, gerade auch die historischen! Diese gibt es per FTP immer noch unter ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/phenology/


Erklärvideo “Phänologie” des DWD, ab Minute 1:11

Normalerweise orientieren sich die Imker am sogenannten “langjährigen Mittel”, wie das genau berechnet wird und wie viele Jahre dafür zurückgezählt wird weiß ich nicht. Ggf. können wir das aus den oben verlinkten Daten berechnen, oder es gibt genau dafür Referenzwerte, z.B. Start der Apfelblüte oder Start der Winterlindenblüte usw. Das sind Daten, die für den Imker sehr spannend sind, da er sich nicht nach dem Kalender richtet, z.B. Honigraum aufsetzen: 1. April, sondern nach der Natur. Hier ist etwa die Zeigerpflanze die Kirsche. Mit der Kirschblüte soll aufgesetzt werden.

Schön wäre, wenn wir diese Daten als annotations in Grafana hätten und diese dann als Datenreihe - je nach Bedarf - mit in ein Diagramm einblenden könnten.

Neben den Einzeldaten (s. Link oben) gibt es auch exemplarisch aggregierte Werte auf der Seite des DWD, z.B. bei https://www.dwd.de/DE/klimaumwelt/klimaueberwachung/phaenologie/produkte/produkte_node.html unter “Weitere interessante Themen”.

Neben der Pflanzenphänomenologie werden vom DWD auch tierphänomenologische Daten gesammelt, u.a. der

  • erste Reinigungsflug der Honigbiene (Apis mellifera)
  • erste Sammelflug der Honigbiene (Apis mellifera)

siehe https://www.dwd.de/DE/klimaumwelt/klimaueberwachung/phaenologie/daten_international/tierphaeno/tierphaeno.html?nn=575710


#3

Schauen wir uns einmal die öffentlichen Daten unter ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/phenology/ an. Dort gibt es die Daten der Jahresmelder (annual_reporters) und die der Sofortmelder (immediate_reporters).

Im Bereich annual_reporters gehen wir ins für uns interessante Verzeichnis “fruit”. Dort gibt es wieder “historical” und “recent”. “Recent” scheinen die Daten ab 2015 zu sein, “historical” die von 1951 bis 2015 bzw. 1991. Aprikose z.B. gibt es nur historisch bis 1991, nicht aber “recent”. Schauen wir ins Verzeichnis “recent”: In der Beschreibung sehen wir einen Link, der erklärt was die Phase_id ist

Für uns ist “5;Blüte Beginn” oder auch “6;Vollblüte” und “7;Blüte” Ende interessant.

Schauen wir nun in die eigentlichen Daten an. Die Datensätze sind nach Pflanzenart verfügbar, z.B. frühe, späte Äpfel, … Wir interessieren uns nun exemplarisch für die PH_Jahresmelder_Obst_Suesskirsche_fruehe_Reife_akt.txt

Nach dem Import z.B. in Excel (";" als Datentrennzeichen) müssen wir ggf. noch das Datum in Spalte F von JJJJMMTT Excel-Kompatibel machen. Nun können wir nach a) Phase_id und darunter nach b) Eintrittsdatum sortieren. Nun können wir den Mittelwert für die Phase “5” im Jahr 2015, 2016 und 2017 berechnen. Für die Jahre 2015 und 2016 ist der mittlere Begin der frühen Süßkirschblüte der 17.04., 2017 war es deutlich früher, nämlich am 06.04.

Wenn wir nun herausfinden was das “langjährige Mittel” offiziell ist könnten wir die Daten jährlich neu aus den öffentlich zugänglichen Daten berechnen und als annotations für unsere Graphen verfügbar machen.


#4

Unbedingt. Danke, dass Du Dich näher mit der Materie befasst.


#5

Habe gerade auch für uns sehr brauchbare aggregierten Daten des DWD zur Phänologie gefunden: Phänologiestatistik https://www.dwd.de/DE/leistungen/phaeno_sta/phaenosta.html oder auch geografische Karten https://www.dwd.de/DE/leistungen/phaeno_akt/phaenoakt.html

Der mittlere Blühbeginn auch nach Bundesland. Allerdings nicht als Rohdatenformat, sondern in den verschiedenen Grafiken als Mittelwertslinie eingezeichnet. Man müsste sich zur Weiternutzung also alle Diagramme anschauen, die Mittelwerte händisch rausschreiben und das dann für alle 16 Bundesländer … unschön.


#6

Unten rechts gibts einen Link zu einem PDF, das den Titel “Phänologische Meldestatistik” trägt:

image

Sind das die Daten, die Du Dir wünschst?


#7

Leider nicht, das sind nur die Daten des aktuellen Jahres bzw. wenn etwas die Apfelblüte bis zum aktuellen Datum noch nicht dran war die Daten des letzten Jahres. Ich möchte das “langjährige Mittel” der Apfel-/Kirsch/-xy-Blüte im besten Fall noch pro Bundesland.


#8

Verstanden. Wäre es aber u.U. nicht trotzdem toll, auch die aktuellen Jahresbeobachtungen als Annotationen im Grafana sehen zu können?


#9

Jein, die aktuellen Daten kommen ja immer step by step rein. und wie man sieht “verfälscht” ein unvollständiger Satz ja auch die Daten. Sprich, wenn die Halseblüte gerade angefangen hat, ist der Mittelwert der Meldungen fürs aktuelle Jahr nach vorne verschoben, man muss somit für vergleichbare Werte warten bis die Meldungen abgeschlossen sind. Dann ist das Ereignist “Blühbeginn” aber schon vorbei. Wenn du den Startpunkt nimmst und laufende Meldungen “im Prozess” aufnimmst musst du die aber auch täglich wieder aktualisieren, da sehe ich momentan ohne Schnittstelle vom DWD, keine praktikablen Möglichkeiten.


#10

Kann das Python Modul “dwdweather”, das auf Open weather data beschrieben wird, auch mit den Daten unter ftp://ftp-cdc.dwd.de/pub/CDC/observations_germany/phenology/annual_reporters/fruit/recent/ umgehen bzw. diese aggregieren?

Geodaten bekommt man indirekt über die erste Datenspalte, da steht die Variable Stations_id; Diese referenziert auf ftp://ftp-cdc.dwd.de/pub/CDC/help/PH_Beschreibung_Phaenologie_Stationen_Jahresmelder.txt dort sind in Spalte 3 und 4 die geographische Breite und Länge angegeben. Leider keine Bundeslandzuordnung, wohl aber die “Naturraumgruppen”, die hier erläutert und hinterlegt sind: https://www.dwd.de/DE/klimaumwelt/klimaueberwachung/phaenologie/daten_deutschland/naturraum_jultag/naturraumgruppen_naturraeume.html und als Karte hinterlegt ist.


#11

Leider noch nicht, aber nach dem Aufmöbeln der Grundfunktionalität können wir langsam daran denken, diese als neue Datenquelle zu erschließen.

Unabhängig davon könnten wir uns schon einmal Gedanken über die Berechnung des Mittelwerts von mehreren Datumsangaben machen. Als Denkanstoß haben wir folgendes zusammengetragen:

def date_median(series):
    """
    https://stackoverflow.com/questions/43889611/median-of-panda-datetime64-column/43890905#43890905
    """
    import math
    return pd.to_datetime(math.floor(series.astype('int64').median()))

def date_quantile_50(series):
    """
    https://stackoverflow.com/questions/43889611/median-of-panda-datetime64-column/48709758#48709758
    """
    return series.astype('datetime64[ns]').quantile(.5)

Auf ein paar Beispieldaten angewendet…

import pandas as pd
dates = [
    pd.Timestamp('2012-05-01T00:00'),
    pd.Timestamp('2014-06-01T00:00'),
    pd.Timestamp('2016-05-14T00:00'),
    pd.Timestamp('2018-07-14T00:00'),
]
frame = pd.DataFrame(dates)

… sind die Ergebnisse in diesem Fall für beide Verfahren identisch:

>>> date_median(frame[0])
2015-05-23 12:00:00

>>> date_quantile_50(frame[0])
2015-05-23 12:00:00

Ist es das, was Du Dir wünschst, auf die phänologischen Rohdaten anzuwenden, @clemens?


#12

Im Prinzip ist es das, allerdings ist der Median nicht das richtige Maß, das wir brauchen, sondern der Mittelwert. Median ist - wie bei dir korrekt berechnet - der 23.05.2015, wir benötigen aber das arithmetische Mittel, das wäre der 31.05.2015.


#13

Alles klar. Das klappt mit

def date_mean(series):
    import math
    return pd.to_datetime(math.floor(series.astype('int64').mean()))

ebenfalls:

>>> date_mean(frame[0])
2015-05-31 00:00:00

Danke!


#14

Versuche einmal zu skizzieren wie eine Lösung aussehen könnte

  • Import der Daten vom DWD-Server
    – Beobachtungsdaten pro Frucht
    – Datensätze der Standorte
  • ggf. Anpassung / Konvertierung der Daten, z.B. Zahlenformat
  • Anreicherung der Beobachtungsdaten mit Geodaten, d.h.
    – über die Standort-ID Längen- und Breitengrad in Datensatz 2 ermitteln
    – dies in Datensatz 1 hinzufügen
    – über die Geodaten Bundesland oder Regierungsbezirk, … bestimmen
  • Datums-Mittel berechnen (arithm. Mittel / mean) pro Bundesland pro Frucht für Phasen-ID “5”
  • als annotation pro Bundesland je für alle relevanten Zeigerpflanzen / Frucht bei Grafana zur Verfügung stellen.

Datenmischwerk
#15

Affirmative, thanks!


#16

Fände ich eigentlich auch Sinnvoll. Also beides. Von der jetzigen Natur der Darstellung im Grafana ist es ja eher selten so, dass man in die Zukunft hinaus zoomt. Will sagen, dass die Annotation gar nicht sichbar ist, solange man nicht dort hin zoomt.

Dennoch ist es natülich total sinnvoll darüber bescheid zu wissen.

Hab mich gestern mit Andreas unterhalten, am schönsten wäre es, man würde sich bei dem Phänologischen Vorraussage an dem SunMoon plugin orientieren insofern, dass die Graphen eine (von jahr zu Jahr bereinigte) Funktion als Grundlage haben.

Sobald aber der Zeitpunkt gekommen ist, dass eine Blüte begonnen hat, würde man sich eigentlich den tatsächlichen Zeitpunkt in den Daten wünschen um dort dann auch das Verhalten der Bienen damit korrelieren lassen zu können, bzw. den Honig zu bestimmen ;). Oder?


#17

Darstellung der Blütephasen

Das gute vis.js kann schöne Timeline Visualisierungen erzeugen.

Den Gestaltungsmöglichkeiten im Detail scheinen keine Grenzen gesetzt.


#18

Neben den oben gelisteten Rohdaten gibt es vom DWD auch jährliche geografische Rasterdaten, die könnten für uns interessant sein:
ftp://ftp-cdc.dwd.de/pub/CDC/grids_germany/annual/phenology/.


#19

So weit ich mit entsinne haben wir nicht für alle Pflanzen den kompletten Blütenzyklus von Blühbeginn bis Ende Blüte, daher werden wir das vermutlich nicht brauchen können.

Noch eine Frage dazu. Die Daten sollen ja parallel mit den Stockdaten in Grafana landen, dann bringt uns vis.js Co. ja nichts, oder?


#20

Es wäre eine alternative Darstellungsform, die für den Anfang deutlich leichter zu erschließen ist als die Integration in Grafana, sobald wir die Daten in der entsprechenden Form vorliegen haben.

Als reguläre Annotationen lassen sich die Zeitpunkte natürlich bereits einfach eintragen. Unser langfristiger Wunsch, die Daten über ein Addon à la Sun and Moon datasource im Grafana zur Verfügung zu stellen, erfordert jedoch deutlich mehr Aufwand.