Пример #1
0
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from io import StringIO
import wradlib
import satlib as sl
import wradlib as wrl
from osgeo import osr
import h5py
import glob
from pcc import get_my_cmap
from pcc import get_miub_cmap
from pcc import boxpol_pos

bonn_pos = boxpol_pos()
bx, by = bonn_pos['gkx_ppi'], bonn_pos['gky_ppi']
bonnlat, bonnlon = bonn_pos['lat_ppi'], bonn_pos['lon_ppi']
blat, blon = bonn_pos['lat_ppi'], bonn_pos['lon_ppi']

from pcc import plot_borders
from pcc import plot_radar

dates = '20140729'
#dates ='20151216'

#def gpm_bb(dates, pn=0):
zt = dates

pfad = ('/automount/ags/velibor/gpmdata/dpr/2A.GPM.DPR.V6-20160118.' + zt +
        '*.HDF5')
Пример #2
0
"""


import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from io import StringIO
import satlib as sl
import h5py
import glob
import wradlib
from pcc import get_my_cmap
from pcc import get_miub_cmap
from pcc import boxpol_pos
bonn_pos = boxpol_pos()
bx, by = bonn_pos['gkx_ppi'], bonn_pos['gky_ppi']
bonnlat, bonnlon = bonn_pos['lat_ppi'], bonn_pos['lon_ppi']

from pcc import plot_borders
from pcc import plot_radar

dates ='20141007'

pfad = ('/automount/ags/velibor/gpmdata/dpr/2A.GPM.DPR.V6-20160118.'+dates+'*.HDF5')

dpr_pfad = sorted(glob.glob(pfad))[0]
print dpr_pfad

scan = 'MS' #or MS
Пример #3
0
import pandas as pd
import wradlib
from scipy import stats
import matplotlib.cm as cm
my_cmap = cm.get_cmap('jet',40)
my_cmap.set_under('lightgrey')
my_cmap.set_over('darkred')
from pcc import get_miub_cmap as my_cmap
from pcc import plot_radar
from pcc import boxpol_pos
from pcc import plot_borders
import wradlib as wrl
from osgeo import osr
from satlib import ipoli_radi_stat
from satlib import corcor
Pos = boxpol_pos()
blon0, blat0 = Pos['lon_ppi'], Pos['lat_ppi']
bbx, bby = Pos['gkx_ppi'], Pos['gky_ppi']
from time import *
from pcc import cut_the_swath
from satlib import good_overpasses_dpr_boxpol as overpasses_dpr_boxpol

print ("_")



tstart = clock()

#print (overpasses_dpr_boxpol)

for ii in overpasses_dpr_boxpol.keys()[0]:
Пример #4
0
import math
import pandas as pd
from scipy import stats
# ftp://ftp.meteo.uni-bonn.de/pub/pablosaa/gpmdata/

import matplotlib.cm as cm
my_cmap = cm.get_cmap('jet',40)
my_cmap.set_under('lightgrey')
my_cmap.set_over('darkred')
from pcc import get_miub_cmap as my_cmap
from pcc import plot_radar
from pcc import boxpol_pos
import wradlib as wrl
from osgeo import osr

Pos = boxpol_pos()
bblon, bblat = Pos['lon_ppi'], Pos['lat_ppi']
gkx, gky = Pos['gkx_ppi'], Pos['gky_ppi']

def get_frist_and_last_valid(data,attributes,thr):
    '''
    This function enables you to find valid pixels with preciptitation. To choose correct and uncluttered bins different
    radii are treatet differently:

        < 5 km all pixel must be larger than rhohv and zh threshold within a radius of +- 3 pixel
        >=5 km but < 20 km all pixel must be larger than rhohv and zh threshold within a radius of +- 2 pixel
        >=20 km but < 50 km all pixel must be larger than rhohv and zh threshold within a radius of +- 1 pixel
        >=50 km but < 100 km all pixel must be larger than rhohv and zh threshold within a bin_radius in equal azi of +- 1 pixel

    The first valid and the last valid radii are choosen as the ones where all substractions are fullfilled.
    '''
Пример #5
0
def gpm_bb(dates, pn=0):
    zt = dates

    pfad = ('/automount/ags/velibor/gpmdata/dpr/2A.GPM.DPR.V6-20160118.' + zt +
            '*.HDF5')
    dpr_pfad = sorted(glob.glob(pfad))[pn]

    print dpr_pfad

    scan = 'NS'  #or MS

    # Einlesen
    dpr = h5py.File(dpr_pfad, 'r')
    dpr_lat = np.array(dpr[scan]['Latitude'])
    dpr_lon = np.array(dpr[scan]['Longitude'])
    dpr_pp = np.array(dpr[scan]['SLV']['zFactorCorrected'])
    dpr_pp[dpr_pp < 0] = np.nan

    dpr_pp_surf = np.array(dpr[scan]['SLV']['zFactorCorrectedNearSurface'])
    dpr_pp_surf[dpr_pp_surf < 0] = np.nan

    dpr_bbh = np.array(dpr[scan]['CSF']['heightBB'], dtype=float)
    dpr_bbh[dpr_bbh < 0] = np.nan
    dpr_bbw = np.array(dpr[scan]['CSF']['widthBB'], dtype=float)
    dpr_bbw[dpr_bbw < 0] = np.nan

    dpr_time = dpr['NS']['ScanTime']

    proj_stereo = wrl.georef.create_osr("dwd-radolan")
    proj_wgs = osr.SpatialReference()
    proj_wgs.ImportFromEPSG(4326)

    from pcc import boxpol_pos
    bonn_pos = boxpol_pos()
    bx, by = bonn_pos['gkx_ppi'], bonn_pos['gky_ppi']
    bonnlat, bonnlon = bonn_pos['lat_ppi'], bonn_pos['lon_ppi']
    blat, blon = bonn_pos['lat_ppi'], bonn_pos['lon_ppi']

    dpr_lon, dpr_lat = wradlib.georef.reproject(dpr_lon,
                                                dpr_lat,
                                                projection_target=proj_stereo,
                                                projection_source=proj_wgs)
    bonnlon, bonnlat = wradlib.georef.reproject(bonnlon,
                                                bonnlat,
                                                projection_target=proj_stereo,
                                                projection_source=proj_wgs)

    print '-------->', bonnlon, bonnlat

    lon0, lat0, radius = bonnlon, bonnlat, 100
    r = np.sqrt((dpr_lat - lat0)**2 + (dpr_lon - lon0)**2)
    position = r < radius

    lat = dpr_lat[position]
    lon = dpr_lon[position]

    dpr_pp[np.where(r > radius)] = np.nan
    pp = dpr_pp

    dpr_pp_surf[np.where(r > radius)] = np.nan

    dpr_bbw[np.where(r > radius)] = np.nan
    dpr_bbh[np.where(r > radius)] = np.nan

    # Zeitstempel erstellen
    l2, l1 = -190, -250
    k2, k1 = -4210, -4270
    # BoxPol
    #l2, l1 = -110, -320
    #k2, k1 = -4130, -4340
    #
    pos = np.where((dpr_lat < k2) & (dpr_lat > k1) & (dpr_lon < l2)
                   & (dpr_lon > l1))

    stunde = np.array(dpr_time['Hour'])[pos[0]][0]
    minute = np.array(dpr_time['Minute'])[pos[0]][0]
    sekunde = np.array(dpr_time['Second'])[pos[0]][0]

    jahr = np.array(dpr_time['Year'])[pos[0]][0]
    monat = np.array(dpr_time['Month'])[pos[0]][0]
    tag = np.array(dpr_time['DayOfMonth'])[pos[0]][0]
    zeit = (str(jahr) + '.' + str(monat) + '.' + str(tag) + ' -- ' +
            str(stunde) + ':' + str(minute) + ':' + str(sekunde))
    print zeit

    h = np.arange(150, 4800, 150)
    if scan == 'HS':
        hdpr = 1000 * (np.arange(88, 0, -1) * 0.250)

    else:
        hdpr = 1000 * (np.arange(176, 0, -1) * 0.125)

    hhh = np.array(pp.shape[0] * pp.shape[1] * list(hdpr))
    ppp = pp.reshape(pp.shape[0] * pp.shape[1] * pp.shape[2])

    maske = ~np.isnan(hhh) & ~np.isnan(ppp)

    fig = plt.figure(figsize=(14, 12))
    zzz = str(jahr) + '-' + str(monat) + '-' + str(tag) + '--' + str(
        stunde) + ':' + str(minute) + ' UTC'
    fig.suptitle(zzz + ' UTC')

    ###################
    ax1 = fig.add_subplot(221, aspect='auto')
    #plt.subplot(2,2,1)
    plt.pcolormesh(dpr_lon,
                   dpr_lat,
                   np.ma.masked_invalid(dpr_pp_surf),
                   vmin=np.nanmin(dpr_pp_surf),
                   vmax=np.nanmax(dpr_pp_surf),
                   cmap=get_miub_cmap())
    cbar = plt.colorbar()
    cbar.set_label('Ref. in dbz')
    plot_borders(ax1)
    plot_radar(blon, blat, ax1, reproject=True, cband=False, col='black')
    plt.plot(dpr_lon[:, 0], dpr_lat[:, 0], color='black', lw=1)
    plt.plot(dpr_lon[:, -1], dpr_lat[:, -1], color='black', lw=1)
    plt.plot(dpr_lon[:, dpr_lon.shape[1] / 2],
             dpr_lat[:, dpr_lon.shape[1] / 2],
             color='black',
             lw=1,
             ls='--')

    ax1 = plt.scatter(bonnlon, bonnlat, c=50, s=50, color='red')

    plt.grid()
    plt.xlim(-420, 390)
    plt.ylim(-4700, -3700)

    ##################
    ax2 = fig.add_subplot(222, aspect='auto')
    plt.hist2d(ppp[maske], hhh[maske], bins=30, cmap=get_my_cmap(), vmin=0.1)
    print pp.shape

    #plt.plot(np.nanmax(pp[:,:],axis=0),hdpr, color='red', lw=2)
    plt.plot(np.nanmean(pp[:, :, :], axis=(0, 1)), hdpr, color='red', lw=2)
    plt.plot(np.nanmedian(pp[:, :, :], axis=(0, 1)), hdpr, color='green', lw=2)
    cbar = plt.colorbar()
    cbar.set_label('#')

    plt.title('DPR Ref. in Box')
    plt.xlabel('Reflectivity in dBZ')
    plt.grid()
    plt.xticks()
    plt.yticks()

    #plt.ylim(0,6000)
    #plt.xlim(0,50)
    ##################
    #print np.uniforn(bbh)
    #mini = np.nanmin(bbh[bbh>0])

    ax3 = fig.add_subplot(223, aspect='auto')
    plt.pcolormesh(dpr_lon,
                   dpr_lat,
                   np.ma.masked_invalid(dpr_bbh),
                   vmin=np.nanmin(dpr_bbh[dpr_bbh > 0]),
                   vmax=np.nanmax(dpr_bbh),
                   cmap='jet')
    cbar = plt.colorbar()
    cbar.set_label('BB Hight in m')

    plot_borders(ax3)
    plot_radar(blon, blat, ax3, reproject=True, cband=False, col='black')
    plt.plot(dpr_lon[:, 0], dpr_lat[:, 0], color='black', lw=1)
    plt.plot(dpr_lon[:, -1], dpr_lat[:, -1], color='black', lw=1)
    plt.plot(dpr_lon[:, dpr_lon.shape[1] / 2],
             dpr_lat[:, dpr_lon.shape[1] / 2],
             color='black',
             lw=1,
             ls='--')

    ax1 = plt.scatter(bonnlon, bonnlat, c=50, s=50, color='red')
    plt.grid()
    #plt.title('BB Hight')
    plt.xlim(-420, 390)
    plt.ylim(-4700, -3700)

    ##################
    ax4 = fig.add_subplot(224, aspect='auto')
    plt.pcolormesh(dpr_lon,
                   dpr_lat,
                   np.ma.masked_invalid(dpr_bbw),
                   vmin=np.nanmin(dpr_bbw[dpr_bbh > 0]),
                   vmax=np.nanmax(dpr_bbw),
                   cmap='jet')
    cbar = plt.colorbar()
    cbar.set_label('BB Width in m')

    plot_borders(ax4)
    plot_radar(blon, blat, ax4, reproject=True, cband=False, col='black')
    plt.plot(dpr_lon[:, 0], dpr_lat[:, 0], color='black', lw=1)
    plt.plot(dpr_lon[:, -1], dpr_lat[:, -1], color='black', lw=1)
    plt.plot(dpr_lon[:, dpr_lon.shape[1] / 2],
             dpr_lat[:, dpr_lon.shape[1] / 2],
             color='black',
             lw=1,
             ls='--')

    ax1 = plt.scatter(bonnlon, bonnlat, c=50, s=50, color='red')
    plt.grid()
    #plt.title('BB Width')
    plt.xlim(-420, 390)
    plt.ylim(-4700, -3700)

    plt.tight_layout()
    plt.show()