Hi All-
Bill Hibbard wrote:
Please forgive me for CC'ing your message to the list,
but I wanted to second that the IDV is a great system.
Thanks for the kudos.
The IDV does use visad.CoordinateSystem for map projections.
Applications can define their own instances of DisplayRealType,
and group 3 of them into a DisplayTupleType with a CoordinateSystem
with reference Display.DisplaySpatialCartesianTuple (which is
(XAxis, YAxis, ZAxis)). All the trig is of course in the toReference
and fromReference() methods of their CoordinateSystem.
Then of course you can use the new DisplayRealTypes in
ScalarMaps. VisAD will automatically interpret new
DisplayRealTypes in DisplayTupleTypes with CoordinateSystems
with References (XAxis, YAxis, ZAxis), (Red, Green, Blue),
(Flow1X, Flow1Y, Flow1Z), and (Flow2X, Flow2Y, Flow2Z).
A sample program that shows how to do map projections is at:
ftp://ftp.unidata.ucar.edu/pub/dmurray/MapProjectionDisplay.java
(Also, if you search the VisAD archives using MapProjectionDisplay
as a keyword, you can see previous discussions on this issue.)
If you want to switch projections on the fly, then you need
to construct a new DisplayRealTupleType each time. You can
see this in the IDV version of MapProjectionDisplay
(ucar.unidata.view.geoloc.MapProjectionDisplay) in the
source code at:
ftp://ftp.unidata.ucar.edu/pub/metapps/metapps_src.jar
or:
http://my.unidata.ucar.edu/modules.php?name=Downloads
(under the IDV/Source link). Note that the IDV version of
MapProjectionDisplay uses many other classes in the IDV framework.
The first one listed (in pub/dmurray) is raw VisAD, but does
not support automatic projection switching.
For UTM, you would just need to create a UTMCoordinateSystem that would
do the appropriate transforms from UTM to lat/lon and vice-versa. If
someone would contribute that, it would be a great addition to
visad.georef.
Don