large file support
Christopher.Moore at noaa.gov
Christopher.Moore at noaa.gov
Fri Oct 27 13:29:37 MDT 2006
Ah - found the problem. I was using an old jar file in my netbeans project.
I'm glad you guys finally started naming the jar file with the version. For
2.1, the web site gave me a file called netcdfAll.jar (same name as 2.0), but
now the base jar is ncCore-2.2.16.jar.
Not only is my app reading my new 64bit-offset files, but the
Negative-seek-offset problem cleared up, too.
Keep up the good work,
Chris
__________________________________________________________________
Christopher W. Moore email: Christopher.Moore at noaa.gov
Research Scientist, Oceanography tel: 206.526.6779
University of Washington/JISAO/NOAA-PMEL fax: 206.526.6744
NOAA Center for Tsunami Research Seattle, WA
------------------------------------------------------------------
On Thu, 26 Oct 2006, John Caron wrote:
> Hi Chris:
>
> Sounds like a bug!
> Any way tou can put your data on an ftp or http server so I can recreate the
> problem?
>
> thanks
>
> Christopher.Moore at noaa.gov wrote:
>>
>> Hi John & others,
>>
>> A lot of us are creating large netcdf files these days, and I was wondering
>> if anyone is having the same kind of problems I am:
>>
>> When I open a large (~2Gb) netcdf file using the latest stable release,
>> I've been getting an error. The code was working when the file size was
>> smaller (fewer time steps, smaller lat/lon resolution).
>>
>> My data is simply
>> dimensions:
>> LON = 1276 ;
>> LAT = 950 ;
>> TIME = UNLIMITED ; // (601 currently)
>> variables:
>> double LON(LON) ;
>> LON:units = "degrees_east" ;
>> LON:point_spacing = "even" ;
>> double LAT(LAT) ;
>> LAT:units = "degrees_north" ;
>> LAT:point_spacing = "uneven" ;
>> double TIME(TIME) ;
>> TIME:units = "SECONDS" ;
>> float HA(TIME, LAT, LON) ;
>>
>> I start by opening the file, getting the time dimension & variable. It
>> croaks when reading the variable into an Array (note that I'm only reading
>> the TIME axis array, fairly small):
>>
>> ...
>> Variable testVar = timeDim.getCoordinateVariable();
>> System.out.println("testVar.getName: " + testVar.getName());
>> System.out.println("testVar.getDataType: " +
>> testVar.getDataType());
>> System.out.println("testVar.getRank: " + testVar.getRank());
>> int[] testShape = testVar.getShape();
>> for (int q=0; q<testShape.length; q++)
>> System.out.println("testShape["+q+"]: " + testShape[q]);
>> int[] testOrigin = new int[testVar.getRank()];
>> Array testArr2 = testVar.read(testOrigin,testShape);
>>
>> error: java.io.IOException: Negative seek offset
>> java.io.IOException: Negative seek offset
>> at java.io.RandomAccessFile.seek(Native Method)
>> at ucar.netcdf.RandomAccessFile.read_(RandomAccessFile.java:508)
>> at ucar.netcdf.RandomAccessFile.seek(RandomAccessFile.java:350)
>> at
>> ucar.netcdf.NetcdfFile$V1DoubleIo.readArray(NetcdfFile.java:1520)
>> at ucar.netcdf.NetcdfFile$V1Io.copyout(NetcdfFile.java:896)
>> at ucar.netcdf.Variable.copyout(Variable.java:276)
>> at ucar.nc2.Variable.read(Variable.java:237)
>>
>>
>> I immediately thought it was a Large File Support problem, but a little
>> investigation turned up the fact that I don't (yet) need 64-bit addressing
>> because my record sizes are small. In fact, I can read the file fine with
>> applications that use the C and FORTRAN netcdf libraries (version 3.6 or
>> higher). And ncdump works.
>>
>> But I went ahead and created the large file with 64-bit addressing anyway
>> by simply changing one line in my FORTRAN model from
>>
>> iret = nf_create(ncfn, NF_CLOBBER, ncid)
>> to
>>
>> iret = nf_create(ncfn, OR(NF_CLOBBER, NF_64BIT_OFFSET), ncid)
>>
>> It creates the file just fine, checking with:
>>
>> od -An -c -N4 foo.nc
>> gives the expected
>> C D F 002
>>
>> and ncdump gives
>>
>> netcdf s_2903-563_ha64 { // format variant: 64bit
>> dimensions: ...
>>
>> but my java code still croaks (in the same way Ferret does if not compiled
>> against netcdf lib > 3.6):
>>
>> Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
>> Not a netcdf file
>> at ucar.netcdf.NetcdfFile.readV1(NetcdfFile.java:1745)
>> at ucar.netcdf.NetcdfFile.<init>(NetcdfFile.java:130)
>> at ucar.netcdf.NetcdfFile.<init>(NetcdfFile.java:148)
>> at ucar.nc2.NetcdfFile.<init>(NetcdfFile.java:61)
>>
>>
>> Anybody else out there creating java applications that read large files?
>>
>> I'm running RHEL4 on an EMT64 x86_64 machine, with java 1.5.0_06 and java
>> netcdf version 2.2.16
>>
>> Yours,
>> Chris
>>
>> __________________________________________________________________
>> Christopher W. Moore email: Christopher.Moore at noaa.gov
>> Research Scientist, Oceanography tel: 206.526.6779
>> University of Washington/JISAO/NOAA-PMEL fax: 206.526.6744
>> NOAA Center for Tsunami Research Seattle, WA
>> ------------------------------------------------------------------
>>
>> ===============================================================================
>> To unsubscribe netcdf-java, visit:
>> http://www.unidata.ucar.edu/mailing-list-delete-form.html
>> ===============================================================================
>
> ==============================================================================
> To unsubscribe netcdf-java, visit:
> http://www.unidata.ucar.edu/mailing-list-delete-form.html
> ==============================================================================
>
>
==============================================================================
To unsubscribe netcdf-java, visit:
http://www.unidata.ucar.edu/mailing-list-delete-form.html
==============================================================================
More information about the Netcdf-java
mailing list