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.

[decoders] Grib1 Indexer and GDS info

NOTE: The decoders mailing list is no longer active. The list archives are made available for historical reasons.

I am using the Grib1Indexer to read the Grib file. I need to get the information lat, long, and nxny (145 X 73) as indicated below. I tried to use Index.GdsRecord, however I wasn't successful. Although I could get start points of lat and long, I wasn't able to get neither resolution nor the end points of lat & long by using gdsRecord. Could you please show me some that direction on how to get this information?
Thanks in advance.

------------
rec 98:1554711:date 2008080400 TMP kpds5=11 kpds6=105 kpds7=2 levels=(0,2) 
grid=16 2 m above gnd 24hr fcst:
 TMP=Temp. [K]
 timerange 0 P1 24 P2 0 TimeU 1  nx 145 ny 73 GDS grid 0 num_in_ave 0 missing 0
 center 1 subcenter 0 process 45 Table 1 scan: WE:SN winds(N/S)
 latlon: lat  -90.000000 to 90.000000 by 2.500000  nxny 10585 long 0.000000 to 
360.000000 by 2.500000, (145 x 73) scan 64 mode 128 bdsgrid 1--


The following is how I use the grib indexer to get the grib data.

RandomAccessFile raf = new RandomAccessFile(filePath, "r");
Grib1Indexer indexer = new Grib1Indexer();
PrintStream ps = new PrintStream(indexPath);
indexer.writeFileIndex(raf, ps, false );

Index index = new Index();
boolean rc = index.open(indexPath);
ArrayList gribIndexRecords = index.getGribRecords();
ArrayList<GdsRecord> gdsRecords = index.getHorizCoordSys();
//
// Build a hashmap for the GDS keys.
//              
java.util.HashMap gdsMap = new java.util.HashMap();
                
for (int a = 0; a < gdsRecords.size(); a++) {
        GdsRecord gdsRecord = gdsRecords.get(a);
        gdsMap.put(gdsRecord.gdsKey, gdsRecord);
}
                
for (Iterator it = gribIndexRecords.iterator (); it.hasNext (); ) {
   zz++;
   GribRecord gribRecord = (GribRecord)it.next();
   if (gribRecord != null) {
        //
        //Select only temperature.
        //
        if (gribRecord.paramNumber == 11 ) {
            if (gribRecord.levelType1 == 105) {
                if (gribRecord.levelValue1 == 2.0) {
                    if (gribRecord.forecastTime == 24) {
                        Grib1Data grib1data = new Grib1Data(raf);
                        if (gdsMap.get(gribRecord.gdsKey) != null) {
                            GdsRecord gds = 
(GdsRecord)gdsMap.get(gribRecord.gdsKey);
                           System.out.println("Dx: " + gds.dx);
                           System.out.println("Dy: " + gds.dy);
                           System.out.println("Grid Shape Code: " + 
gds.grid_shape_code);
                           System.out.println("Grid Type: " + gds.grid_type);
                           System.out.println("La1: " + gds.La1);
                           System.out.println("LaD: " + gds.LaD);
                           System.out.println("Latin1: " + gds.latin1);
                           System.out.println("Latin2: " + gds.latin2);
                           System.out.println("Lo1: " + gds.Lo1);
                           System.out.println("LoV: " + gds.LoV);
                           System.out.println("Major Axis Earth " + 
gds.major_axis_earth);
                           System.out.println("Minor Axis Earth " + 
gds.minor_axis_earth);
                           System.out.println("Nx: " + gds.nx);
                           System.out.println("Ny: " + gds.ny);
                           System.out.println("Radius Spherical Earth: " + 
gds.radius_spherical_earth);
                           System.out.println("Resolution: " + gds.resolution);
                           System.out.println("Winds: " + gds.winds);
                        }
                        float[] arr = grib1data.getData(gribRecord.offset1, 
gribRecord.decimalScale, gribRecord.bmsExists);
                    } // hour 24
                } // 2m
           } //above ground
       } // end of temperature
   } // grib record is not null
} // end for

Sincerely,

Pelin Bali

WeatherPredict Consulting, Inc.
3200 Atlantic Avenue, Suite 114
Raleigh, NC 27604

Phone (Direct): 919-239-8833
Phone (Main)  : 919-876-3633
Fax           : 919-876-4469

"Imagination will often carry us to worlds that never were.
But without it we go nowhere." - Carl Sagan (Cosmos - 1980)


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