Re: [netcdf-java] grib2

Hi Christian,

Thanks for your response.  I've cut down the code (pasted below) to a sort
of bare-bones version that is ONLY trying to open the .grib2 file as if it
were a .nc file.

I build apache tika from:

svn co http://svn.apache.org/repos/asf/tika/trunk tika
mvn install

I pulled netcdfAll and toolsUI .jar files from:
http://www.unidata.ucar.edu/downloads/netcdf/netcdf-java-4/index.jsp

I pulled the grib .jar from:
http://mvnrepository.com/artifact/edu.ucar/grib/8.0.29

I compile the code as:
[asc-227-196:src/main/java] AB%   javac -classpath
../../../../tika-core/target/tika-core-1.6-SNAPSHOT.jar:../../../../toolsUI-4.3.jar:../../../../netcdfAll-4.3.jar:../../../../grib-8.0.29.jar
org/apache/tika/parser/grib/GribParser.java

I run the code as:
[asc-227-196:~/Development/tikadev/tika] AB%  java -classpath
tika-app/target/tika-app-1.6-SNAPSHOT.jar:annie-parsers.jar:netcdfAll-4.3.jar:grib-8.0.29.jar:toolsUI-4.3.jar
org.apache.tika.cli.TikaCLI --text gdas1.forecmwf.2014062612.grib2

CODE:

--------------------------------------------------
package org.apache.tika.parser.grib;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.Set;
import java.util.List;
import java.util.Iterator;

//JDK imports
import org.apache.tika.exception.TikaException;
import org.apache.tika.io.IOUtils;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.metadata.Property;
import org.apache.tika.metadata.TikaCoreProperties;
import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.AbstractParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.XHTMLContentHandler;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;

import ucar.grib.grib2.*;
import ucar.nc2.*;

/**
 * A {@link Parser} for <a
 * href="http://www.unidata.ucar.edu/software/netcdf/index.html";>NetCDF</a>
 * files using the UCAR, MIT-licensed <a
 * href="http://www.unidata.ucar.edu/software/netcdf-java/";>NetCDF for
Java</a>
 * API.
 */
public class GribParser extends AbstractParser {

    private final Set<MediaType> SUPPORTED_TYPES =
        Collections.singleton(MediaType.application("x-grib2"));
    /*
     * (non-Javadoc)
     *
     * @see
     *
org.apache.tika.parser.Parser#getSupportedTypes(org.apache.tika.parser
     * .ParseContext)
     */
    public Set<MediaType> getSupportedTypes(ParseContext context) {
        return SUPPORTED_TYPES;
    }
    /*
     * (non-Javadoc)
     *
     * @see org.apache.tika.parser.Parser#parse(java.io.InputStream,
     * org.xml.sax.ContentHandler, org.apache.tika.metadata.Metadata,
     * org.apache.tika.parser.ParseContext)
     */
    public void parse(InputStream stream, ContentHandler handler,
            Metadata metadata, ParseContext context) throws IOException,
            SAXException, TikaException {

    System.err.println(" Check 1 ");
    String name =
"/Users/IGSWAHWSWBURGESS/POLARCYBER/gdas1.forecmwf.2014062612.grib2";

    if (name == null) {
            name = "";
        }

NetcdfFile ncFile = NetcdfFile.open(name, null);
 System.err.println(" Check 2 ");
 }
}


OUTPUT:

 Check 1

Exception in thread "main" org.apache.tika.exception.TikaException:
Unexpected RuntimeException from
org.apache.tika.parser.grib.GribParser@261a53b9
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:245)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:243)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:121)
at org.apache.tika.cli.TikaCLI$OutputType.process(TikaCLI.java:141)
at org.apache.tika.cli.TikaCLI.process(TikaCLI.java:420)
at org.apache.tika.cli.TikaCLI.main(TikaCLI.java:111)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError:
ucar.grib.grib2.Grib2WriteIndex.writeGribIndex(Ljava/io/File;Ljava/lang/String;Lucar/unidata/io/RandomAccessFile;Z)Lucar/grid/GridIndex;
at ucar.nc2.NetcdfFile.<init>(NetcdfFile.java:1326)
at ucar.nc2.NetcdfFile.open(NetcdfFile.java:744)
at ucar.nc2.NetcdfFile.openInMemory(NetcdfFile.java:670)
at org.apache.tika.parser.grib.GribParser.parse(GribParser.java:93)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:243)
... 5 more
Caused by: java.lang.NoSuchMethodError:
ucar.grib.grib2.Grib2WriteIndex.writeGribIndex(Ljava/io/File;Ljava/lang/String;Lucar/unidata/io/RandomAccessFile;Z)Lucar/grid/GridIndex;
at
ucar.nc2.iosp.grib.GribGridServiceProvider.writeIndex(GribGridServiceProvider.java:348)
at
ucar.nc2.iosp.grib.GribGridServiceProvider.getIndex(GribGridServiceProvider.java:292)
at
ucar.nc2.iosp.grib.GribGridServiceProvider.open(GribGridServiceProvider.java:118)
at ucar.nc2.NetcdfFile.<init>(NetcdfFile.java:1308)
... 9 more



Note, if I use a .nc file the code runs successfully.

OUTPUT:

 Check 1
 Check 2


I am sort of a java newbie, so please let me know if I've left out any
critical information!

Thank you for any help/insight you can give.

Annie


On Sun, Jul 27, 2014 at 10:44 PM, Christian Ward-Garrison <cwardgar@xxxxxxxx
> wrote:

> Hi Annie,
>
> This is the result of the GRIB module not being on the classpath when you
> execute your Java program. Can you give me more details about your setup?
> Can you provide you build file (Maven, Ant, Gradle, etc)?
>
> Cheers,
> Christian
>
>
> On Wed, Jul 23, 2014 at 5:06 PM, Annie Burgess <anniebryant@xxxxxxxxx>
> wrote:
>
>> Greetings all,
>>
>> I am trying to create a script that will mimic the output of NCDump.  I
>> have successfully done this for NetCDF files, and now I am trying to apply
>> it to grib2 files.  I am using the NetCDF-java library in conjunction with
>> Apache Tika to do this.  Other posts have indicated I should be able to
>> open my grib2 files, just as if they were .nc files.  However, I continue
>> to get the following error:
>>
>> "Caused by: java.io.IOException: Cant read gdas1.forecmwf.2014062612.grib2:
>> not a valid CDM file."
>>
>> To open the .nc files, this is the bit of code I use (with the exception
>> of changing the .nc file to a .grib2 file):
>>
>> String name = "gdas1.forecmwf.2014062612.grib2";
>>
>> if (name == null) {
>>             name = "";
>>         }
>>
>>         try  NetcdfFile ncFile = NetcdfFile.openInMemory(name,
>> os.toByteArray());
>>             // first parse out the set of global attributes
>>             for (Attribute attr : ncFile.getGlobalAttributes()) {
>>                 Property property = resolveMetadataKey(attr.getName());
>>                 if (attr.getDataType().isString()) {
>>                    metadata.add(property, attr.getStringValue());
>>                 } else if (attr.getDataType().isNumeric()) {
>>                    int value = attr.getNumericValue().intValue();
>>                     metadata.add(property, String.valueOf(value));
>>                 }
>>             }
>>
>> Also, I am using the netcdfAll-4.3.jar at the command line.  Does anyone
>> have any insight as to *why *I'd be getting the 'not a valid CDM' error.
>>  I have checked the file using the NetCDF (4.3) GUI and the file looks
>> good.
>>
>> Thank you for any insight you can give.
>>
>> Annie
>>
>>
>> _______________________________________________
>> netcdf-java mailing list
>> netcdf-java@xxxxxxxxxxxxxxxx
>> For list information or to unsubscribe, visit:
>> http://www.unidata.ucar.edu/mailing_lists/
>>
>
>
  • 2014 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: