Metview's documentation is now on readthedocs!

Download source and data


ODB Temp Wind Example
#Metview Macro

#  **************************** LICENSE START ***********************************
# 
#  Copyright 2019 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 ************************************
# 

# -------------------------------------------------------------------------
# Tags: ODB, Wind, Map
# Title: ODB TEMP wind map
# Description: Demonstrates how to plot TEMP wind data from ODB onto a map
# ------------------------------------------------------------------------

# define pressure level
lev = 250 

# read db
db = read("temp.odb")

# define query for u wind component
q_u="select lat@hdr as lat, " &
      " lon@hdr as lon, " &
      " obsvalue as val " &           
      "where varno=3 and vertco_reference_1=" & lev*100  

# define query for v wind component
q_v="select lat@hdr as lat, " &
      " lon@hdr as lon, " &
      " obsvalue as val " &           
      "where varno=4 and vertco_reference_1=" & lev*100
 
# define query for metadata 
q_meta="select DISTINCT andate, antime" 
      
# filter u
f_u = odb_filter(
	odb_query	:	q_u,
	odb_data	:	db
	)
	
# filter v
f_v = odb_filter(
	odb_query	:	q_v,
	odb_data	:	db
	)

# filter metadata
f_m = odb_filter(
	odb_query	:	q_meta,
	odb_data	:	db
	)
	
# read the odb columns int vectors 
lat = values(f_u, "lat")
lon = values(f_u, "lon")
u = values(f_u, "val")
v = values(f_v, "val")

# read values for the title
andate = values(f_m, "andate")[1]
antime = values(f_m, "antime")[1]

# create gepoints from the odb data
gpt=create_geo(type : "xy_vector", 
    latitudes : lat, 
    longitudes : lon, 
    levels : lev,
    values : u, 
    value2s : v )
  
# define wind plotting style
colour_wind = mwind(
		legend: "on",
		wind_advanced_method	:	"on",
		wind_arrow_unit_velocity	:	50.0,
		wind_thinning_factor	:	1.0,
		wind_advanced_colour_selection_type: "interval",
		wind_advanced_colour_level_interval: 5,
		wind_advanced_colour_min_value: 0,		
		wind_advanced_colour_max_level_colour	:	"red",
		wind_advanced_colour_min_level_colour	:	"blue",
		wind_advanced_colour_direction	:	"clockwise"
		)


# define coastlines
coast = mcoast(
	map_coastline_colour	:	"RGB(0.5,0.5,0.5)",
	map_coastline_resolution	:	"low",
	map_coastline_land_shade	:	"on",
	map_coastline_land_shade_colour	:	"RGB(0.21,0.21,0.21)",
	map_coastline_sea_shade	:	"on",
	map_coastline_sea_shade_colour	:	"RGB(0.53,0.57,0.58)",
	map_grid_colour	:	"RGB(0.38,0.37,0.37)"
	)


# define title
title = mtext(text_font_size : 0.4,
            text_line_1 : "Land TEMP wind Date=" & andate & 
               " Time=" & antime & " Level=" & lev & " hPa" 
            )


# define the view
view = geoview(	coastlines: coast)

# define the output plot file
setoutput(pdf_output(output_name : 'odb_temp_wind'))

# generate the plot
plot(view, gpt, colour_wind, title)

ODB Temp Wind Example
#  **************************** LICENSE START ***********************************
# 
#  Copyright 2019 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

# -------------------------------------------------------------------------
# Tags: ODB, Wind, Map
# Title: ODB TEMP wind map
# Description: Demonstrates how to plot TEMP wind data from ODB onto a map
# ------------------------------------------------------------------------

# define pressure level
lev = 250 

# read db
db = mv.read("temp.odb")

# define query for u wind component
q_u= """select lat@hdr as lat,
       lon@hdr as lon,
       obsvalue as val       
      where varno=3 and vertco_reference_1={}""".format(lev*100)  

# define query for v wind component
q_v= """select lat@hdr as lat,
       lon@hdr as lon, 
       obsvalue as val          
      where varno=4 and vertco_reference_1={}""".format(lev*100)
 
# define query for metadata 
q_meta="select DISTINCT andate, antime" 
      
# filter u
f_u = mv.odb_filter(
	odb_query	=	q_u,
	odb_data	=	db
	)
	
# filter v
f_v = mv.odb_filter(
	odb_query	=	q_v,
	odb_data	=	db
	)

# filter metadata
f_m = mv.odb_filter(
	odb_query	=	q_meta,
	odb_data	=	db
	)
	
# read the odb columns int vectors 
lat = mv.values(f_u, "lat")
lon = mv.values(f_u, "lon")
u = mv.values(f_u, "val")
v = mv.values(f_v, "val")

# read values for the title
andate = mv.values(f_m, "andate")[0]
antime = mv.values(f_m, "antime")[0]

# create gepoints from the odb data
gpt=mv.create_geo(type = "xy_vector", 
    latitudes = lat, 
    longitudes = lon, 
    levels = lev,
    values = u, 
    value2s = v )
  
# define wind plotting style
colour_wind = mv.mwind(
		legend = "on",
		wind_advanced_method	=	"on",
		wind_arrow_unit_velocity	=	50.0,
		wind_thinning_factor	    = 1.0,
		wind_advanced_colour_selection_type = "interval",
		wind_advanced_colour_level_interval = 5,
		wind_advanced_colour_min_value = 0,		
		wind_advanced_colour_max_level_colour	=	"red",
		wind_advanced_colour_min_level_colour	=	"blue",
		wind_advanced_colour_direction	=	"clockwise"
		)

# define coastlines
coast = mv.mcoast(
	map_coastline_colour	=	"RGB(0.5,0.5,0.5)",
	map_coastline_resolution	=	"low",
	map_coastline_land_shade	=	"on",
	map_coastline_land_shade_colour	=	"RGB(0.21,0.21,0.21)",
	map_coastline_sea_shade	=	"on",
	map_coastline_sea_shade_colour	=	"RGB(0.53,0.57,0.58)",
	map_grid_colour	=	"RGB(0.38,0.37,0.37)"
	)

# define title
title = mv.mtext(text_font_size = 0.4,
            text_line_1 = "Land TEMP wind Date={:.0f} Time={:.0f} Level={:.0f} hPa".
                format(andate, antime, lev) 
            )

# define the output plot file
mv.setoutput(mv.pdf_output(output_name='odb_temp_wind'))

# generate the plot
mv.plot(coast, gpt, colour_wind, title)