Download source and data
Model-Obs Difference Example
# Title: Model-Obs difference # **************************** LICENSE START *********************************** # # Copyright 2018 ECMWF. This software is distributed under the terms # of the Apache License version 2.0. In applying this license, ECMWF does not # waive the privileges and immunities granted to it by virtue of its status as # an Intergovernmental Organization or submit itself to any jurisdiction. # # ***************************** LICENSE END ************************************ import metview as mv import numpy as np use_mars = 1 if use_mars: # retrieve model data for 2m temperature (GRIB) t2m_fc48 = mv.retrieve( type = "fc", levtype = "sfc", param = "2t", date = -5, step = 48, grid = "o1280") # retrieve obs data (BUFR) synop = mv.retrieve( type = "ob", repres = "bu", date = -3) else: t2m_fc48 = mv.read('t2m_fc48.grib') synop = mv.read('t2m_obs.bufr') # filter just the 2m temperature from the obs data (Geopoints) synop_t2m = mv.obsfilter( output = "geopoints", parameter = "012004", data = synop) # compute the difference diff = t2m_fc48 - synop_t2m # define the graphical symbol plotting style max_diff = mv.maxvalue(mv.abs(diff)) diff_symb = mv.msymb( legend = "on", symbol_type = "marker", symbol_table_mode = "advanced", symbol_outline = "on", symbol_outline_colour = "charcoal", symbol_advanced_table_selection_type = "list", symbol_advanced_table_level_list = [-max_diff,-10,-5,-1,0,1,5,10,max_diff], symbol_advanced_table_colour_method = "list", symbol_advanced_table_colour_list = ["blue","sky","rgb(0.82,0.85,1)","white","white","rgb(0.9,0.8,0.8)","rgb(0.9,0.45,0.45)","red"], symbol_advanced_table_height_list = [0.6,0.5,0.4,0.3,0.3,0.4,0.5,0.6] ) # shaded land and sea to make the points stand out more grey_land_sea_shading = mv.mcoast( map_coastline_land_shade = "on", map_coastline_land_shade_colour = "RGB(0.89,0.89,0.89)", map_coastline_sea_shade = "on", map_coastline_sea_shade_colour = "grey", map_grid_latitude_increment = 20, map_grid_longitude_increment = 40, map_grid_colour = "charcoal" ) # use numpy to give us some statistics to put in the title # - we could also have done this with Metview functions vals = mv.values(diff) title = mv.mtext( text_line_1 = 'Min = ' + format(np.amin(vals), '.2f') + ' Mean = ' + format(np.mean(vals), '.2f') + ' Max = ' + format(np.amax(vals), '.2f'), text_font_size = 0.4) # adjust the legend legend = mv.mlegend(legend_text_font_size = 0.35) # define the output plot file mv.setoutput(mv.pdf_output(output_name = 'model_obs_diff_plot')) # plot the data with the style mv.plot(grey_land_sea_shading, diff, diff_symb, title, legend)