String timeCoordName = "time";
Variable taxis = new Variable(ncfile, null, null, timeCoordName);
taxis.setDataType(DataType.DOUBLE);
taxis.setDimensions("time");
taxis.addAttribute(new Attribute("long_name", "time since base date"));
taxis.addAttribute(new Attribute(_Coordinate.AxisType, AxisType.Time.toString()));
double[] tdata = new double[1];
tdata[0] = dd.getTime();
Array dataT = Array.factory(DataType.DOUBLE.getPrimitiveClassType(), new int[] { 1 }, tdata);
taxis.setCachedData(dataT, false);
DateFormatter formatter = new DateFormatter();
taxis.addAttribute(new Attribute("units", "msecs since " + formatter.toDateTimeStringISO(new Date(0))));
ncfile.addVariable(null, taxis);
dims.add(dimT);
Dimension jDim = new Dimension("lat", numY, true, false, false);
Dimension iDim = new Dimension("lon", numX, true, false, false);
dims.add(jDim);
dims.add(iDim);
ncfile.addDimension(null, iDim);
ncfile.addDimension(null, jDim);
ncfile.addAttribute(null, new Attribute("cdm_data_type", FeatureType.GRID.toString()));
String coordinates = "time lat lon";
Variable v = new Variable(ncfile, null, null, cname);
v.setDataType(DataType.BYTE);
v.setDimensions(dims);
ncfile.addVariable(null, v);
v.addAttribute(new Attribute("long_name", ctitle));
v.addAttribute(new Attribute("units", cunit));
v.setSPobject(new Vinfo(numX, numY, hoff, false));
v.addAttribute(new Attribute(_Coordinate.Axes, coordinates));
// create coordinate variables
Variable xaxis = new Variable(ncfile, null, null, "lon");
xaxis.setDataType(DataType.DOUBLE);
xaxis.setDimensions("lon");
xaxis.addAttribute(new Attribute("long_name", "longitude"));
xaxis.addAttribute(new Attribute("units", "degree"));
xaxis.addAttribute(new Attribute(_Coordinate.AxisType, "Lon"));
double[] data1 = new double[numX];
for (int i = 0; i < numX; i++) {
data1[i] = (double) (rlon1 + i * dlon);
}
Array dataA = Array.factory(DataType.DOUBLE.getPrimitiveClassType(), new int[] { numX }, data1);
xaxis.setCachedData(dataA, false);
ncfile.addVariable(null, xaxis);
Variable yaxis = new Variable(ncfile, null, null, "lat");
yaxis.setDataType(DataType.DOUBLE);
yaxis.setDimensions("lat");
yaxis.addAttribute(new Attribute("long_name", "latitude"));
yaxis.addAttribute(new Attribute("units", "degree"));
yaxis.addAttribute(new Attribute(_Coordinate.AxisType, "Lat"));
data1 = new double[numY];
for (int i = 0; i < numY; i++) {
data1[i] = rlat1 + i * dlat;
}