private void btn_open_dcx_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter = "data cube file|*.dcx";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;
                DataCubeStreamReader asx = new DataCubeStreamReader(dlg.FileName);
                asx.LoadDataCube();
                var mat = asx.DataCube;
                mat.Name = Path.GetFileNameWithoutExtension(dlg.FileName);
                Workspace.Add(mat);
                System.Windows.Forms.Cursor.Current = Cursors.Default;
            }
        }
        public override bool Load(int var_index, ICancelProgressHandler progress)
        {
            if (!FileName.Contains(".nhru"))
            {
                FileName += ".nhru";
            }
            _ProgressHandler = progress;
            NumTimeStep      = TimeService.GetIOTimeLength(this.Owner.WorkDirectory);
            string filename = this.FileName;

            if (UseSpecifiedFile)
            {
                filename = SpecifiedFileName;
            }
            int nstep = StepsToLoad;

            if (DataCube == null)
            {
                DataCube      = new DataCube <float>(Variables.Length, nstep, FeatureCount, true);
                DataCube.Name = "sw_out";
            }
            else
            {
                if (DataCube.Size[1] != nstep)
                {
                    DataCube = new DataCube <float>(Variables.Length, nstep, FeatureCount, true);
                }
            }
            DataCube.Variables = this.Variables;
            DataCube.Topology  = (Owner.Grid as RegularGrid).Topology;
            DataCube.DateTimes = this.TimeService.IOTimeline.Take(StepsToLoad).ToArray();
            DataCubeStreamReader stream = new DataCubeStreamReader(filename);

            stream.Scale           = (float)this.ScaleFactor;
            stream.DataCube        = this.DataCube;
            stream.MaxTimeStep     = this.StepsToLoad;
            stream.NumTimeStep     = this.NumTimeStep;
            stream.Loading        += stream_LoadingProgressChanged;
            stream.DataCubeLoaded += stream_DataCubeLoaded;
            stream.LoadFailed     += this.stream_LoadFailed;
            stream.LoadDataCube(var_index);
            return(true);
        }
        public override bool Load(ICancelProgressHandler progress)
        {
            _ProgressHandler = progress;
            string filename = this.FileName;

            if (UseSpecifiedFile)
            {
                filename = SpecifiedFileName;
            }
            NumTimeStep = TimeService.GetIOTimeLength(this.Owner.WorkDirectory);
            DataCubeStreamReader stream = new DataCubeStreamReader(filename);

            stream.Scale           = (float)this.ScaleFactor;
            stream.MaxTimeStep     = MaxTimeStep;
            stream.Loading        += stream_LoadingProgressChanged;
            stream.DataCubeLoaded += stream_DataCubeLoaded;
            stream.LoadFailed     += stream_LoadFailed;
            stream.LoadDataCube();
            return(true);
        }
        public override bool Execute(DotSpatial.Data.ICancelProgressHandler cancelProgressHandler)
        {
            DataCubeStreamReader ds = new DataCubeStreamReader(CloudCoverFileName);

            ds.LoadDataCube();
            var           cloudcover  = ds.DataCube;
            CSVFileStream locationcsv = new CSVFileStream(LocationFileName);
            var           locations   = locationcsv.Load <double>();
            StreamReader  sr_dates    = new StreamReader(DateTimeFileName);
            int           ndays       = cloudcover.Size[1];
            int           nlocation   = cloudcover.Size[2];
            var           dates       = new DateTime[ndays];
            int           progress    = 0;
            int           np          = 1;
            var           swmat       = new DataCube <float>(cloudcover.Size[0], cloudcover.Size[1], cloudcover.Size[2]);

            swmat.Name = OutputName;
            for (int i = 0; i < ndays; i++)
            {
                var line = sr_dates.ReadLine();
                dates[i] = DateTime.Parse(line);
            }
            sr_dates.Close();
            for (int i = 0; i < ndays; i++)
            {
                for (int j = 0; j < nlocation; j++)
                {
                    swmat[0, i, j] = (float)_ShortWaveRadiation.DailyIncomingRadiationIntensity(locations.GetValue(j, 1), locations.GetValue(j, 0), dates[i], cloudcover[0, i, j]);
                }
                progress = i * 100 / ndays;
                if (progress == 5 * np)
                {
                    cancelProgressHandler.Progress("Package_Tool", progress, "Processing step: " + progress + "%");
                    np++;
                }
            }
            Workspace.Add(swmat);
            return(true);
        }
Exemple #5
0
        public override bool Load(ICancelProgressHandler progresshandler)
        {
            _ProgressHandler = progresshandler;
            _NumTimeStep     = TimeService.GetIOTimeLength(ModelService.WorkDirectory);
            string filename = this.PackageInfo.FileName;

            if (UseSpecifiedFile)
            {
                filename = SpecifiedFileName;
            }

            if (File.Exists(filename))
            {
                var network = this._SFRPackage.RiverNetwork;
                RiverNetwork = network;
                int count = 1;
                if (network == null)
                {
                    return(false);
                }
                else
                {
                    ReachIndex.Clear();
                    int reachNum = network.ReachCount;
                    int nstep    = StepsToLoad;

                    if (PackageInfo.Format == FileFormat.Text)
                    {
                        OnLoading(0);
                        FileStream   fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                        StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

                        string line   = "";
                        int    varLen = DefaultAttachedVariables.Length;
                        int    index  = 0;

                        int progress = 0;
                        if (!IsLoadCompleteData)
                        {
                            reachNum = network.RiverCount;
                        }

                        if (IsReadSSData)
                        {
                            SkippedSteps = SkippedSteps - 1;
                        }
                        for (int t = 0; t < SkippedSteps * network.ReachCount + SkippedSteps * 8; t++)
                        {
                            if (!sr.EndOfStream)
                            {
                                line = sr.ReadLine();
                            }
                        }

                        for (int i = 0; i < network.RiverCount; i++)
                        {
                            for (int j = 0; j < network.Rivers[i].Reaches.Count; j++)
                            {
                                ReachIndex.Add(Tuple.Create(i, j, index));
                                index++;
                            }
                        }
                        OnLoading(progress);
                        try
                        {
                            DataCube = new DataCube <float>(varLen, nstep, reachNum)
                            {
                                Name           = "SFR_Output",
                                AllowTableEdit = false,
                                TimeBrowsable  = true
                            };

                            DataCube.DateTimes = new DateTime[nstep];
                        }
                        catch (Exception)
                        {
                            Message = "Out of memory.";
                            return(false);
                        }
                        for (int t = 0; t < nstep; t++)
                        {
                            for (int c = 0; c < 8; c++)
                            {
                                sr.ReadLine();
                            }
                            int rch_index = 0;
                            for (int i = 0; i < network.RiverCount; i++)
                            {
                                if (IsLoadCompleteData)
                                {
                                    for (int j = 0; j < network.Rivers[i].Reaches.Count; j++)
                                    {
                                        line = sr.ReadLine();
                                        if (TypeConverterEx.IsNotNull(line))
                                        {
                                            var temp = TypeConverterEx.SkipSplit <float>(line, 5);
                                            for (int v = 0; v < varLen; v++)
                                            {
                                                DataCube.ILArrays[v].SetValue(temp[v], t, rch_index);
                                                //Values.Value[v][t][rch_index] = temp[v];
                                            }
                                        }
                                        else
                                        {
                                            //Debug.WriteLine(String.Format("step:{0} seg:{1} reach:{2}", t, i + 1, j + 1));
                                            goto finished;
                                        }
                                        rch_index++;
                                    }
                                }
                                else
                                {
                                    for (int j = 0; j < network.Rivers[i].Reaches.Count - 1; j++)
                                    {
                                        line = sr.ReadLine();
                                        if (TypeConverterEx.IsNull(line))
                                        {
                                            goto finished;
                                        }
                                    }
                                    line = sr.ReadLine();
                                    var temp = TypeConverterEx.SkipSplit <float>(line, 5);
                                    for (int v = 0; v < varLen; v++)
                                    {
                                        // Values.Value[v][t][i] = temp[v];
                                        DataCube.ILArrays[v].SetValue(temp[v], t, i);
                                    }
                                }
                            }
                            DataCube.DateTimes[t] = TimeService.Timeline[t];
                            progress = t * 100 / nstep;
                            if (progress > count)
                            {
                                OnLoading(progress);
                                count++;
                            }
                        }
finished:
                        {
                            OnLoading(100);
                        }
                        sr.Close();
                        fs.Close();
                        if (IsLoadCompleteData)
                        {
                            DataCube.Topology = _SFRPackage.ReachTopology;
                        }
                        else
                        {
                            DataCube.Topology = _SFRPackage.SegTopology;
                        }

                        DataCube.Variables     = DefaultAttachedVariables;
                        DataCube.TimeBrowsable = true;
                        Variables = DefaultAttachedVariables;
                        OnLoaded(progresshandler);
                        return(true);
                    }
                    else
                    {
                        if (UseSpecifiedFile)
                        {
                            FileName = SpecifiedFileName;
                        }
                        DataCubeStreamReader stream = new DataCubeStreamReader(FileName);
                        stream.Scale           = (float)this.ScaleFactor;
                        stream.MaxTimeStep     = this.MaxTimeStep;
                        stream.NumTimeStep     = this.NumTimeStep;
                        stream.Loading        += stream_LoadingProgressChanged;
                        stream.DataCubeLoaded += stream_Loaded;
                        stream.LoadDataCube();
                        return(true);
                    }
                }
            }
            else
            {
                return(false);
            }
        }