[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20050506: IDV - display of NAM 3d topography



>From: "Alan Bol" <address@hidden>
>Organization: UCAR/COMET
>Keywords: 200505061823.j46INOww020628 IDV topography

Hi Alan-

>Institution: COMET
>Package Version: 1.2b2
>Operating System: os.name:Windows XP; os.arch:x86; os.version:5.1; 
>Hardware Information: java.vendor:Sun Microsystems Inc.; java.version:1.4.2_01
> ; java.home:C:\\Program Files\\IDV_1.2b2\\jre; 
>Inquiry: Hi all,
>
>I've been having a heck of a time displaying any topgraphic data in 3d other t
> han the 80km Eta 
>off the unidata or ucar catalogs.
>
>Here's where I'm trying to go at the moment:
>NARR 3-hr precip displayed on topography.
>
>At the moment, I'm trying to get NAM topography to display in 3d.
>In the data selector, here's what I have:
>Data Source: dod://nomad3.ncep.noaa.gov:9090/dods/nam/nam20050506/nam_00z
>Fields: ** surface geopotential height (gpm)
>Displays: 3D surface/Topography
>Times: top one
>
>Note: I can create a 2D plot of countours.
>
>Under display/3D surface, I didn't originally see Topography listed, so
>I created an alias  for ALTITUDE of "hgtsfc", so that it will display as topog
> raphy.

Wow, good job figuring that out!

>When I try to create a 3d topo display, I get the following erroro message:
>
>An error has occurred:
>ControlDescriptor.Creating display
>Unable to handle units of hgtsfc_0
>
>I can infer from this that IDV doesn't like the units gpm (geopotential meters
> ?). Is there anything can 
>be done to change this? Is there some other way to create this plot?

The problem is that the data is coming from the GrADS/DODS Server (GDS)
and it does not always add on units.  Even though the name says that
the units are GPM, there is no units attribute for the variable.
Parsing the unit from the variable name is problematic.

So, in reality, what you have is blank units which are not convertible
with gpm, thus the error.  If you plot this field as contours and
use the Edit->Change Display Unit.. menu from the control, you'll
see that the units being used are blank (dimensionless).  In fact,
all the parameters come across as dimensionless units, so you can't
change units on any of them in the IDV (at least easily).

The real solution is to get the GDS to add in the appropriate unit.
Do you know who's in charge of this server?  We got NCDC to add 
units to their GDS data.  Do you have a contact a NCEP that we 
could persuade?

In the mean time, if you really want to display this field
as topography, then:

1) Use the Edit->Formulas->Jython Library menu to open the
Jython library editor.  Paste the following code into
the window (Ctrl-V to paste):

def makeAltitude(field):
   import ucar.unidata.data.grid.GridUtil as gu
   a = makeRealType("gpm", makeUnit("gpm"))
   return gu.setParamType(field, a)

2) Use the Edit->Formulas->Create Formula menu to create
a new formula with the following parameters:

Name: make topography
Formula: makeAltitude(field)

Optional:
Under advanced, you can set the display type to be only
Topography.

3) Load in your dataset.  From the DataSelector panel,
select the Formulas Data Source and select the make topography
formula in the Fields panel.  Make sure the Topography 
Display is selected, then click the Create Display button.

4) When the parameter selection window pops up, select the
"surface geopotential height [gpm]" field, and the first
time, then click OK.

That will create the topography.

If you want to overlay another field on this, select the
field and the "XXX over topography" display you want.  When
the Field Selector comes up, select "Any Field" from the list
of System formulas and click OK.  Then when the Field Selector
comes up for the "Any Field" param, select the "make topography"
field in the list of formulas and follow step 4 above.

Convoluted, but it works. ;-)

Some of these datasets also have wierd 3D vertical coords, which
cause problems.

>******************
>Stack trace:
>visad.VisADException: Unable to handle units of hgtsfc_0
>       at ucar.unidata.view.geoloc.MapProjectionDisplay.addVerticalMap(MapProj
> ectionDisplay.java:518)
>       at ucar.unidata.idv.control.GridDisplayControl.addTopographyMap(GridDis
> playControl.java:422)
>       at ucar.unidata.idv.control.TopographyControl.setData(TopographyControl
> .java:133)
>       at ucar.unidata.idv.control.TopographyControl.init(TopographyControl.ja
> va:115)
>       at ucar.unidata.idv.control.DisplayControlImpl.init(DisplayControlImpl.
> java:918)
>       at ucar.unidata.idv.control.DisplayControlImpl.init(DisplayControlImpl.
> java:769)
>       at ucar.unidata.idv.ControlDescriptor.initControl(ControlDescriptor.jav
> a:741)
>       at ucar.unidata.idv.ControlDescriptor$1.run(ControlDescriptor.java:699)
>       at ucar.unidata.util.Misc$2.run(Misc.java:773)
>

Don
NOTE: All email exchanges with Unidata User Support are recorded in the
Unidata inquiry tracking system and then made publicly available
through the web.  If you do not want to have your interactions made
available in this way, you must let us know in each email you send to us.