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.

Re: [netcdf-java] Fw: Syntax for opening and reading a BUFR file

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/
> 



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