Re: overlap MciDAS map file on a display?

Hi Helen-

Helen Yi wrote:

> I have a display in lat31-43 N)-lon(90 W -1 06W) domain , I like to
> overlap MciDAS map on my display and chop-off the map displayed
> outside my domain, that is, only show map information in my display
> domain (31-43N, 90W-106W).
> I did the following  but the map shows beyond the display region (see
> the DISPLAY+MAP display at )
> Is what I did wrong or I miss something?

As Mathias noted, you could use the setLatLonLimits method
of BaseMapAdapter, but this uses a crude algorithm to do the
clipping and must be called before you call the getData() method
of BMA.  A better solution is to use the clipping methods
in DataRendererJ*D.  Here is a snippet of code from one of
our classes that clips:

     * Enable clipping of data at the box edges
     * @param  clip  true to turn clipping on, otherwise off
    public void enableClipping(boolean clip) {
       if (getDisplayMode() != MODE_2D) {
           DisplayRendererJ3D dr
               (DisplayRendererJ3D) getDisplay().getDisplayRenderer();
           try {
               dr.setClip(0, clip,  1.0f,  0.0f,  0.0f, -1.001f);
               dr.setClip(1, clip, -1.0f,  0.0f,  0.0f, -1.001f);
               dr.setClip(2, clip,  0.0f,  1.0f,  0.0f, -1.001f);
               dr.setClip(3, clip,  0.0f, -1.0f,  0.0f, -1.001f);
               // clipping on top and bottom of box - do not
               //dr.setClip(4, clip,  0.0f,  0.0f,  1.0f, -1.001f);
               //dr.setClip(5, clip,  0.0f,  0.0f, -1.0f, -1.001f);
           catch (VisADException ve) {
               System.err.println("Couldn't set clipping " + ve);
        } else {
           DisplayRendererJ2D dr2
               (DisplayRendererJ2D) getDisplay().getDisplayRenderer();
           if (clip) dr2.setClip(-1.0f, 1.0f, -1.0f, 1.0f);
        clipping = clip;

(getDisplay() is a method in this class that gets the VisAD
display in question).

Don Murray                               UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx                        P.O. Box 3000
(303) 497-8628                              Boulder, CO 80307