[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: no coordinate systems/axis in netcdf file - help
- Subject: Re: no coordinate systems/axis in netcdf file - help
- Date: Fri, 16 May 2003 15:23:26 -0600
Mark Rehbein wrote:
Hi John,
I have noticed that you are actively working on the API as I have seen the
javadoc change on GridCoordSys in the last few hours. I have since
downloaded the library again, as I was using this class for my program.
yes, Im trying to get a stable version out. sorry for the changes.
I have made some progress but have a question and wish to report a
bug/problem.
My question is:
How do I easily convert a java.util.Date to an array index on the time
axis? There is a method GridCoordSys.findXYCoordElement(double, double,
int[]) which handles converting latitude and longitude to array indexes
and I think it would be useful to have an equivalent for the time axis.
how about:
/**
* Given a Date, find the corresponding time index on the time
coordinate axis.
* Can only call this is hasDate() is true.
* This will return
* <ul>
* <li> i, if time(i) <= d < time(i+1).
* <li> -1, if d < time(0)
* <li> n-1, if d > time(n-1), where n is length of time coordinates
* </ul>
*
* @param d date to look for
* @param corresponding time index on the time coordinate axis
* @throws UnsupportedOperationException is no time axis or isDate() false
*/
public int findTimeCoordElement(Date d) ;
The bug or problem that I have discovered is a negative seek offset error
as shown below:
<error>
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$V1FloatIo.readArray(NetcdfFile.java:1447)
at ucar.netcdf.NetcdfFile$V1Io.copyout(NetcdfFile.java:896)
at ucar.netcdf.Variable.copyout(Variable.java:276)
at ucar.nc2.Variable.read(Variable.java:184)
at ucar.nc2.dataset.VariableDS.read(VariableDS.java:334)
at
aims.app.science.biodiv.sstAtlas.ImageLibrary.readData(ImageLibrary.java:166)
at
aims.app.science.biodiv.sstAtlas.ImageLibrary.main(ImageLibrary.java:423)
done!
</error>
I have appended the method I have written below for your convenience, if
needed. The method works fine when I use:
latitude= -7.0 and longitude= 157.99
latitude= -27.0 and longitude= 157.99
latitude= -27.0 and longitude= 142.00
latitude= -7.0 and longitude= 142.00
but it throws the above error when using lat= -19.6 and lon= 150.5
which are coordinates within the bounds of coordinates which work!
i assume you found this problem
I have noticed that the *bottom* *left* corner of my images (in lat,lon
coordinates) represents 0,0 in array index coordinates. I would have
expected that the *top* *left* corner of my images (in lat,lon
coordinates) would be represented by 0,0 in array index coordinates.
latitudes are stored both ways: north to south ans south to north.
I am going to add a routine to normalize this in GeoGrid, havent
figured out the API yet.