NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Re: how to fill in pixels

Hi Lak,

On Wed, 21 Aug 2002, V. Lakshmanan wrote:

> > I changed the MathType from
> >   (radial,gate)->(x,y,z,gatevalue)
> > to:
> >   (radial,gate) -> (x,y,z) -> (gatevalue)
> > and attached the x,y,z axes to the Display axes
> > and I do get filled pixels.

Actually, your new MathType is ((x,y,z) -> gatevalue).
A MathType of ((radial,gate) -> ((x,y,z) -> gatevalue))
would require a FieldImpl with FlatFields passed to
its setSamples() method.

> I spoke too soon ... there is still a problem.
> I do get filled pixels in the xy plane, but
> things are not filled along the surface of the
> cone ... instead I get rings.
>   There is a snapshot and source code at:
>      http://www.nssl.noaa.gov/~lakshman/ElevationScan.html

Thanks for this very informative web page about your problem.

> a) I am using x,y,z as the domain, so why is
> the x-y direction working, but not the z-component?
> b) Is there a conical geometry in visad that
> I am overlooking here?
> c) How do I tell the display not to interpolate
> but use the nearest neighbor?

As you said in your previous email, the domain Set of your
FlatField is a Gridded3DSet with manifold dimension = 1.
The rings in your image are actually connected in one big
spiral (you can see the jogs in the spiral at about 2:30
o'clock in your image).

There are several possible ways to see the elevation of
your data. One way is to use your original MathType:

  ((radial,gate)->(x,y,z,gatevalue))

with ScalarMaps radial->Longitude and gate->Radius. Then
in your call to addReference() use the signature that takes
a DataReference and also a ConstantMap[] array. Pass in a
ConstantMap of your elevation value to Latitude.

If you want the elevation to be part of your data, use the
MathType:

  (elevation, ((radial,gate)->(x,y,z,gatevalue)))

This is a Tuple combining a Real elevation with your
original FlatField. Then include ScalarMaps
radial->Longitude, gate->Radius and elevation->Latitude.

A different approach is to use the MathType of your
new program:

  ((x, y, z) -> gatevalue)

But use a Gridded3DSet with manfold dimension = 2.
In place of your constructor:

  new Gridded3DSet( domainTuple, xyz, xyz[0].length )

use:

  new Gridded3DSet( domainTuple, xyz, num_radials, num_gates )

Good luck,
Bill


  • 2002 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: