Looks like I may have been reinventing what already exists and I should just
use ucar.unidata.view.geoloc.MapProjectionDisplay, since it also supports
RubberBandBox.
When I try to use it I get a message:
java.lang.NoClassDefFoundError: org/w3c/dom/Node
What jar file contains this???
Also are there any examples that use this class.
Thanks,
Luke
-----Original Message-----
From: owner-visad-list@xxxxxxxxxxxxx
[mailto:owner-visad-list@xxxxxxxxxxxxx]On Behalf Of Don Murray
Sent: Wednesday, June 05, 2002 10:10 AM
To: Bill Hibbard
Subject: Re: DisplayRealType
Luke-
Bill Hibbard wrote:
> Sorry to say your can't do this. RealTypes and DisplayRealTypes are
> immutable (and for a good reason - tracking the events for all the
> consequences of a RealTyoe change would be prohibitively complex).
>
> You can deal with changing DisplayRealType bounds esily enough by a
> calculation of appropriate new arguments to ScalarMap.setRange().
> But if you want to change the CoordinateSystem then you need to
> create completely new DisplayRealTypes (with new unique String
> names), new DisplayTupleType, completely clear your Display, and
> rebuild your Display. By rebuilding your Display you are essentially
> tracking the event consequences of your DisplayRealType changes.
If you look at the ucar.unidata.view.geoloc.MapProjectionDisplay,
you will see that every time I switch projections, I have to
create a new DisplayRealTupleType (in the setDisplayTypes
method). I do this by creating a new DisplayRealType with
a name base and an appended incremented counter:
instance++;
displayLatitudeType
new DisplayRealType(
"ProjectionLat" + instance,
true, -90.0, 90.0, 0.0,
CommonUnit.degree);
displayLongitudeType
new DisplayRealType(
"ProjectionLon" + instance,
true, -180.0, 180.0, 0.0,
CommonUnit.degree);
displayAltitudeType
new DisplayRealType(
"ProjectionAlt" + instance,
true, -1.0, 1.0, -1.0, null);
displayTupleType
new DisplayTupleType(
new DisplayRealType[] {
displayLatitudeType,
displayLongitudeType,
displayAltitudeType},
coordinateSystem);
After that, you have to remap latitude to the new displayLatitudeType,
RealType.Longitude to the new displayLongitudeType and
(if 3D) RealType.Altitude to the new displayAltitudeType. Note in
this class displayAltitudeType is really a passthrough to
Display.ZAxis (bounds -1.0 to 1.0) and the coordinateSystem
just passes through the values directly.
Since DisplayRealTypes can't occur in more than one
DisplayRealTupleType, this was all necessary.
Don
*************************************************************
Don Murray UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000
(303) 497-8628 Boulder, CO 80307
http://www.unidata.ucar.edu/staff/donm
*************************************************************