- To: Curtis Rueden <curtis@xxxxxxxxxxxxx>
- Subject: Re: Spreadsheet & Remote Data Servers
- From: James Kelly <J.Kelly@xxxxxxxxxx>
- Date: Tue, 20 Nov 2001 21:19:18 +1100
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
- Follow-Ups:
- Re: Spreadsheet & Remote Data Servers
- From: Tim Stevenson
- Re: Spreadsheet & Remote Data Servers
- References:
- Re: Spreadsheet & Remote Data Servers
- From: Curtis Rueden
- Re: Spreadsheet & Remote Data Servers