protected NcVar(int ncID, int variableID, IList <NcDim> dims) : base(ncID, variableID) { StringBuilder variableName; int attributeCount, dimCount; var dimIDs = new int[100]; NcType variableType; NcInqVar(ncID, variableID, out variableName, out variableType, out dimCount, ref dimIDs, out attributeCount); Varid = variableID; DimIds = new int[dimCount]; Dims = new int[dimCount]; Strides = new int[dimCount]; ComponentName = variableName.ToString(); _ncDims = new NcDimList(dimCount); _ncAtts = new NcAttList(attributeCount); for (var i = 0; i < dimCount; i++) { DimIds[i] = dimIDs[i]; } for (var i = 0; i < dimCount; i++) { _ncDims.Add(dims[DimIds[i]]); Dims[i] = (int)_ncDims[i].Size; } Elements = 1; for (var i = 0; i < dimCount; i++) { Elements *= Dims[i]; } switch (dimCount) { case 1: Strides[0] = 1; break; case 2: Strides[1] = 1; Strides[0] = Dims[1]; break; default: Strides[dimCount - 1] = 1; for (var i = dimCount - 2; i >= 0; i--) { Strides[i] = Dims[i + 1] * Strides[i + 1]; } break; } for (var i = 0; i < attributeCount; i++) { _ncAtts.Add(GetAttribute(ncID, variableID, i)); } }
public NcFile(string filename) { if (filename == null) { throw new ArgumentNullException("filename"); } int i, j; base.filename = filename; NcResult status = NcOpen(base.filename, 0, out Ncid); if (status != NcResult.NC_NOERR) { throw new ApplicationException(String.Format("Error constructing NcFile object for file \"{0}\". NC_open returned {1}", filename, status.ToString())); } status = NcInq(Ncid, out _ndims, out _nvars, out _natts, out _unlimdimid); if (status != NcResult.NC_NOERR) { throw new ApplicationException(String.Format("Error constructing NcFile object for file \"{0}\". NC_inq returned {1}", filename, status.ToString())); } _atts = new NcAttList(_natts); for (j = 0; j < _natts; j++) { _atts.Add(NcComponent.GetAttribute(Ncid, j)); } _dims = new NcDimList(_ndims); // Get the list of dimensions for (i = 0; i < _ndims; i++) { _dims.Add(NcComponent.GetDimension(Ncid, i, (_unlimdimid == i))); } _vars = new NcVarList(_nvars); // Get the list of variables for (i = 0; i < _nvars; i++) { _vars.Add(NcComponent.GetVariable(Ncid, i, _dims)); } }