2016-07-22 9 views
1

ich von hier einige grib Datendateien heruntergeladen haben: ftp://data-portal.ecmwf.int/20160721000000/(Dateityp ist .bin) und wollen die Daten aus dieser Datei in meinem Java-Anwendung extrahieren (Ich möchte Laden Sie die extrahierten Daten später in eine Datenbank). Ich versuche nur mit der Datei ftp://wmo:[email protected]/20160721000000/A_HWXE85ECEM210000_C_ECMF_20160721000000_24h_em_ws_850hPa_global_0p5deg_grib2.bin.Java GRIB-Decoder: Extrahieren von Daten aus GRIB2 Dateien

Daher habe ich ein neues Java-Projekt erstellt und die beiden Bibliotheken grib-8.0.29.jar und netcdfAll-4.6.6.jar hinzugefügt. Dokumentation für die grib API finden Sie hier: http://www.unidata.ucar.edu/software/decoders/grib/javadoc/. Ich muss die heruntergeladenen Dateien öffnen, um die Daten zu erhalten. Das Abrufen einiger Metadaten über Grib2Dump scheint zu funktionieren (siehe unten). Auch die Grib2Input Instanz sais, dass ich eine gültige GRIB-Datei der Version habe 2.

Hier ist mein Arbeits Code zum Abrufen einiger Metadaten:

public static void main(String[] args) throws IOException, InterruptedException { 
     File srcDir = new File("C://test//"); 
     File[] localFiles = srcDir.listFiles(); 

     for (File tempFile : localFiles) { 
      RandomAccessFile raf = new RandomAccessFile(tempFile.getAbsolutePath(), "r"); 

      System.out.println("======= Grib2GDSVariables =========="); 
      Grib2GDSVariables gdsVariables = new Grib2GDSVariables(raf.readBytes(raf.read())); 
      System.out.println("Gds key : " + gdsVariables.getGdsKey()); 

      System.out.println("======= Grib2Input =========="); 
      Grib2Input input = new Grib2Input(raf); 
      System.out.println(Grib2Input.isValidFile(raf)); 
      System.out.println("scan : " + input.scan(true, true)); 
      System.out.println("getGDSs.size: " + input.getGDSs().size()); 
      System.out.println("getProducts.size: " + input.getProducts().size()); 
      System.out.println("getRecords.size: " + input.getRecords().size()); 
      System.out.println("edition: " + input.getEdition()); 

      System.out.println("======= Grib2Dump =========="); 
      Grib2Dump dump = new Grib2Dump(); 
      dump.gribDump(new String[] {tempFile.getAbsolutePath()}); 

      System.out.println("======= Grib2ExtractRawData =========="); 
      Grib2ExtractRawData extractRawData = new 
      Grib2ExtractRawData(raf); extractRawData.main(new String[] {tempFile.getAbsolutePath()}); 
     } 

     System.out.println("finished"); 
} 

Dies erzeugt die folgende Ausgabe:

======= Grib2GDSVariables ========== 
Gds key : -1732955898 
======= Grib2Input ========== 
true 
scan : true 
getGDSs.size: 0 
getProducts.size: 0 
getRecords.size: 0 
edition: 2 
======= Grib2Dump ========== 
-------------------------------------------------------------------- 
         Header : GRIB2 
        Discipline : 0 Meteorological products 
        GRIB Edition : 2 
        GRIB length : 113296 
      Originating Center : 98 European Center for Medium-Range Weather Forecasts (RSMC) 
     Originating Sub-Center : 0 
Significance of Reference Time : 1 Start of forecast 
       Reference Time : 2016-07-21T00:00:00Z 
       Product Status : 0 Operational products 
        Product Type : 1 Forecast products 
     Number of data points : 259920 
        Grid Name : 0 Latitude_Longitude 
        Grid Shape: 6 Earth spherical with radius of 6,371,229.0 m 
Number of points along parallel: 720 
Number of points along meridian: 361 
        Basic angle : 0 
    Subdivisions of basic angle: -9999 
    Latitude of first grid point : 90.0 
Longitude of first grid point : 0.0 
    Resolution & Component flags : 48 
         Winds : True 
    Latitude of last grid point : -90.0 
    Longitude of last grid point : 359.5 
     i direction increment : 0.5 
     j direction increment : 0.5 
        Grid Units : degrees 
       Scanning mode : 0 
      Product Definition : 2 Derived forecast on all ensemble members at a point in time 
      Parameter Category : 2 Momentum 
       Parameter Name : 1 Wind_speed 
       Parameter Units : m s-1 
     Generating Process Type : 4 Ensemble Forecast 
        ForecastTime : 24 
      First Surface Type : 100 Isobaric surface 
      First Surface value : 85000.0 
      Second Surface Type : 255 Missing 
      Second Surface value : -9.999E-252 
======= Grib2ExtractRawData ========== 
finished 

Ich habe es jetzt zwei Tage lang versucht, konnte es aber nicht zur Arbeit bringen! Ich kann die Inhaltsdaten (lat, lon, value) nicht aus der Datei abrufen ...

Kann jemand ein Beispiel in Java geben?

Antwort