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.
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/ >> > >
netcdf-java
archives: