internal static void createLatitudeVariable(NetcdfFileWriteable writeableFile, Dimension latDim) { writeableFile.addVariable(latVarName, DataType.FLOAT, new Dimension[] { latDim }); writeableFile.addVariableAttribute(latVarName, UnitsAttName, "degrees_north"); writeableFile.addVariableAttribute(latVarName, AxisAttName, "Y"); writeableFile.addVariableAttribute(latVarName, standardNameAttName, "latitude"); }
internal static void createLongitudeVariable(NetcdfFileWriteable writeableFile, Dimension lonDim) { writeableFile.addVariable(lonVarName, DataType.FLOAT, new Dimension[] { lonDim }); writeableFile.addVariableAttribute(lonVarName, UnitsAttName, "degrees_east"); writeableFile.addVariableAttribute(lonVarName, AxisAttName, "X"); writeableFile.addVariableAttribute(lonVarName, standardNameAttName, "longitude"); }
internal static void createTimeVariableDaily(NetcdfFileWriteable writeableFile, Dimension timeDim, DateTime startDate) { writeableFile.addVariable(TimeVarName, DataType.INT, new Dimension[] { timeDim }); writeableFile.addVariableAttribute(TimeVarName, UnitsAttName, "days since " + startDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)); writeableFile.addVariableAttribute(TimeVarName, AxisAttName, "T"); writeableFile.addVariableAttribute(TimeVarName, standardNameAttName, TimeVarName); writeableFile.addVariableAttribute(TimeVarName, LongNameAttName, TimeVarName); writeableFile.setFill(true); }
protected BaseTimeSeriesByIdentifierWriteable(string filename, DataType dataType, string[] variableName, string[] units, double[] missingVal, string[] longName, DateTime startDate, int timeLength, string itemIndexDimname = ITEM_INDEX_DIMNAME, string itemIndexVarname = ITEM_INDEX_VARNAME, int maxLengthStrings = DEFAULT_STRING_LEN, Dictionary <string, Dictionary <string, string> > additionalAttributes = null, Dictionary <string, string> globalAttributes = null) { if (dataType != DataType.FLOAT && dataType != DataType.DOUBLE) { throw new NotSupportedException("Time series storage data type in netCDF must be DOUBLE or FLOAT"); } this.dataType = dataType; this.variableName = variableName; this.itemIndexDimname = itemIndexDimname; this.itemIndexVarname = itemIndexVarname; this.timeLength = timeLength; writeableFile = NetcdfFileWriteable.createNew(filename); // define dimensions timeDim = writeableFile.addDimension(NetCdfHelper.TimeVarName, timeLength); var svarLen = writeableFile.addDimension(NetCdfHelper.seriesIdName, maxLengthStrings); seriesIdDim = writeableFile.addUnlimitedDimension(itemIndexDimname); // define Dimension Variables writeableFile.addVariable(itemIndexDimname, DataType.INT, new Dimension[] { seriesIdDim }); writeableFile.addVariable(NetCdfHelper.seriesIdName, DataType.INT, new Dimension[] { svarLen }); NetCdfHelper.createTimeVariableDaily(writeableFile, timeDim, startDate); writeableFile.addVariableAttribute(NetCdfHelper.seriesIdName, NetCdfHelper.LongNameAttName, NetCdfHelper.seriesIdName); writeableFile.addVariableAttribute(itemIndexDimname, NetCdfHelper.LongNameAttName, itemIndexDimname); writeableFile.addVariableAttribute(itemIndexDimname, NetCdfHelper.UnitsAttName, "count"); //writeableFile.addVariable("CatNo", DataType.INT, new Dimension[] { seriesIdDim }); if (globalAttributes != null) { foreach (var att in globalAttributes) { writeableFile.addGlobalAttribute(att.Key, att.Value); } } // Now onto the non-dimension variables. for (int i = 0; i < variableName.Length; i++) { writeableFile.addVariable(variableName[i], dataType, new Dimension[] { seriesIdDim, timeDim }); writeableFile.addVariableAttribute(variableName[i], NetCdfHelper.LongNameAttName, longName[i]); writeableFile.addVariableAttribute(variableName[i], NetCdfHelper.UnitsAttName, units[i]); //NetCdfHelper.addMissingValueDefinition(variableName[i], writeableFile); writeableFile.addVariableAttribute(variableName[i], NetCdfHelper.MissingValueAttName, new java.lang.Float(missingVal[i])); writeableFile.addVariableAttribute(variableName[i], NetCdfHelper.FillValueAttName, new java.lang.Float(missingVal[i])); } if (additionalAttributes != null) { foreach (var variableAtt in additionalAttributes) { foreach (var att in variableAtt.Value) { writeableFile.addVariableAttribute(variableAtt.Key, att.Key, att.Value); } } } if (globalAttributes != null) { foreach (var att in globalAttributes) { writeableFile.addGlobalAttribute(att.Key, att.Value); } } writeableFile.addVariable(itemIndexVarname, DataType.CHAR, new Dimension[] { seriesIdDim, svarLen }); writeableFile.addVariableAttribute(itemIndexVarname, NetCdfHelper.LongNameAttName, itemIndexVarname); var daysSinceStart = new int[timeLength]; for (int i = 0; i < daysSinceStart.Length; i++) { daysSinceStart[i] = i; } writeableFile.create(); // write out the non-record variables writeableFile.write(NetCdfHelper.TimeVarName, ucar.ma2.Array.factory(daysSinceStart)); writeableFile.write(NetCdfHelper.seriesIdName, ucar.ma2.Array.makeArray(DataType.INT, maxLengthStrings, 1, 1)); }
internal static void addMissingValueDefinition(string variableName, NetcdfFileWriteable writeableFile) { writeableFile.addVariableAttribute(variableName, MissingValueAttName, new java.lang.Float(fillValue)); writeableFile.addVariableAttribute(variableName, FillValueAttName, new java.lang.Float(fillValue)); }