Zum Inhalt

Schwellwerte

Kompositkarten von Störmeldundungen über bestimmten Schwellwerten meteorologischer Parameter

Leseprobe

Tage mit meteorologischen Bedingungen über einem kritischen Schwellwert können überdurchschnittlich viele Meldungen hervorrufen, weil es entweder zu heiß war (Tmax>30°C), weil es örtlich Starkregen gab (Nied>20mm) oder weil hohe Windgeschwindigkeiten geherrscht (Wmax>17m/s) haben.

Durch die Kombination von täglichen Wetterdaten und Störungdaten (Filter1) je PD von 2015-2019 wurde ein Split der Daten nach einem vorgegebenen Schwellwert einer meteorologischen Größe durchgeführt. Die Meldedaten oberhalb der kritischen Schwelle wurden gemittelt und mit dem Mittelwert über die Zeit verglichen.

Beispiel Wind

An Tagen mit einer maximalen Windgeschwindigkeit von mehr al 17 m/s je PD treten Deutschlandweit 1.5 Meldungen je PD mehr auf als im Mittel. Bei 19 m/s sind es bereits 3.0 Meldungen je PD. 8.7 Meldungen je PD mehr sind es bei Windgeschwindigkeiten über 23 m/s. Also ein exponentieller Anstieg der Meldungen mit der Windgeschwindigkeit.


Ergebnis

Temperatur

tmax30 tmax31 tmax32 tmax33

Niederschlag

nied10 nied15 nied20 nied25

Windgeschwindkigkeit

wmax17 wmax19 wmax21 wmax23

Code

Module

import sys
import numpy as N
import shapefile
import scipy.stats as stats
import pylab as P
from matplotlib.collections import PatchCollection
from pylab import Polygon
from mpl_toolkits.basemap import Basemap

P.style.use('bmh')

params = {'legend.fontsize': 8,'font.family': 'serif'}
P.rcParams.update(params)

Plotting

bahns = {'bahn':[-18,18,'PiYG_r','[N]']} 
#paras = {'tmax':30,'nied':10,'wmax':17}
#paras = {'tmax':31,'nied':15,'wmax':19}
#paras = {'tmax':32,'nied':20,'wmax':21}
#paras = {'tmax':33,'nied':25,'wmax':23}
paras = {'tmax':34,'nied':30,'wmax':25}

for para in paras:

    print (para)

    fig = P.figure(figsize=(12,4))

    ax = fig.add_subplot(1,1,1)

    m = Basemap(projection='merc',llcrnrlat=47,urcrnrlat=55.2,llcrnrlon=5,urcrnrlon=16,resolution='l')
    m.readshapefile('./shp/OSS_M1_PROD_DURCH_FL_EXT_geo', 'pds',zorder=10)

    cmap=P.get_cmap(bahns['bahn'][2],11)
    norm=P.Normalize(bahns['bahn'][0],bahns['bahn'][1])

    patches   = []
    avg = []
    abs = []

    for info, shape in zip(m.pds_info, m.pds):

        pd = info['NAME']

        file = './csv/pds-uas/'+pd+'.csv'
        data=N.genfromtxt(file,names=True,comments='#',delimiter=';',dtype=None,encoding='utf-8')
        id = N.where((data['ja']>=2015)&(data['ja']<=2019))[0]

        bahn = N.array(data['Filter0'][id]) 

        file = './csv/obs-dwd/'+pd+'.csv'
        data=N.genfromtxt(file,names=True,comments='#',delimiter=';',dtype=None,encoding='utf-8')
        id = N.where((data['ja']>=2015)&(data['ja']<=2019))[0]

        tmps = N.array(data[para][id])        

        id = N.where(tmps>paras[para])[0] 

        tmp0 = N.mean(bahn)

        if(len(id)>0):

             tmp1 = N.mean(bahn[id])
             tmp = tmp1-tmp0            

        else: 

             tmp = N.nan

        if(N.isnan(tmp)==True):

              color = 'lightgray'

        else:

              color=cmap(norm(tmp))

        avg.append(tmp)
        abs.append(tmp0)
        #color=cmap(norm(tmp))

        patches.append( Polygon(N.array(shape), True, color=color) )

        pc = PatchCollection(patches, match_original=True, edgecolor='k', linewidths=0.1, zorder=2)#, alpha=0.5)

        ax.add_collection(pc)

    ax.axis('off')

    Nshp=10

    CM = P.scatter(N.zeros(Nshp),N.zeros(Nshp),s=N.zeros(Nshp),c=N.zeros(Nshp),cmap=cmap,vmin=bahns['bahn'][0],vmax=bahns['bahn'][1])    
    CB = m.colorbar(CM,location='bottom',extend='both',shrink=0.9,pad=0.05)
    CB.set_label('Abweichung vom Mittel [N]',fontsize=10,weight='bold')
    CB.ax.tick_params(labelsize=8,labelrotation=45)#,ha="center")#CB.ax.set_xticklabels(fontsize=10,rotation =45,ha="center")

    avg = N.array(avg)
    x,y = m(5.7,54.5)
    P.text(x,y,r'$\varnothing$ %.1f'%N.nanmean(avg),fontsize=10,weight='bold')

    abs = N.array(abs)
    x,y = m(5.7,54.0)
    P.text(x,y,'N %.1f'%N.nanmean(abs),fontsize=8)#,weight='bold')

    P.title('$\mathbf{\overline{N_{SW}}-\overline{N}}$: '+para+'>%i'%(paras[para]),fontsize=12,weight='bold')
    fig.tight_layout()
    fig.savefig('./img/composite_%s%i.png'%(para,paras[para]),dpi=240,transparent=False,bbox_inches='tight',pad_inches=0.0)