Overview
You have seen already how to visualise your outputs either on the display or saving it to a file. Most processing you will do with Metview will lead to a visualisation you might want to save to either publish it on web pages or in reports or simply to keep records. This session will give you more information on how you can save and customise your visualisations.
Output formats
All graphical output formats are generated through ECMWF's graphics library Magics. This means that all graphical capabilities in Metview depends on what Magics offers. Detailed descriptions of the output formats and their settings can be found in the Magics reference documentation.
The table below gives you a list of all the formats Magics/Metview support and how you can use them.
Format | parameter | How to visualise | What to use for |
---|---|---|---|
Qt | Metview display window | Interactive usage within Metview | |
PostScript | ps/eps | okular, ghostscript/gv | Printing, publications |
okular, acroread | Web, archiving | ||
PNG | png | web browsers, display, xv | Web, presentations -> animations |
SVG | svg | web browsers, vector graphics editor (e.g. Inkscape) | Web HTML5, for further editing in drawing programs |
KML/KMZ | kml | Google Earth, Google Maps, OpenLayers | Interactive (non-scientific) publications |
KML as output format
KML is a very special output format. It has no notion of output size since it is displayed on the globe. KMZ is the compressed version of the KML files and is written by default. You can write out the uncompressed KML if you want to debug the output.
Be careful
The KML output is still experimental and we look for feedback on it. KML can only be generated if the Cylindrical projections is selected!
Metadata
When a large number of plots are generated it is often hard to find later plots with specific contents. What can help is to store additional information with the plots to describe what the content is. These descriptions about the content are called Metadata. Magics/Metview support the saving of such metadata when the format allows this. Especially in text/XML based formats, such as Postscript and SVG, you can use simple UNIX tools like grep to search the files for specific keywords.
How to save your visualisations
Here we quickly recap how you can save your display from the interactive plot window or save them within Macros.
Exporting from the plot window
Whenever you have a plot window open, you are able to export the plot into other file formats. You can either select the export button in the menu (looks like a floppy disk with a pen),
or select File > Export or use the Ctrl+s keyboard shortcut.
You will be presented with a dialogue (shown below) similar to what is used by other programs to choose a location and filename for the saved output.You can select which pages you want to save (if you have a series of them), which format and if you want to edit any format specific options.
If you select the "spanner" icon
, you are offered an editor to choose format specific options. The example below shows the options for the KML format.Tasks
- From an open display window, try to save your plot as a PDF.
- Now try to save your plot as an SVG with and without fixed dimensions.
- Open both files in Firefox and see how the plots behave when you resize the browser window.
- Open one of the SVGs in inkscape and edit the images (for example add some text) and save it as a PDF.
Setting output formats in macro code
You will have already seen some examples of how to save outputs in Macro in previous exercises. The following code example shows how to set multiple output formats at the same time and also set various parameters for the different output formats. Note that in most cases the default values are sufficient. A list of all options can found in the Magics documentation for each format at: PostScript, SVG, PNG and KML.
# # Setting common output options for multiple formats # output_common = ( output_name : "/tmp/myOutputTest", # specify full path output_width : 1000, # set width in pixel output_title : "Map of Z500", # title used by a viewer output_debug : "ON", # print extra information output_filelist : "ON", # save list of files generated output_filelist_name : "/tmp/filelist.txt" # where to save the list ) ps = ps_output( output_common, output_ps_scale : 0.9, # scale content to 90%, for some printers output_ps_colour_model : "CMYK" # set colour model to CYMK ) png = png_output( output_common, output_cairo_transparent_background : "ON" # to get transparent PNGs ) svg = svg_output( output_common, output_svg_fix_size : "ON", # this fixes the size to 'output_width' output_svg_meta : "Metview map of Z500", output_svg_desc : "This file was generated for the Training course" ) kml = kml_output( output_common, kml_description : "This file was generated for the Training course", kml_author : "Stephan Siemen", kml_link : "http://www.ecmwf.int", kml_latitude : 30, # latitude where Google Earth centres the view kml_longitude : 120, # longitude where Google Earth centres the view kml_coastlines : "ON" # normally ) output_drivers = [ps, png, svg, kml] setoutput(output_drivers) data = read("z500.grib") plot(data)
Setting output dependent on runmode
Depending on how you run your Macros you might want to specify various output formats. For example, you might sometimes open your output in the display window, while you might like to save it to a PNG file when you run your Macro in batch. The way to code run mode dependent outcomes is by using the function runmode(). It returns a string with the run mode:
mode = runmode()
So it is enough to check this string and to code accordingly, either using if/else conditions or the case/of condition test. To introduce the new functionality, replace the existing unconditional call to setoutput() by the following lines of code :
# check run mode mode = runmode() # select outcome dependent on run-mode if(mode = "execute") then setoutput(to_pngfile) else if (mode = "batch") then setoutput(to_psfile) else if (mode = "visualise") then print('Plotting to screen') # for screen do nothing else if (mode = "prepare") then print('Plotting to screen') # for screen do nothing else fail("Only execute, batch and visualise allowed") end if
Now, depending on how you call the macro, your output will be directed to different media. Choose different options from the icon’s right-click menu to see what happens. Note that you can also simulate these actions from within the Macro editor ( Program | Run Options). The ‘prepare’ run mode is the default one when you run your macro from the Macro editor. The ‘batch’ run mode will be explained in a later paragraph.
If you select an option not covered by the allowed run modes (e.g. Save or Examine), the macro will stop, turn red (failed run) and issue an error message - this behaviour is provided by the fail() function. A related function, stop(), will do the same but allow the macro to exit in the green state (successful run).
To run the macro in batch mode, you call Metview with the option -b followed by the macro name on the command line (assuming you are running from the same directory as the macro - otherwise you must provide a path to it) or in shell scripts. For example:
metview -b mymacro.mv
Task
Create a new Macro icon and rename it outputs. Write a macro code to read the file z500.grib and visualise it on the screen when executed and saved to a PNG if run in batch mode. For any other run mode the output should be saved as a PostScript file.
- Run the code in the Macro Editor and see what happens if your execute the macro.
- Go on the command line and change to the directory where the macro is located. Execute the macro from the command line outside Metview.
Pages
Some graphical formats, such as PostScript and PDF, allow multiple pages within the documents. Other formats, such as PNG, will contain a single page at the time and therefore contain a number in their filename to indicate which page they contain. You can trigger a new page in Metview Macro with the function
newpage()
This function is normally used within loops to generate output of each iteration on a separate page (or file).
Task
Take the macro from the previous task and add a page where you visualise the same field but over Europe only.
Further processing outside Metview
Of course you can do further processing of plots outside Metview. The page Generating animated GIFs from Metview plots gives you some helpful advice if you want to build animations.
Metview/Magics also supports special tags in SVG for the Inkscape graphical editor. This open source editor is great for when you need to further annotate your maps.
If you have extra time
If you have time, you might want to try out opening your SVG file from the first exercise above in inkscape and alter it and save it to a PNG.
Using Web Map Services (WMS)
Metview provides a module to request maps from a Web Map Services (WMS). The WMS standard is defined by the Open Geospatial Consortium (OGC), which is very popular in the GIS community. The WMS module can be used to query an OGC-compliant WMS server, retrieve maps from it and overlay them with other data. The WMS icon is a great way to integrate web services within Metview.
We have a separate tutorial which shows in more detail how you can use maps served by web map services within Metview.
Tasks
- Try out the four WMS icons in the directory by visualising them.
- Drop the icon into a macro editor to explore how a WMS retrieval looks like.