private void _addDimensionVariables(DfsUtilities df_in, ucar.nc2.NetcdfFileWriteable newNetcdfFile, out ucar.nc2.Dimension timeDim, out ucar.nc2.Dimension xDim, out ucar.nc2.Dimension yDim) { timeDim = newNetcdfFile.addDimension(_settings.TimeAxisName, df_in.tAxis_nTSteps); xDim = newNetcdfFile.addDimension(_settings.XAxisName, df_in.Items[0].nPointsX); yDim = newNetcdfFile.addDimension(_settings.YAxisName, df_in.Items[0].nPointsY); java.util.ArrayList dims = new java.util.ArrayList(); dims.add(timeDim); newNetcdfFile.addVariable(_settings.TimeAxisName, ucar.ma2.DataType.FLOAT, dims); string unit = ""; int dtStep = (int)df_in.tAxis_dTStep; switch (dtStep) { case 31556926: unit = "years since "; break; case 2629743: unit = "months since "; break; case 604800: unit = "weeks since "; break; case 86400: unit = "days since "; break; case 3600: unit = "hours since "; break; case 60: unit = "minutes since "; break; case 1: unit = "seconds since "; break; default: unit = "seconds since "; break; } newNetcdfFile.addVariableAttribute(_settings.TimeAxisName, "units", unit + df_in.tAxis_StartDateStr + " " + df_in.tAxis_StartTimeStr); newNetcdfFile.addVariableAttribute(_settings.TimeAxisName, "long_name", "time"); dims = new java.util.ArrayList(); dims.add(xDim); newNetcdfFile.addVariable(_settings.XAxisName, ucar.ma2.DataType.FLOAT, dims); newNetcdfFile.addVariableAttribute(_settings.XAxisName, "units", "degrees east");//df_in.Items[0].axisEUMUnitString); newNetcdfFile.addVariableAttribute(_settings.XAxisName, "long_name", "longitude"); newNetcdfFile.addVariableAttribute(_settings.XAxisName, "axis", "x"); newNetcdfFile.addVariableAttribute(_settings.XAxisName, "DHIUnitName", df_in.Items[0].axisEUMUnitString); newNetcdfFile.addVariableAttribute(_settings.XAxisName, "projection", df_in.Projection); dims = new java.util.ArrayList(); dims.add(yDim); newNetcdfFile.addVariable(_settings.YAxisName, ucar.ma2.DataType.FLOAT, dims); newNetcdfFile.addVariableAttribute(_settings.YAxisName, "units", "degrees north");//df_in.Items[0].axisEUMUnitString); newNetcdfFile.addVariableAttribute(_settings.YAxisName, "long_name", "latitude"); newNetcdfFile.addVariableAttribute(_settings.YAxisName, "axis", "y"); newNetcdfFile.addVariableAttribute(_settings.YAxisName, "DHIUnitName", df_in.Items[0].axisEUMUnitString); newNetcdfFile.addVariableAttribute(_settings.YAxisName, "projection", df_in.Projection); }
private void _writeDimensionData(DfsUtilities df_in, ucar.nc2.NetcdfFileWriteable newNetcdfFile) { //time ucar.ma2.ArrayDouble timeDataArr = new ucar.ma2.ArrayDouble.D1(df_in.tAxis_nTSteps); int dtStep = (int)df_in.tAxis_dTStep; int multiples = 1; switch (dtStep) //todo: to add multiples of other time units. now only seconds is supported { case 31556926: break; case 2629743: break; case 604800: break; case 86400: break; case 3600: break; case 60: break; case 1: break; default: multiples = dtStep / 1; break; } for (int i = 0; i < df_in.tAxis_nTSteps; i++) { double timeStepValue; if (df_in.tAxis_nTSteps == 1) { timeStepValue = dtStep / dtStep * multiples; } else { timeStepValue = (df_in.tAxis_dTStep / dtStep) * i * multiples; //convert to hours or days or whatever } timeDataArr.setDouble(i, timeStepValue); } newNetcdfFile.write(_settings.TimeAxisName, timeDataArr); //lon ucar.ma2.ArrayDouble xDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsX); for (int i = 0; i < df_in.Items[0].nPointsX; i++) { double xValue = df_in.Longitude + df_in.Items[0].DX * i; xDataArr.setDouble(i, xValue); } newNetcdfFile.write(_settings.XAxisName, xDataArr); //lat ucar.ma2.ArrayDouble yDataArr = new ucar.ma2.ArrayDouble.D1(df_in.Items[0].nPointsY); for (int i = 0; i < df_in.Items[0].nPointsY; i++) { double yValue = df_in.Latitude + df_in.Items[0].DY * i; yDataArr.setDouble(i, yValue); } newNetcdfFile.write(_settings.YAxisName, yDataArr); }