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); }
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); } }