NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Index subsetting on OPeNDAP sequences.


Bob Simons wrote:


John Caron wrote:

great, thanks. Do you have a URL where this happens?


"http://oceanwatch.pfeg.noaa.gov:8081/dods/GLOBEC/GLOBEC_MOC1?abund_m3,lat,long";


Bob Simons wrote:

In case you haven't been able to find the problem with variable.read(rowOrigin, rowShape) returning a full-sized Array that I mentioned before, I can provide more information:

The problem occurs with
   NetcdfDataset ncDataset = NetcdfDataset.openDataset(fullFileName);
where the fullFileName is an OPeNDAP sequence url.
The variables are found via
   structure = (Structure)rootGroupVariables.get(v);
then
   structure.getVariables()

The problem does not occur with a
   NetcdfFile ncFile = new NetcdfFile(fullFileName);
where fullFileName is a .nc file on my hard drive.
and where the variables are found via
   List variableList = ncFile.getVariables();

The variables are ArrayXxx.1D Arrays.

If I'm doing something wrong, please let me know. I'm still stumbling around trying to figure out how to do things.

I wrote a work-around in my code for the bug, so a fix isn't urgent.


Hi Bob, thanks for the info. The problem is that this is a sequence, which in 
the DAP-2 spec, doesnt allow index subsetting. (Probably I should throw an 
Exception if you try?)

The DDS is:

Dataset {
   Sequence {
       String date;
       String year;
       String program;
       String cruise_id;
       Int16 cast_no;
       String stn_id;
       Float64 lat;
       Float64 long;
       Int16 water_depth;
       Byte sample_id;
       Float64 min_sample_depth;
       Float64 max_sample_depth;
       Byte month_local;
       Int16 day_local;
       Int16 time_local;
       String d_n_flag;
       String gear_type;
       Byte gear_area_m2;
       Float64 gear_mesh;
       Float64 vol_filt;
       String counter_id;
       String comments;
       String perc_counted;
       String local_code;
       String nodc_code;
       String genus_species;
       String life_stage;
       Float64 abund_m3;
   } MOC1;
} MOC1;

This gives a netcdf file as:

netcdf dods://oceanwatch.pfeg.noaa.gov:8081/dods/GLOBEC/GLOBEC_MOC1 {
variables:
  Structure {
    String date;
      :long_name = "Date";
    String year;
      :long_name = "Year";
    String program;
      :long_name = "Program";
    String cruise_id;
      :long_name = "Cruise ID";
    short cast_no;
      :long_name = "Cast No";
    String stn_id;
      :long_name = "Station ID";
    double lat;
      :long_name = "Latitude";
    double long;
      :long_name = "Longitude";
    short water_depth;
      :long_name = "Water Depth";
    byte sample_id;
      :_unsigned = "true";
      :long_name = "Sample ID";
    double min_sample_depth;
      :long_name = "Minimum Sample Depth";
    double max_sample_depth;
      :long_name = "Maximum Sample Depth";
    byte month_local;
      :_unsigned = "true";
      :long_name = "Month Local";
    short day_local;
      :long_name = "Day Local";
    short time_local;
      :long_name = "Time Local";
    String d_n_flag;
      :long_name = "d_n_flag";
    String gear_type;
      :long_name = "Gear Type";
    byte gear_area_m2;
      :_unsigned = "true";
      :long_name = "Gear Area m2";
    double gear_mesh;
      :long_name = "Gear Mesh";
    double vol_filt;
      :long_name = "Volume Filtered";
    String counter_id;
      :long_name = "Counter Id";
    String comments;
      :long_name = "Comments";
    String perc_counted;
      :long_name = "Percentage Counted";
    String local_code;
      :long_name = "Local Code";
    String nodc_code;
      :long_name = "NODC Code";
    String genus_species;
      :long_name = "Genus Species";
    String life_stage;
      :long_name = "Life Stage";
    double abund_m3;
      :long_name = "Abundance m3";
  } MOC1(*);
}

The MOC1(*) means "variable length array". Thats how we are doing sequences 
right now. If you go to

http://oceanwatch.pfeg.noaa.gov:8081/dods/GLOBEC/GLOBEC_MOC1.html

Youll notice that you can only get all the values, (or you can add a relational 
constraint, which we are not currently supporting).

Anyway, we are still figuring out how to support sequences properly. Sorry for 
the confusion.

John.

PS: I hope you dont mind im cc'ing to netcdf-java email group since this is 
something others may be interested in.


  • 2005 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: