Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }