Unidata IDV Workshop for version 6.3 > Accessing and Displaying Data > Working with WRF Output > Jython
3.13.1.1 Units
How to change the units shown in a display.
Changing units on a display can be done by modifying one line of code and adding one new line:
filename = './wrfprs_d01.060'
file_opener = 'file.grid'
ds = makeDataSource(filename, file_opener)
variable = 'Pressure_reduced_to_MSL @ msl'
display_type = 'planviewcontour'
image_dimensions = (800, 600)
output_name = 'contour2D.png'
setOffScreen(1)
idv.getStateManager().setViewSize(java.awt.Dimension(image_dimensions[0], image_dimensions[1]))
pressure = getData(ds.getName(), variable)
dc = createDisplay(display_type, pressure)
dc.setDisplayUnitName('mb')
pause()
image = getImage()
writeImage(output_name) |
Note that we've created a DisplayControlBase
object dc
(specifically a ContourPlanViewControl
object, a subclass of DisplayControlBase
), and changed the unit using the method setDisplayUnitName
. While the goal of changing units has been accomplished, notice that it seems as though we have lost the characteristic of the contours to be colored based on value. However, this is not the case - we simply need to update the color range, as it still reflects the range of values in units of Pa:
filename = './wrfprs_d01.060'
file_opener = 'file.grid'
ds = makeDataSource(filename, file_opener)
variable = 'Pressure_reduced_to_MSL @ msl'
display_type = 'planviewcontour'
image_dimensions = (800, 600)
output_name = 'contour2D.png'
setOffScreen(1)
idv.getStateManager().setViewSize(java.awt.Dimension(image_dimensions[0], image_dimensions[1]))
pressure = getData(ds.getName(), variable)
dc = createDisplay(display_type, pressure)
old_unit = dc.getDisplayUnit()
dc.setDisplayUnitName('mb')
new_range = dc.convertColorRange(dc.getRange(),old_unit)
dc.setRange(new_range)
pause()
image = getImage()
writeImage(output_name) |
The first thing needed is to save the old_unit
(Pa), which has to be used in the function to get the new_range
(the range after converting the display unit to mb). Finally, we set the color range to new_range
using the setRange
method, and voilà!
Unidata IDV Workshop for version 6.3 > Accessing and Displaying Data > Working with WRF Output > Jython