Re: [netcdf-java] netcdf-java Digest, Vol 66, Issue 12

Hi Christian,

I'm still trying to sort out the issue of parsing .grib2 files.  I need to
be able to open .grib2 files without using the netcdfAll bundle.  I'm
taking the approach of gathering all the CDM Dependancies
<http://www.unidata.ucar.edu/software/thredds/v4.5/netcdf-java/reference/JarDependencies.html#logging>
from
Maven Central, however, I'm still getting errors.  Have you successfully
opened a .grib2 files by providing all necessary .jar files at your shell
command?  If so, could you pass along an example?

Many thanks,

Annie




On Wed, Jul 30, 2014 at 10:00 AM, <netcdf-java-request@xxxxxxxxxxxxxxxx>
wrote:

> Send netcdf-java mailing list submissions to
>         netcdf-java@xxxxxxxxxxxxxxxx
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://mailman.unidata.ucar.edu/mailman/listinfo/netcdf-java
> or, via email, send a message with subject or body 'help' to
>         netcdf-java-request@xxxxxxxxxxxxxxxx
>
> You can reach the person managing the list at
>         netcdf-java-owner@xxxxxxxxxxxxxxxx
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of netcdf-java digest..."
>
>
> Today's Topics:
>
>    1. Re: grib2 (Dennis Heimbigner)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 29 Jul 2014 15:04:15 -0600
> From: Dennis Heimbigner <dmh@xxxxxxxx>
> To: Christian Ward-Garrison <cwardgar@xxxxxxxx>
> Cc: Annie Bryant <anniebryant.burgess@xxxxxxxxx>,
>         netcdf-java@xxxxxxxxxxxxxxxx
> Subject: Re: [netcdf-java] grib2
> Message-ID: <53D80C4F.3010007@xxxxxxxx>
> Content-Type: text/plain; charset=UTF-8; format=flowed
>
> There may be a way to fix this.
> You might 'unjar' tika-app-1.6-SNAPSHOT.jar
> and replace the old netcdf in that jar with the
> newer version, then rejar tika-app-1.6-SNAPSHOT.jar.
> Assuming no interface problems, this has a fair chance
> to work.
> =Dennis Heimbigner
>   Unidata
>
> Christian Ward-Garrison wrote:
> > Hi Annie,
> >
> > It turns out that this is an issue with Tika. tika-app-1.6-SNAPSHOT.jar
> > actually includes netcdf-4.2.20, so you have 2 different versions of the
> > same library on the classpath, which is always bad. And unfortunately,
> > using Tika's bundled netcdf-4.2.20 alone won't work, because support for
> > reading GRIB files was only added to NetCDF-Java in 4.3+.
> >
> > This may be a problem that only the Tika developers know how to fix. I
> > suggest opening a ticket with them.
> >
> > Good luck!
> > Christian Ward-Garrison
> >
> >
> > On Mon, Jul 28, 2014 at 3:19 PM, Annie Burgess <anniebryant@xxxxxxxxx>
> > wrote:
> >
> >> Hi Christian,
> >>
> >> Your code words great - no problems when I compile and run.  I've
> modified
> >> my code to use NetcdfDataset rather than NetcdfFile to open the .grib2
> >> file.  However, I'm still getting an error in my code:
> >>
> >> % javac -classpath
> >>
> ../../../../tika-core/target/tika-core-1.6-SNAPSHOT.jar:../../../../netcdfAll-4.3.jar
> >> org/apache/tika/parser/grib/GribParser.java
> >>
> >> % java -classpath
> >>
> tika-app/target/tika-app-1.6-SNAPSHOT.jar:annie-parsers.jar:netcdfAll-4.3.jar
> >> org.apache.tika.cli.TikaCLI --text gdas1.forecmwf.2014062612.grib2
> >>
> >>
> >> -----------------------GripParser.java------------------------
> >> import java.io.ByteArrayOutputStream;
> >> import java.io.IOException;
> >> import java.io.InputStream;
> >> import java.util.Collections;
> >> import java.util.Set;
> >> import java.io.File;
> >>
> >> import org.apache.tika.exception.TikaException;
> >>
> >> 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.nc2.NetcdfFile;
> >> import ucar.nc2.dataset.NetcdfDataset;/**
> >>
> >>
> >> public class GribParser extends AbstractParser {
> >>
> >>     private final Set<MediaType> SUPPORTED_TYPES =
> >>         Collections.singleton(MediaType.application("x-grib2"));
> >>
> >>    public Set<MediaType> getSupportedTypes(ParseContext context) {
> >>         return SUPPORTED_TYPES;
> >>     }
> >>
> >>        public void parse(InputStream stream, ContentHandler handler,
> >>             Metadata metadata, ParseContext context) throws IOException,
> >>             SAXException, TikaException {
> >>
> >>     System.err.println(" Check 1 ");
> >>
> >>     File gribFile = new File("gdas1.forecmwf.2014062612.grib2");
> >>
> >>     NetcdfFile ncFile =
> NetcdfDataset.openFile(gribFile.getAbsolutePath(),
> >> null);
> >>
> >>      System.err.println(" Check 2 ");
> >>
> >>      }
> >> }
> >>
> >> ---------------------OUTPUT---------------------
> >>
> >> Check 1
> >> Exception in thread "main" org.apache.tika.exception.TikaException:
> >> TIKA-198: Illegal IOException from
> >> org.apache.tika.parser.grib.GribParser@483ad415
> >> at
> org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:249)
> >>
> >> 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.io.IOException: Cant read
> >> /Users/IGSWAHWSWBURGESS/Development/tikadev/tika/gdas1.forecmwf.
> 2014062612.grib2:
> >> not a valid CDM file.
> >> at ucar.nc2.NetcdfFile.open(NetcdfFile.java:734)
> >> at ucar.nc2.NetcdfFile.open(NetcdfFile.java:384)
> >> at
> ucar.nc2.dataset.NetcdfDataset.openOrAcquireFile(NetcdfDataset.java:687)
> >> at ucar.nc2.dataset.NetcdfDataset.openFile(NetcdfDataset.java:564)
> >> at org.apache.tika.parser.grib.GribParser.parse(GribParser.java:82)
> >>
> >> at
> org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:243)
> >> ... 5 more
> >>
> >> ---------------------------------------------
> >>
> >> netcdfALL and .grib2 files are in the same director where I am running
> >> GribParser.java.  This could totally be a classpath issue... I'm just
> >> stumped.
> >>
> >> Any other ideas?
> >>
> >> Thanks!
> >> Annie
> >>
> >>
> >> On Mon, Jul 28, 2014 at 12:40 PM, Christian Ward-Garrison <
> >> cwardgar@xxxxxxxx> wrote:
> >>
> >>> Hi Annie,
> >>>
> >>> I see you're using netcdfAll-4.3.jar. That actually already contains
> the
> >>> grib module, so it should be all you need. I created a minimal example:
> >>>
> >>> ------------------------------------- Foo.java
> >>> -------------------------------------
> >>>
> >>> import java.io.IOException;
> >>> import java.io.File;
> >>> import ucar.nc2.NetcdfFile;
> >>> import ucar.nc2.dataset.NetcdfDataset;
> >>>
> >>> public class Foo {
> >>>     public static void main(String[] args) throws IOException {
> >>>         File gribFile = new File("foo.grib2");
> >>>         NetcdfFile ncFile =
> >>> NetcdfDataset.openFile(gribFile.getAbsolutePath(), null);
> >>>         try {
> >>>             System.out.println(ncFile.toString());
> >>>         } finally {
> >>>             ncFile.close();
> >>>         }
> >>>     }
> >>> }
> >>>
> >>> ------------------------------------- Shell commands
> >>> -------------------------------------
> >>>
> >>> javac -cp netcdfAll-4.3.jar Foo.java
> >>>
> >>> java -cp .;netcdfAll-4.3.jar Foo
> >>>
> >>>
> >>> That should work as long as netcdfAll-4.3.jar and a file named
> >>> "foo.grib2" are in the same directory as Foo.java. If you move things,
> >>> you'll obviously need to modify the commands. Does this example work
> for
> >>> you?
> >>>
> >>> Cheers,
> >>> Christian
> >>>
> >>>
> >>>
> >>> On Mon, Jul 28, 2014 at 1:52 PM, Annie Burgess <anniebryant@xxxxxxxxx>
> >>> wrote:
> >>>
> >>>> 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 mailing list
> > netcdf-java@xxxxxxxxxxxxxxxx
> > For list information or to unsubscribe, visit:
> http://www.unidata.ucar.edu/mailing_lists/
>
>
>
> ------------------------------
>
> _______________________________________________
> netcdf-java mailing list
> netcdf-java@xxxxxxxxxxxxxxxx
> For list information or to unsubscribe, visit:
> http://www.unidata.ucar.edu/mailing_lists/
>
> End of netcdf-java Digest, Vol 66, Issue 12
> *******************************************
>



-- 
------------------------------------------------------------------------------------------
Ann Bryant Burgess, PhD

Postdoctoral Fellow
Computer Science Department
University of Southern California
Viterbi School of Engineering
Los Angeles, CA

Alaska Science Center/USGS
Anchorage, AK

Cell:  (585) 738-7549
Office:  (907) 786-7059
Fax:  (907) 786-7150
E-mail: anniebryant.burgess@xxxxxxxxx
Office Address: 4210 University Dr., Anchorage, AK 99508-4626
-------------------------------------------------------------------------------------------
  • 2014 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: