Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.

Newbie help

Hi!

I'm just starting with VisAd and i cant resolve (understand) this little problem. I tried to create a world based on an mcidas base map (no problem with that, very simple of course) and now i want to plot some lines on it, like travel routes, i do plot the lines but they do not "curve" to the earth, they just go throw it. Probably it's something very simple but as i said i'm really starting with visAd.

Here is the code:

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.*;
import visad.*;
import visad.ColorControl;
import visad.CoordinateSystem;
import visad.ConstantMap;
import visad.Data;
import visad.DataReference;
import visad.DataReferenceImpl;
import visad.Display;
import visad.DisplayImpl;
import visad.FieldImpl;
import visad.FlatField;
import visad.FunctionType;
import visad.Linear2DSet;
import visad.RealTupleType;
import visad.RealType;
import visad.ScalarMap;
import visad.data.mcidas.AreaAdapter;
import visad.data.mcidas.BaseMapAdapter;
import visad.java3d.DisplayImplJ3D;
import visad.java3d.TwoDDisplayRendererJ3D;

public class TravelRoute
{
   private DisplayImpl display;

   public TravelRoute(String mapFile)
   {
       try
       {
           ScalarMap latMap;
           ScalarMap lonMap;

           display = new DisplayImplJ3D("display");

           latMap = new ScalarMap(RealType.Latitude, Display.Latitude);
           lonMap = new ScalarMap(RealType.Longitude, Display.Longitude);

           display.addMap(latMap);
           display.addMap(lonMap);

           latMap.setRange(-90.0, 90.0);
           lonMap.setRange(-180.0, 180.0);


           BaseMapAdapter baseMapAdapter = new BaseMapAdapter(mapFile);

DataReference coastlinesRef = new DataReferenceImpl("CoastLines");
           coastlinesRef.setData(baseMapAdapter.getData());

           ConstantMap[] coastlinesConstantMap = new ConstantMap[4];
           coastlinesConstantMap[0] = new ConstantMap(1., Display.Blue);
           coastlinesConstantMap[1] = new ConstantMap(1., Display.Red);
           coastlinesConstantMap[2] = new ConstantMap(1., Display.Green);
coastlinesConstantMap[3] = new ConstantMap(1.001, Display.Radius);

RealTupleType earth = new RealTupleType(RealType.Latitude, RealType.Longitude);

           float[][] points1 = {{50.0f, 2.0f, 1.0f, 0.0f},
                                {0.0f, 0.0f, 0.0f, 0.0f}};
           Gridded2DSet route1 = new Gridded2DSet(earth, points1, 4);

           float[][] points2 = {{3.0f, 2.0f, 1.0f},
                                {2.0f, 1.0f, 0.0f}};
           Gridded2DSet route2 = new Gridded2DSet(earth, points2, 3);

           float[][] points3 = {{40.0f, 3.0f, 2.0f},
                                {-2.0f, -1.0f, 0.0f}};
           Gridded2DSet route3 = new Gridded2DSet(earth, points3, 3);

           Gridded2DSet[] route_system = {route1, route2, route3};
           UnionSet routes = new UnionSet(earth, route_system);

           DataReference routeslinesRef = new DataReferenceImpl("routes");
           routeslinesRef.setData(routes);

           ConstantMap[] routeslinesConstantMap = new ConstantMap[4];
           routeslinesConstantMap[0] = new ConstantMap(0., Display.Blue);
           routeslinesConstantMap[1] = new ConstantMap(1., Display.Red);
           routeslinesConstantMap[2] = new ConstantMap(0., Display.Green);
routeslinesConstantMap[3] = new ConstantMap(1.000, Display.Radius);

           display.disableAction();
           display.addReference(routeslinesRef, routeslinesConstantMap);
           display.addReference(coastlinesRef, coastlinesConstantMap);
           display.enableAction();
       }
       catch (Exception ne)
       {
           ne.printStackTrace();
           System.exit(1);
       }
   }

   public static void main (String[] args) {

       String mapFile = "/usr/people/simoes/Training/teste/data/OUTLSUPW";

       JFrame frame = new JFrame("Travel Routes");
       frame.addWindowListener(new WindowAdapter()
       {
           public void windowClosing(WindowEvent e)
           {
               System.exit(0);
           }
       }
       );

       TravelRoute Routes = new TravelRoute(mapFile);
       frame.getContentPane().add(Routes.display.getComponent());
       frame.setSize(500, 500);
       frame.setVisible(true);
   }
}

Ps. Ane tips for a newbie? :)

Thanks in advance,

Tiago Simoes
KNMI, NL


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