public void LoadMikeSheMethod(string filename) { Model mShe = new Model(filename); if (mShe.Processed != null) { CanReadMikeShe = false; if (Plants != null & wells != null) { SelectByMikeShe(mShe); } Mshe = new MikeSheViewModel(mShe, this); RaisePropertyChanged("Mshe"); } else { throw new Exception("Mike She model must be preprocessed"); } }
public void LoadMikeSheMethod(string filename) { Model mShe = new Model(filename); if (mShe.Processed != null) { CanReadMikeShe = false; if (Plants != null & wells != null) SelectByMikeShe(mShe); Mshe = new MikeSheViewModel(mShe, this); RaisePropertyChanged("Mshe"); } else { throw new Exception("Mike She model must be preprocessed"); } }
/// <summary> /// Write two text-files that can be used by LayerStatistics. First one uses all observations in selected intakes and the second one use the mean /// </summary> /// <param name="FileName"></param> /// <param name="SelectedWells"></param> /// <param name="Start"></param> /// <param name="End"></param> /// <param name="AllObs"></param> public static void WriteToLSInput(string OutputDirectory, IEnumerable<IIntake> SelectedIntakes, MikeSheViewModel mshe, params Func<TimestampValue, bool>[] filters) { StreamWriter SWAll = new StreamWriter(Path.Combine(OutputDirectory, "LsInput_All.txt"), false, Encoding.Default); StreamWriter SWMean = new StreamWriter(Path.Combine(OutputDirectory, "LsInput_Mean.txt"), false, Encoding.Default); SWAll.WriteLine("NOVANAID\tXUTM\tYUTM\tDEPTH\tPEJL\tDATO\tBERELAG"); SWMean.WriteLine("NOVANAID\tXUTM\tYUTM\tDEPTH\tMEANPEJ\tMAXDATO\tBERELAG"); StringBuilder WellsOutSide = new StringBuilder(); foreach (IIntake I in SelectedIntakes) { var SelectedObs = I.HeadObservations.Items.AsEnumerable<TimestampValue>(); //Select the observations foreach (var v in filters) SelectedObs = SelectedObs.Where(v); StringBuilder S = new StringBuilder(); int? Layer = null; if (mshe != null) { Layer = mshe.mshe.GridInfo.GetLayerFromDepth(I.well.X, I.well.Y, PointInScreen(I)); if (Layer < 0) { if (WellsOutSide.Length == 0) { WellsOutSide.Append("NOVANAID\tXUTM\tYUTM\tDEPTH\tBERELAG\n"); } WellsOutSide.Append(I.ToString() + "\t" + I.well.X + "\t" + I.well.Y + "\t" + PointInScreen(I) + "\t" + Layer + "\n"); } } S.Append(I.ToString() + "\t" + I.well.X + "\t" + I.well.Y + "\t" + PointInScreen(I) + "\t"); foreach (var TSE in SelectedObs) { StringBuilder ObsString = new StringBuilder(S.ToString()); ObsString.Append(TSE.Value + "\t" + TSE.Time.ToString("dd-MM-yyyy")); if (Layer.HasValue) ObsString.Append("\t" + Layer); SWAll.WriteLine(ObsString.ToString()); } if (SelectedObs.Count() > 0) { S.Append(SelectedObs.Average(num => num.Value).ToString() + "\t"); S.Append(SelectedObs.Max(num => num.Time).ToString("dd-MM-yyyy")); if (Layer.HasValue) S.Append("\t" + Layer); SWMean.WriteLine(S.ToString()); } } SWAll.Dispose(); SWMean.Dispose(); if (WellsOutSide.Length > 0) { using (StreamWriter SWOutSide = new StreamWriter(Path.Combine(OutputDirectory, "WellsAboveOrBelowGround.txt"), false, Encoding.Default)) { SWOutSide.Write(WellsOutSide); } } }
/// <summary> /// Write two text-files that can be used by LayerStatistics. First one uses all observations in selected intakes and the second one use the mean /// </summary> /// <param name="FileName"></param> /// <param name="SelectedWells"></param> /// <param name="Start"></param> /// <param name="End"></param> /// <param name="AllObs"></param> public static void WriteToLSInput(string OutputDirectory, IEnumerable <IIntake> SelectedIntakes, MikeSheViewModel mshe, params Func <TimestampValue, bool>[] filters) { StreamWriter SWAll = new StreamWriter(Path.Combine(OutputDirectory, "LsInput_All.txt"), false, Encoding.Default); StreamWriter SWMean = new StreamWriter(Path.Combine(OutputDirectory, "LsInput_Mean.txt"), false, Encoding.Default); SWAll.WriteLine("NOVANAID\tXUTM\tYUTM\tDEPTH\tPEJL\tDATO\tBERELAG"); SWMean.WriteLine("NOVANAID\tXUTM\tYUTM\tDEPTH\tMEANPEJ\tMAXDATO\tBERELAG"); StringBuilder WellsOutSide = new StringBuilder(); foreach (IIntake I in SelectedIntakes) { var SelectedObs = I.HeadObservations.Items.AsEnumerable <TimestampValue>(); //Select the observations foreach (var v in filters) { SelectedObs = SelectedObs.Where(v); } StringBuilder S = new StringBuilder(); int?Layer = null; if (mshe != null) { Layer = mshe.mshe.GridInfo.GetLayerFromDepth(I.well.X, I.well.Y, PointInScreen(I)); if (Layer < 0) { if (WellsOutSide.Length == 0) { WellsOutSide.Append("NOVANAID\tXUTM\tYUTM\tDEPTH\tBERELAG\n"); } WellsOutSide.Append(I.ToString() + "\t" + I.well.X + "\t" + I.well.Y + "\t" + PointInScreen(I) + "\t" + Layer + "\n"); } } S.Append(I.ToString() + "\t" + I.well.X + "\t" + I.well.Y + "\t" + PointInScreen(I) + "\t"); foreach (var TSE in SelectedObs) { StringBuilder ObsString = new StringBuilder(S.ToString()); ObsString.Append(TSE.Value + "\t" + TSE.Time.ToString("dd-MM-yyyy")); if (Layer.HasValue) { ObsString.Append("\t" + Layer); } SWAll.WriteLine(ObsString.ToString()); } if (SelectedObs.Count() > 0) { S.Append(SelectedObs.Average(num => num.Value).ToString() + "\t"); S.Append(SelectedObs.Max(num => num.Time).ToString("dd-MM-yyyy")); if (Layer.HasValue) { S.Append("\t" + Layer); } SWMean.WriteLine(S.ToString()); } } SWAll.Dispose(); SWMean.Dispose(); if (WellsOutSide.Length > 0) { using (StreamWriter SWOutSide = new StreamWriter(Path.Combine(OutputDirectory, "WellsAboveOrBelowGround.txt"), false, Encoding.Default)) { SWOutSide.Write(WellsOutSide); } } }