Ecoinformatics site parent site of Partnership for Biodiversity Informatics site parent site of REAP - Home




O Pe NDAP Discovery And Subsetting

I have been prototyping a UI for getting OPeNDAP data into Kepler.

My idea was to use a browser to allow the user to navigate to data sets of interest using the OPeNDAP servers web interface. When the user selects a data set by clicking on one of the DAP response types the request is caught and the DDS is rendered as a "selection" tree like one might see in a typical software installer:

Software Installer Snapshot

Where the interface allows the user to select parts of the hierarchy by clicking the selection boxes. Selecting a node selects all of it's children. Expanding a node and selecting some of it's children causes the selection icon for the node to indicate that is partially selected (PartialSelect.gif). So I would sketch the UI like this:

UI Sketch

I built a simple prototype. The browser is pretty limited (it doesn't do javascript or Ajax) but it works. Here is a snapshot of the UI pointed at a collection page of the OPeNDAP test server:

UI Snapshot 1

Clicking on one of the data set links on the left causes the UI to look at the dataset and load it's type hierarchy into the center pane and it's metadata into the left pane:

UI Snapshot 2

And I stopped writing code there because it's clearly going to get a lot more complex pretty quickly and it's time to solicit input. The rest of the idea is that when a user selects a variable by highlighting (single clicking on) the name in the data set tree the appropriate sub-setting interface appears in the Sub-setting Pane. By navigating the data set tree, clicking the check boxes, and highlighting the selected variables the user can build the data request that they want.

I have some questions:

  1. Does this seem like a reasonable design time interface?
  2. Does anyone know of a java library that implements a JTree as the selection tree in the first image? Basically I can see how to implement custom icons and the like in a JTree but I am stuck on how to get the mouse event behavior I want. I imagine that this kind of tree has been implemented in java by someone somewhere. The software installer that I pictured above works like this:
    • Single clicking on a triangle icon toggles expansion/collapse of the associated node.
    • Single clicking the check box of an item toggles it's selection (checked or unchecked)
    • Double clicking the name of a node toggles expansion/collapse of the node.
    • Nodes that are partially selected have the PartialSelect.gif icon

I can see a couple of things to try beyond this:

  1. I could have the browser pane change to a (lazy loading!) Tree hierarchy when the user drops in the URL for a THREDDS catalog. They could then traverse the THREDDS tree and when they get to a leaf the view would switch the view of metadata on the left with the dataset hierarchy in the center pane.
  2. There is a pure java open source browser call Lobo that I may be able to bend to this purpose. Lobo supports both javascript and Ajax - this is important for discovery.
  3. James and I had an interesting conversation about sub-setting OPeNDAP data sets: Every DAP server has a sub-setting tool built into it, accessible via a web browser. Some sites have customized this sub-setting page to work more closely with the data held there. It may be that the smart thing to do is to allow the server to provide the sub-setting interface for the data being served, rather than trying to develop a universal sub-setting interface for the client. To that end a browser like Lobo could be used to embed the rendering of the sub-setting interface in the DAP UI for Kepler. Once the user submits the form to get data, the Kepler UI would intercept the request and use it to configure the actor.

Any input you all care to give would be welcome!


James says:

How about making the left panes work more like the mac's finder window. Suppose you started with a thredds catalog URL and got it's contents in the leftmost pane. Then click on an item such as a catalog and see that in the pane to the right. Suppose there were many catalogs in a nested hierarchy, the number of panes would be limited to say four, with the leftmost stuff rotating off to the left (and out of the display). Then you get to data and the thing that appears is the IFH in the pane to the right.

I know that in your text on the wiki you talk about this, but I just wanted to say it too.

The advantage of using the IFH is two fold: First, it can be customized and we can even install a Kepler version on a Kepler machine and use it to reference data sets/sources that are remote to it (the interface _is_ bundled with the server, but it can actually run on any machine on the network). So it's easy for us to tweak. Second, we can then direct effort to improve the IFH - a long-time goal of mine - and see benefits for all users, not just kepler users. Conversely, Kepler can also see benefits from improvements other projects make to the interface.

We have not improved the interface at all since I wrote the initial version years ago (but it's widely used). I think this is largely because it's hard to update server-side code in a timely manor (although it's easier with Hyrax and we could think about/propose some innovative update techniques that are just too involved for me to get into here - I have seven minutes left before the telecon. The other reason is that I think most people want to make the 'killer app' and that's just not very often a data server...

PartialSelect.tiff Info on PartialSelect.tiff 1382 bytes
PartialSelect.gif Info on PartialSelect.gif 1382 bytes
menu.jpg Info on menu.jpg 50300 bytes
db2.jpg Info on db2.jpg 176053 bytes
db0.jpg Info on db0.jpg 465287 bytes
db1.jpg Info on db1.jpg 199686 bytes

Go to top   Edit this page   More info...   Attach file...
This page last changed on 19-Sep-2007 10:04:32 PDT by uid=potter,o=unaffiliated.