Thanks Curtis & Dave, That's pretty cool! [One of the problems I had was using a different version of visad.jar on the client]. I can now load up live temerature data in the spreadsheet and see the various cells update in real time. However, when I try to do some cell arithmetic, I get unexpected results. I've verified this with the attached data file temperature.csv which has data in the form x-> temperature. Note that the temperature is in degrees Celsius. I load the file into cell A1, and also into cell B1. I map x to x and temperature to y, and see the data as expected. In cell A2, I enter the formula A1d1-B1d1, and do the mappings, and expect to see a straight line of temperature = 0 degC, but what I actually get is a straight line of temperature = -273.15 degC Any ideas? James. Curtis Rueden wrote: > Hi James, > > >Can I get the spreadsheet to load data which is available via a remote > >data server other than the spreadsheet. > >This remote data server is the usual VisAD RemoteServerImpl which > >provides the data via RemoteDataReferences. > > Yes, you can get the SpreadSheet to recognize data from pretty much > any RMI server, as long as you follow the simple naming conventions. > > For an RMI server at my.ip.com, if you name it "MyServer", and the name > of the DataReference is "DataRef", then you'd access the data object in > the SpreadSheet using the string: > rmi://my.ip.com/MyServer/DataRef > > To help you out, I've written a little example that creates a > RemoteServer and loads a data object into it. (The source code is > at the bottom of this email.) Start it up by typing: > java MiniDataServer ServerName DataName dataFile > > where ServerName is the desired name for the RMI server, DataName is > the desired name for the data reference, and dataFile is the name of > the data file to load up and serve. Be sure you start up rmiregistry > before running MiniDataServer. > > Then, load up the SpreadSheet and try: > rmi://ip.address/ServerName/DataName > (where ip.address is your machine's IP address) and you should see > the data in the SpreadSheet cell. > > Please let me know if you have any more trouble with this. > > Good luck, > Curtis > > ----------------------------------------- > // MiniDataServer.java > > import java.awt.event.*; > import java.net.*; > import java.rmi.*; > import javax.swing.*; > import visad.*; > import visad.data.*; > import visad.java2d.DisplayImplJ2D; > > public class MiniDataServer { > > public static void main(String[] args) throws Exception { > if (args.length < 3) { > System.err.println("Please specify three command line arguments:"); > System.err.println(" - Server name (e.g., MyServer)"); > System.err.println(" - Cell name (e.g., A1)"); > System.err.println(" - Data file (e.g., mydata.nc)"); > System.exit(-1); > } > String server = args[0]; > String cell = args[1]; > String file = args[2]; > > // load data > System.out.println("Loading " + file + "..."); > DefaultFamily loader = new DefaultFamily("loader"); > Data data = loader.open(file); > > // set up display > System.out.println("Setting up display..."); > ScalarMap[] maps = data.getType().guessMaps(false); > DisplayImplJ2D display = new DisplayImplJ2D("MiniDataServer"); > for (int i=0; i<maps.length; i++) display.addMap(maps[i]); > DataReferenceImpl ref = new DataReferenceImpl(cell); > ref.setData(data); > display.addReference(ref); > > // start up remote server > System.out.println("Starting remote server..."); > RemoteServerImpl rsi = null; > try { > rsi = new RemoteServerImpl(); > Naming.rebind("///" + server, rsi); > } > catch (java.rmi.ConnectException exc) { > System.err.println("Please run rmiregistry first."); > System.exit(-2); > } > catch (MalformedURLException exc) { > System.err.println("Error binding server; try a different name."); > System.exit(-3); > } > catch (RemoteException exc) { > System.err.println("Error binding server:"); > exc.printStackTrace(); > System.exit(-4); > } > rsi.addDataReference(ref); > > // set up GUI > System.out.println("Bringing up display..."); > JFrame frame = new JFrame("Mini data server"); > JPanel pane = new JPanel(); > pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS)); > frame.setContentPane(pane); > pane.add(display.getComponent()); > frame.addWindowListener(new WindowAdapter() { > public void windowClosing(WindowEvent e) { System.exit(0); } > }); > frame.pack(); > frame.show(); > } > > } -- James Kelly Regional Computing and Distributed Systems Bureau of Meteorology PO Box 1289K Melbourne 3001, Australia Phone: 61-3-9669-4724 Fax: 61-3-9669-4128 Email: J.Kelly@xxxxxxxxxx
Attachment:
temperature.csv
Description: application/unknown-content-type-excel.csv
visad
archives: