Unidata - To provide the data services, tools, and cyberinfrastructure leadership that advance Earth system science, enhance educational opportunities, and broaden participation. Unidata
         
  advanced  
 

Displaying wind barbs correctly

Hi All,

Lets say I've got data of MathType ((lat,lon)->(u,v)) and I want to
display this using wind barbs (where u = x component of wind and v = y component).

To do this, I create scalar maps of u mapped to Flow1X and v to Flow1Y.
I then need to call "setRange" on these scalar maps eg:
uMap.setRange(-3.0, 3.0);
vMap.setRange(-3.0, 3.0);

If I don't do this, then the windbarbs display as "calm" (0 knots).
If I choose -3 to 3, then it displays correctly (5 knots in the example
below).
If I choose other numbers (eg -1 to 1) then the wind barb displays
incorrectly (10 knots in the example below).

Can anyone explain why?

Thanks,

James

Above problem is illustrated by the jython code (and data file) below,
which incorrectly displays a 5 knot wind as 10 knot wind barbs:

from visad.python.JPythonMethods import *
from visad import RealType, Real, FunctionType, FlatField, RealTuple,
ScalarMap, Display
from visad.data.text import TextAdapter
from visad.bom import BarbRendererJ3D

import subs, graph, sys

width = 800
height = 600

textAdapter = TextAdapter("uv.txt")

data = textAdapter.getData()
print data

uType = RealType.getRealType("U")
vType = RealType.getRealType("V")

latitudeType = RealType.Latitude
longitudeType = RealType.Longitude

xMap = ScalarMap(longitudeType, Display.XAxis)
yMap = ScalarMap(latitudeType, Display.YAxis)
uMap = ScalarMap(uType, Display.Flow1X)
vMap = ScalarMap(vType, Display.Flow1Y)

dataRenderer = BarbRendererJ3D()

maps = (xMap, yMap, uMap, vMap)
disp = subs.makeDisplay(maps)

uMap.setRange(-1.0, 1.0);
vMap.setRange(-1.0, 1.0);
flowU_control = uMap.getControl()
flowV_control = vMap.getControl()
flowU_control.setFlowScale(0.1)
flowV_control.setFlowScale(0.1)

dr=subs.addData("test_uv", data, disp, None, dataRenderer, None)

subs.setBoxSize(disp, .80)
subs.setAspectRatio(disp, float(width)/float(height))
subs.showDisplay(disp,width,height,"Test UV")

uv.txt contains the following:

(Longitude, Latitude) -> (U, V)
Latitude, Longitude, U, V
-12.4, 131.8, 5.0, 5.0
-16.9, 133.7, 5.0, 5.0
-14.4, 134.8, 5.0, 5.0
-15.4, 135.8, 5.0, 5.0

--
James Kelly
Meteorological Systems Section                    Bureau of Meteorology
PO Box 1289K                                  Melbourne 3001, Australia



 
 
  Contact Us     Site Map     Search     Terms and Conditions     Privacy Policy     Participation Policy
 
National Science Foundation (NSF) UCAR Community Programs   Unidata is a member of the UCAR Community Programs, is managed by the University Corporation for Atmospheric Research, and is sponsored by the National Science Foundation.
P.O. Box 3000     Boulder, CO 80307-3000 USA     Tel: 303-497-8643     Fax: 303-497-8690