Hi Brian:
I just added this doc:
http://www.unidata.ucar.edu/software/netcdf-java/reference/Cookbook.html#readSequences
let me know if it helps
John
On 5/14/2013 4:30 PM, Brian Schlining wrote:
> Hi All,
>
> I'm stumped on how to get data out of the nested sequence data in the
> attached BUFR file using NetCDF-Java. I can read all variables in the
> top-level Sequence (obs), but I can't get them out of the nested
> Sequence (seq1). I've tried all the method calls I can think of. Any
> suggestions or help would be greatly appreciated? Here's some pseudo
> code I've used to get the variable and try to read it.:
>
>
> netcdf = // Open the BUFR file
> seq1 = netcdf.findVariable("obs.seq1);
>
> // --- METHOD 1L Try using the recommended structure iterator
> i = seq1.getStructureIterator();
> while (i.hasNext()) {
> v = i.next();
> d = v.getArray();
> }
>
> // METHOD 1 OUTPUT
> 2013-05-14 14:55:24,154 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member time
> 2013-05-14 14:55:24,154 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member WMO block number
> 2013-05-14 14:55:24,154 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member WMO station number
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Type of station
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Year
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Month
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Day
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Hour
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Minute
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Latitude (coarse accuracy)
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Longitude (coarse accuracy)
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Height of station
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Short station or site name
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Type of measuring equipment used
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Time significance
> 2013-05-14 14:55:24,155 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member Time period or displacement
> 2013-05-14 14:55:24,156 [main] WARN ucar.nc2.dataset.StructureDS -
> StructureDataDS.convert Cant find member seq1
> Java exception occurred:
> java.lang.NullPointerException
> at ucar.nc2.dataset.StructureDS.convert(StructureDS.java:445)
> at
> ucar.nc2.dataset.SequenceDS$StructureDataConverter.next(SequenceDS.java:78)
>
>
> // --- METHOD 2: Try calling read
> vt = netcdf.findVariable('obs.seq1.Virtual temperature);
> vt.read();
>
> // METHOD 2 OUTPUT
> java.lang.ClassCastException: ucar.ma2.ArrayObject$D1 cannot be cast to
> ucar.ma2.ArrayStructure
> at ucar.nc2.Variable.reallyRead(Variable.java:854)
> at ucar.nc2.Variable._read(Variable.java:831)
> at ucar.nc2.Variable.read(Variable.java:709)
> at ucar.nc2.dataset.VariableDS.reallyRead(VariableDS.java:518)
> at ucar.nc2.dataset.VariableDS._read(VariableDS.java:502)
> at ucar.nc2.Variable.read(Variable.java:709)
>
>
>
> The CDL is:
>
> netcdf 5900.20030601.rass {
> types:
> enum Type of station { 'Automatic' = 0, 'Manned' = 1, 'Hybrid: both
> manned and automatic' = 2, 'Missing value' = 3};
> enum Type of measuring equipment used { 'Pressure Instrument
> associated with wind measuring equipment' = 0, 'Optical theodolite' = 1,
> 'Radio theodolite' = 2, 'Radar' = 3, 'VLF-Omega' = 4, 'Loran C' = 5,
> 'Wind profiler' = 6, 'Satellite navigation' = 7, 'Radio-acoustic
> Sounding System (RASS)' = 8, 'Sodar' = 9, 'Pressure instrument
> associated with wind measuring equipment but pressure element failed
> during ascent' = 14, 'Missing value' = 15};
> enum Time significance { 'Time series' = 1, 'Time averaged (see Note
> 1)' = 2, 'Accumulated' = 3, 'Forecast' = 4, 'Forecast time series' = 5,
> 'Forecast time averaged' = 6, 'Forecast accumulated' = 7, 'Ensemble mean
> (see Note 2)' = 8, 'Ensemble mean time series' = 9, 'Ensemble mean time
> averaged' = 10, 'Ensemble mean accumulated' = 11, 'Ensemble mean
> forecast' = 12, 'Ensemble mean forecast time series' = 13, 'Ensemble
> mean forecast time averaged' = 14, 'Ensemble mean forecast accumulated'
> = 15, 'Start of phenomenon' = 17, 'Analysis' = 16, 'Start of orbit' =
> 19, 'Radiosonde launch time' = 18, 'Time of ascending node' = 21, 'End
> of orbit' = 20, 'Monitoring period' = 23, 'Time of occurrence of wind
> shift' = 22, 'Nominal reporting time' = 25, 'Agreed time limit for
> report reception' = 24, 'First guess' = 27, 'Time of last known
> position' = 26, 'End of scan or time of ending' = 29, 'Start of scan' =
> 28, 'Missing value' = 31, 'Time of occurrence' = 30};
>
> variables:
>
> Sequence {
> String time;
> :units = "minutes since 2003-06-01 00:00:00Z";
> :long_name = "time of observation";
> :_CoordinateAxisType = "Time";
> byte WMO block number;
> :missing_value = 127B; // byte
> :BUFR:TableB_descriptor = "0-1-1";
> :BUFR:bitWidth = 7; // int
> short WMO station number;
> :missing_value = 1023S; // short
> :standard_name = "station_WMO_id";
> :BUFR:TableB_descriptor = "0-1-2";
> :BUFR:bitWidth = 10; // int
> String Type of station;
> :units = "CodeTable 0-2-1";
> :BUFR:CodeTable = "Type of station (0-2-1)";
> :BUFR:TableB_descriptor = "0-2-1";
> :BUFR:bitWidth = 2; // int
> short Year;
> :units = "Year";
> :missing_value = 4095S; // short
> :BUFR:TableB_descriptor = "0-4-1";
> :BUFR:bitWidth = 12; // int
> byte Month;
> :units = "Month";
> :missing_value = 15B; // byte
> :BUFR:TableB_descriptor = "0-4-2";
> :BUFR:bitWidth = 4; // int
> byte Day;
> :units = "Day";
> :missing_value = 63B; // byte
> :BUFR:TableB_descriptor = "0-4-3";
> :BUFR:bitWidth = 6; // int
> byte Hour;
> :units = "Hour";
> :missing_value = 31B; // byte
> :BUFR:TableB_descriptor = "0-4-4";
> :BUFR:bitWidth = 5; // int
> byte Minute;
> :units = "Minute";
> :missing_value = 63B; // byte
> :BUFR:TableB_descriptor = "0-4-5";
> :BUFR:bitWidth = 6; // int
> float Latitude (coarse accuracy);
> :units = "degrees_north";
> :_CoordinateAxisType = "Lat";
> :BUFR:TableB_descriptor = "0-5-2";
> :BUFR:bitWidth = 15; // int
> float Longitude (coarse accuracy);
> :units = "degrees_east";
> :_CoordinateAxisType = "Lon";
> :BUFR:TableB_descriptor = "0-6-2";
> :BUFR:bitWidth = 16; // int
> float Height of station;
> :units = "m";
> :_CoordinateAxisType = "Height";
> :BUFR:TableB_descriptor = "0-7-1";
> :BUFR:bitWidth = 15; // int
> char Short station or site name(5);
> :standard_name = "station_id";
> :BUFR:TableB_descriptor = "0-1-18";
> :BUFR:bitWidth = 40; // int
> String Type of measuring equipment used;
> :units = "CodeTable 0-2-3";
> :BUFR:CodeTable = "Type of measuring equipment used (0-2-3)";
> :BUFR:TableB_descriptor = "0-2-3";
> :BUFR:bitWidth = 4; // int
> String Time significance;
> :units = "CodeTable 0-8-21";
> :BUFR:CodeTable = "Time significance (0-8-21)";
> :BUFR:TableB_descriptor = "0-8-21";
> :BUFR:bitWidth = 5; // int
> float Time period or displacement;
> :units = "Second";
> :BUFR:TableB_descriptor = "0-4-26";
> :BUFR:bitWidth = 13; // int
>
> Sequence {
> short Height above station;
> :units = "m";
> :missing_value = 32767S; // short
> :_CoordinateAxisType = "Height";
> :BUFR:TableB_descriptor = "0-7-6";
> :BUFR:bitWidth = 15; // int
> float Virtual temperature;
> :units = "K";
> :BUFR:TableB_descriptor = "0-12-7";
> :BUFR:bitWidth = 12; // int
> byte Wind profiler quality control test results;
> :units = "FlagTable 0-25-34";
> :missing_value = 15B; // byte
> :BUFR:TableB_descriptor = "0-25-34";
> :BUFR:bitWidth = 4; // int
> } seq1;
>
> } obs(*);
>
>
> :history = "Direct read of BUFR data by CDM";
> :location = "5900.20030601.rass";
> :BUFR:edition = 3; // int
> :BUFR:categoryName = "Vertical soundings (other than satellite)";
> :BUFR:category = 2; // int
> :BUFR:subCategory = 0; // int
> :BUFR:localSubCategory = -1; // int
> :BUFR:centerName = "59.0 (The NOAA Forecast Systems Laboratory,
> Boulder, CO, USA)";
> :BUFR:center = 59; // int
> :BUFR:subCenter = 0; // int
> :BUFR:table = 0; // int
> :BUFR:tableVersion = 3; // int
> :BUFR:localTableVersion = 3; // int
> :WMO Header = "";
> :Conventions = "BUFR/CDM";
> :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention";
> }
>
>
> --
> Brian Schlining
>
>
>
> _______________________________________________
> netcdf-java mailing list
> netcdf-java@xxxxxxxxxxxxxxxx
> For list information or to unsubscribe, visit:
> http://www.unidata.ucar.edu/mailing_lists/
>