Im Rahmen der Solarthermie Recherche habe ich heute ein paar Auswertungen gemacht.
Dank dem Deutschen Wetterdienst und "Marian Steinbach", dessen "DWD scraper" Quellcode habe ich zum Einlesen der Daten des Deutschen Wetterdienst verwendet.
Der Deutschen Wetterdienst im Folgenden DWD genannt stellt die Daten diverser Messstationen kostenlos im Internet bereit.
Marians Quellcode habe ich so abgeändert, dass ich die Daten nicht von der Internet Seite des DWDs lade sondern direkt von der Festplatte. Das spart Zeit beim herum Experimentieren.
Im Folgenden ein Plot der Sonnenscheindauer im Jahr 2003 für die Messstation Konstanz.
![]() |
© Deutscher Wetterdienst |
"Die tatsächliche Sonnenscheindauer ist als die Zeitspanne definiert, während der die direkte Sonnenstrahlung senkrecht zur Sonnenrichtung mindestens 120 W/m2 beträgt" Quelle: Wikipedia
Interessant ist das im Jahr 2003 fast 2060 Stunden die Sonne geschienen hat. Die Längste Sonneneinstrahlung betrug 14,5 Stunden. Es ist aber auch klar zu erkennen, dass es auch im Sommer Tage gibt an den die Einstrahlung sehr gering beziehungsweise gleich Null ist. Dafür gibt es auch im Januar und Dezember Tage an welchen die Sonne 8 Stunden geschienen hat.
Das modifizierte Python Skript befindet sich hier:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import re | |
import sys | |
import numpy | |
import matplotlib | |
matplotlib.rc('text', usetex = True) | |
import pylab | |
import scipy | |
# This stuff is based on marians-dwd-climate-data-scraper | |
# https://github.com/marians/dwd-climate-data-scraper | |
f = open('/home/chris/Solarthermie/DWD_daten_10929_konstanz.txt','r') | |
content = f.read() | |
f.close() | |
headers_regex = re.compile(r"STAT\s+JJJJMMDD\s+QN\s+TG\s+TN\s+TM\s+TX\s+RFM\s+FM\s+FX\s+SO\s+NM\s+RR\s+PM") | |
allrows = [] | |
sunshine = {} | |
curr_year = "xxxx" | |
if not headers_regex.search(content): | |
print "Error: Data not in expected format - or header line not found." | |
sys.exit(1) | |
else: | |
values_regex = re.compile(r"([0-9]{5})\s+([0-9]{8})\s+([0-9]{1,2})\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)\s+([-\.0-9]+)") | |
matches = re.findall(values_regex, content) | |
for row in matches: | |
# station_id | |
# date in format YYYYMMDD | |
# quality_level = QN = Qualitaetsniveau der Daten | |
# temperature_5cm_min = TG = Minimum der Temperatur in 5 cm ueber dem Erdboden (Grad C) | |
# temperature_200cm_min = TN = Minimum der Temperatur in 2 m ueber dem Erdboden (Grad C) | |
# temperature_200cm_average = TM = Mittel der Temperatur in 2 m ueber dem Erdboden (Grad C) | |
# temperature_200cm_max = TX = Maximum der Temperatur in 2 m ueber dem Erdboden (Grad C) | |
# relative_humidity = RFM = Mittel der relativen Feuchte (%) | |
# wind_force_average = FM = Mittel der Windstaerke (Bft) | |
# wind_speed_max = FX = Maximum der Windgeschwindigkeit (Spitzenboee) (m/sec) | |
# sunshine_duration = SO = Summe der Sonnenscheindauer (Stunden) | |
# cloud_amount_average = NM = Mittel des Bedeckungsgrades (Achtel) | |
# precipitation_height = RR = Niederschlagshoehe (mm) | |
# barometric_pressure_average = PM = Mittel des Luftdruckes in Stationshoehe (hpa) | |
row = {'station_id': int(row[0]), | |
'date': row[1], | |
'quality_level': int(row[2]), | |
'temperature_5cm_min': row[3], | |
'temperature_200cm_min': row[4], | |
'temperature_200cm_average': row[5], | |
'temperature_200cm_max': row[6], | |
'relative_humidity': row[7], | |
'wind_force_average': row[8], | |
'wind_speed_max': row[9], | |
'sunshine_duration': row[10], | |
'cloud_amount_average': row[11], | |
'precipitation_height': row[12], | |
'barometric_pressure_average': row[13] | |
} | |
date = row["date"] | |
if(False == date.startswith(curr_year)): | |
curr_year = date[0:4] | |
sunshine[curr_year] = [] | |
sunshine[curr_year].append(row['sunshine_duration']) | |
allrows.append(row) | |
for key in sunshine.iterkeys(): | |
sun = scipy.array(sunshine[key],dtype=float) | |
total_sun = numpy.sum(sun) | |
max_sun = numpy.max(sun) | |
pylab.plot(sun,'-ro') | |
pylab.xlabel('Tage') | |
pylab.ylabel('Summe Sonnenscheindauer (Stunden)') | |
pylab.title('Sonnenscheindauer Messstation Konstanz im Jahr' + key) | |
pylab.xlim(0,370) | |
pylab.grid(True) | |
pylab.text(2, max_sun-1.2, "Summe: " + str (total_sun) + 'h\nMaximum: ' + str(max_sun) +'h', {'color' : 'g', 'fontsize' : 16}) | |
pylab.savefig('Sonnenscheindauer_' + key +'.png') | |
pylab.show() | |
pylab.close() | |
Keine Kommentare:
Kommentar veröffentlichen