public void Open() { var xml = _FileName + ".xml"; if (File.Exists(xml)) { _Descriptor = DataCubeDescriptor.Deserialize(xml); } Scan(); _FileStream = new FileStream(_FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); _BinaryReader = new BinaryReader(_FileStream); var varnum = _BinaryReader.ReadInt32(); Variables = new string[varnum]; for (int i = 0; i < varnum; i++) { int varname_len = _BinaryReader.ReadInt32(); Variables[i] = new string(_BinaryReader.ReadChars(varname_len)).Trim(); FeatureCount = _BinaryReader.ReadInt32(); } }
public override void LoadDataCube(int var_index) { var xml = _FileName + ".xml"; if (File.Exists(xml)) { _Descriptor = DataCubeDescriptor.Deserialize(xml); } if (MaxTimeStep <= 0 || NumTimeStep == 0) { Scan(); MaxTimeStep = NumTimeStep; } int feaNum = 0; int varnum = 0; int nstep = StepsToLoad; int progress = 0; FileStream fs = new FileStream(_FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(fs); varnum = br.ReadInt32(); Variables = new string[varnum]; try { for (int i = 0; i < varnum; i++) { int varname_len = br.ReadInt32(); Variables[i] = new string(br.ReadChars(varname_len)).Trim(); feaNum = br.ReadInt32(); } OnLoading(0); if (DataCube == null) { DataCube = new DataCube <float>(Variables.Length, nstep, feaNum, true); DataCube.Variables = Variables; } if (!DataCube.IsAllocated(var_index) || DataCube.Size[1] != nstep) { DataCube.Allocate(var_index); } for (int t = 0; t < nstep; t++) { var buf = new float[feaNum]; for (int s = 0; s < feaNum; s++) { br.ReadBytes(4 * var_index); buf[s] = br.ReadSingle() * Scale; br.ReadBytes(4 * (varnum - var_index - 1)); } DataCube.ILArrays[var_index][t, ":"] = buf; progress = Convert.ToInt32(t * 100 / nstep); OnLoading(progress); } br.Close(); fs.Close(); if (_Descriptor.TimeStamps != null) { DataCube.DateTimes = new DateTime[nstep]; for (int t = 0; t < nstep; t++) { DataCube.DateTimes[t] = _Descriptor.TimeStamps[t]; } } OnDataCubedLoaded(DataCube); } catch (Exception ex) { br.Close(); fs.Close(); OnLoadFailed("Failed to load. Error message: " + ex.Message); } }
public void LoadDataCubeSingle(Dictionary <int, int> mapping, int var_index) { var xml = _FileName + ".xml"; if (File.Exists(xml)) { _Descriptor = DataCubeDescriptor.Deserialize(xml); } if (MaxTimeStep <= 0 || NumTimeStep == 0) { Scan(); MaxTimeStep = NumTimeStep; } int feaNum = 0; int varnum = 0; int nstep = StepsToLoad; int nhru = mapping.Keys.Count; int progress = 0; FileStream fs = new FileStream(_FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(fs); try { varnum = br.ReadInt32(); Variables = new string[varnum]; for (int i = 0; i < varnum; i++) { int varname_len = br.ReadInt32(); Variables[i] = new string(br.ReadChars(varname_len)).Trim(); feaNum = br.ReadInt32(); } OnLoading(0); if (DataCube == null) { DataCube = new DataCube <float>(Variables.Length, nstep, nhru, true); DataCube.Variables = Variables; } if (!DataCube.IsAllocated(var_index) || DataCube.Size[1] != nstep) { DataCube.Allocate(var_index); } var vv = new float[feaNum]; for (int t = 0; t < nstep; t++) { for (int s = 0; s < feaNum; s++) { vv[s] = br.ReadSingle() * Scale; } for (int i = 0; i < nhru; i++) { DataCube[var_index, t, i] = vv[mapping[i + 1]]; } progress = Convert.ToInt32(t * 100 / nstep); OnLoading(progress); } br.Close(); fs.Close(); if (_Descriptor.TimeStamps != null) { DataCube.DateTimes = new DateTime[nstep]; for (int t = 0; t < nstep; t++) { DataCube.DateTimes[t] = _Descriptor.TimeStamps[t]; } } OnDataCubedLoaded(DataCube); } catch (Exception ex) { br.Close(); fs.Close(); OnLoadFailed("Failed to load. Error message: " + ex.Message); } }
public override void LoadDataCube() { var xml = _FileName + ".xml"; if (File.Exists(xml)) { _Descriptor = DataCubeDescriptor.Deserialize(xml); } if (MaxTimeStep <= 0 || NumTimeStep == 0) { Scan(); MaxTimeStep = NumTimeStep; } int feaNum = 0; int varnum = 0; int nstep = StepsToLoad; FileStream fs = new FileStream(_FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(fs); try { varnum = br.ReadInt32(); Variables = new string[varnum]; for (int i = 0; i < varnum; i++) { int varname_len = br.ReadInt32(); Variables[i] = new string(br.ReadChars(varname_len)).Trim(); feaNum = br.ReadInt32(); } if (DataCube == null) { DataCube = new DataCube <float>(varnum, nstep, FeatureCount); } OnLoading(0); for (int t = 0; t < nstep; t++) { for (int s = 0; s < feaNum; s++) { for (int v = 0; v < varnum; v++) { DataCube[v, t, s] = br.ReadSingle() * Scale; } } int progress = Convert.ToInt32(t * 100 / NumTimeStep); OnLoading(progress); } if (_Descriptor.TimeStamps != null) { DataCube.DateTimes = new DateTime[nstep]; for (int t = 0; t < nstep; t++) { DataCube.DateTimes[t] = _Descriptor.TimeStamps[t]; } } br.Close(); fs.Close(); OnDataCubedLoaded(DataCube); } catch (Exception ex) { br.Close(); fs.Close(); OnLoadFailed("Failed to load. Error message: " + ex.Message); } }