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.
Hi John- John Osborne wrote:
Thanks for your suggestions. Yes, our depths are stored as positive numbers. Using a RealType.Altitude, I was confused how to set the units to what you suggested. RealType.Altitude is a static class and I don't see a method in RealType or it's parent classes for setting units--it appears to only happen in the constructors for RealType (or through the new factory methods). I also tried reversing the max and min for the axis using setRange but that didn't work either--the data points disappeared and the axis showed the usual orientation.
The default units of RealType.Altitude are CommonUnit.meter. Think of this as metadata. When you create a Data object (Real, Set, FlatField, etc), you can set the actual units of the values. So, if you were creating a Real for depth values, you could use: Real depthAt100m new Real(RealType.Altitude, 100, CommonUnit.meter.scale(-1)); This says that the actual unit of the data is negative meters even though the metadata has units of CommonUnit.meter. Alternatively, you could negate your value and do: Real depthAt100m new Real(RealType.Altitude, -100); If you are creating a Set of lat, lon, depth values, you could do something like: Gridded3DSet lld new Gridded3DSet(RealTupleType.LatitudeLongitudeAltitude, values, numlats, numLons, numAlts, (CoordinateSystem) null, new Unit[] { CommonUnit.degree, CommonUnit.degree, CommonUnit.meter.scale(-1) }, (ErrorEstimate[]) null); where values would be the lat,lon, depth values at each grid point (if this was a grid). If it is a set of points down something like a salinity profile, you would just use the constructor for a Gridded3DSet of manifold dimension 1, where lengthX is just the total number of points. Again, you could also just negate the values for depth and not worry about the constructors with units. In that case, the unit is the default from RealType.Altitude. If you are creating a FlatField, then use the appropriate constructor which allows you to set Units or again, negate your values. If you were mapping RealType.Altitude to Display.ZAxis, you would probably want to set the range on that ScalarMap to be (-maxDepth, 0). That would display the profile with the greatest depth (lowest Altitude) at the bottom. Don
visad
archives: