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.