Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
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.
netcdf-java
archives: