/// <summary> /// /// </summary> /// <param name="changeStats"></param> /// <returns></returns> /// <remarks>This method is needed by budget segregation as well</remarks> protected void GenerateSummaryXML(DoDStats changeStats, FileInfo outputPath) { string templatePath = Path.Combine(Project.ProjectManager.ExcelTemplatesFolder.FullName, "GCDSummary.xml"); System.Text.StringBuilder outputText = default(System.Text.StringBuilder); try { using (System.IO.StreamReader objReader = new System.IO.StreamReader(templatePath)) { outputText = new System.Text.StringBuilder(objReader.ReadToEnd()); } } catch (Exception ex) { Exception ex2 = new Exception("Error reading the GCD summary XML template file", ex); ex.Data["Excel Template Path"] = templatePath; throw ex2; } UnitsNet.Area ca = Project.ProjectManager.Project.CellArea; UnitsNet.Units.LengthUnit lu = Project.ProjectManager.Project.Units.VertUnit; UnitsNet.Units.AreaUnit au = Project.ProjectManager.Project.Units.ArUnit; UnitsNet.Units.VolumeUnit vu = Project.ProjectManager.Project.Units.VolUnit; string abbr = UnitsNet.Length.GetAbbreviation(lu); outputText.Replace("[LinearUnits]", abbr); outputText.Replace("[TotalAreaOfErosionRaw]", changeStats.ErosionRaw.GetArea(ca).As(au).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalAreaOfErosionThresholded]", changeStats.ErosionThr.GetArea(ca).As(au).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalAreaOfDepositionRaw]", changeStats.DepositionRaw.GetArea(ca).As(au).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalAreaOfDepositionThresholded]", changeStats.DepositionThr.GetArea(ca).As(au).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalVolumeOfErosionRaw]", changeStats.ErosionRaw.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalVolumeOfErosionThresholded]", changeStats.ErosionThr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[ErrorVolumeOfErosion]", changeStats.ErosionErr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalVolumeOfDepositionRaw]", changeStats.DepositionRaw.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[TotalVolumeOfDepositionThresholded]", changeStats.DepositionThr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu).ToString(CultureInfo.InvariantCulture)); outputText.Replace("[ErrorVolumeOfDeposition]", changeStats.DepositionErr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu).ToString(CultureInfo.InvariantCulture)); try { using (StreamWriter objWriter = new StreamWriter(outputPath.FullName)) { objWriter.Write(outputText); } } catch (Exception ex) { Exception ex2 = new Exception("Error writing the GCD summary XML template file", ex); ex.Data["Excel Template Path"] = templatePath; throw ex2; } }
public static void SelectUnit(System.Windows.Forms.ComboBox cbo, UnitsNet.Units.AreaUnit unit) { foreach (FormattedUnit <UnitsNet.Units.AreaUnit> cboUnit in cbo.Items) { if (cboUnit.Unit == unit) { cbo.SelectedItem = cboUnit; return; } } }
public static GCDProject Load(FileInfo projectFile) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(projectFile.FullName); XmlNode nodProject = xmlDoc.SelectSingleNode("Project"); string name = nodProject.SelectSingleNode("Name").InnerText; string desc = nodProject.SelectSingleNode("Description").InnerText; string gcdv = nodProject.SelectSingleNode("GCDVersion").InnerText; DateTime dtCreated = DateTime.Parse(nodProject.SelectSingleNode("DateTimeCreated").InnerText); UnitsNet.Units.LengthUnit horiz = (UnitsNet.Units.LengthUnit)Enum.Parse(typeof(UnitsNet.Units.LengthUnit), nodProject.SelectSingleNode("Units/Horizontal").InnerText); UnitsNet.Units.LengthUnit vert = (UnitsNet.Units.LengthUnit)Enum.Parse(typeof(UnitsNet.Units.LengthUnit), nodProject.SelectSingleNode("Units/Vertical").InnerText); UnitsNet.Units.AreaUnit area = (UnitsNet.Units.AreaUnit)Enum.Parse(typeof(UnitsNet.Units.AreaUnit), nodProject.SelectSingleNode("Units/Area").InnerText); UnitsNet.Units.VolumeUnit vol = (UnitsNet.Units.VolumeUnit)Enum.Parse(typeof(UnitsNet.Units.VolumeUnit), nodProject.SelectSingleNode("Units/Volume").InnerText); GCDConsoleLib.GCD.UnitGroup units = new GCDConsoleLib.GCD.UnitGroup(vol, area, vert, horiz); UnitsNet.Area cellArea = UnitsNet.Area.From(0, area); XmlNode nodCellArea = nodProject.SelectSingleNode("CellArea"); if (!string.IsNullOrEmpty(nodCellArea.InnerText)) { cellArea = UnitsNet.Area.From(double.Parse(nodCellArea.InnerText, CultureInfo.InvariantCulture), area); } ProjectManager.Project = new GCDProject(name, desc, projectFile, dtCreated, gcdv, cellArea, units); foreach (XmlNode nodOnline in nodProject.SelectNodes("Online/*")) { ProjectManager.Project.OnlineParams[nodOnline.Name] = nodOnline.InnerText; } // Load masks before DEMs. DEMs will load error surfaces that refer to masks foreach (XmlNode nodMask in nodProject.SelectNodes("Masks/Mask")) { if (nodMask.SelectSingleNode("Field") is XmlNode) { // Regular or directional mask if (nodMask.SelectSingleNode("Items") is XmlNode) { ProjectManager.Project.Masks.Add(new Masks.RegularMask(nodMask)); } else { ProjectManager.Project.Masks.Add(new Project.Masks.DirectionalMask(nodMask)); } } else { // Area of interest ProjectManager.Project.Masks.Add(new Project.Masks.AOIMask(nodMask)); } } // Load profile routes before DEMs, Ref Surfs and DoDs that might refer to // routes in their linear extractions foreach (XmlNode nodRoute in nodProject.SelectNodes("ProfileRoutes/ProfileRoute")) { ProjectManager.Project.ProfileRoutes.Add(new Project.ProfileRoutes.ProfileRoute(nodRoute)); } foreach (XmlNode nodDEM in nodProject.SelectNodes("DEMSurveys/DEM")) { DEMSurvey dem = new DEMSurvey(nodDEM); ProjectManager.Project.DEMSurveys.Add(dem); } foreach (XmlNode nodRefSurf in nodProject.SelectNodes("ReferenceSurfaces/ReferenceSurface")) { Surface surf = new Surface(nodRefSurf, true, true); ProjectManager.Project.ReferenceSurfaces.Add(surf); } foreach (XmlNode nodDoD in nodProject.SelectNodes("DoDs/DoD")) { DoDBase dod = null; if (nodDoD.SelectSingleNode("Threshold") is XmlNode) { dod = new DoDMinLoD(nodDoD); } else if (nodDoD.SelectSingleNode("ConfidenceLevel") is XmlNode) { dod = new DoDProbabilistic(nodDoD); } else { dod = new DoDPropagated(nodDoD); } ProjectManager.Project.DoDs.Add(dod); } foreach (XmlNode nodInter in nodProject.SelectNodes("InterComparisons/InterComparison")) { InterComparison inter = new InterComparison(nodInter, ProjectManager.Project.DoDs); ProjectManager.Project.InterComparisons.Add(inter); } foreach (XmlNode nodItem in nodProject.SelectNodes("MetaData/Item")) { ProjectManager.Project.MetaData[nodItem.SelectSingleNode("Key").InnerText] = nodItem.SelectSingleNode("Value").InnerText; } return(ProjectManager.Project); }
private static UnitsNet.Area DeserializeArea(XmlNode nodParent, string nodName, UnitsNet.Units.AreaUnit unit) { double value = double.Parse(nodParent.SelectSingleNode(nodName).InnerText); return(UnitsNet.Area.From(value, unit)); }
protected void GenerateChangeBarGraphicFiles(DirectoryInfo analysisFolder, DoDStats stats, int fChartWidth, int fChartHeight, string sFilePrefix = "") { ElevationChangeBarViewer barViewer = new ElevationChangeBarViewer(); if (!string.IsNullOrEmpty(sFilePrefix)) { if (!sFilePrefix.EndsWith("_")) { sFilePrefix += "_"; } } DirectoryInfo figuresFolder = Project.DoDBase.FiguresFolderPath(analysisFolder); figuresFolder.Create(); UnitsNet.Area ca = GCDCore.Project.ProjectManager.Project.CellArea; UnitsNet.Units.LengthUnit lu = Project.ProjectManager.Project.Units.VertUnit; UnitsNet.Units.AreaUnit au = Project.ProjectManager.Project.Units.ArUnit; UnitsNet.Units.VolumeUnit vu = Project.ProjectManager.Project.Units.VolUnit; string abbr = UnitsNet.Length.GetAbbreviation(lu); barViewer.Refresh( stats.ErosionThr.GetArea(ca).As(au), stats.DepositionThr.GetArea(ca).As(au), abbr, ElevationChangeBarViewer.BarTypes.Area, true); barViewer.Save(new FileInfo(Path.Combine(figuresFolder.FullName, sFilePrefix + "ChangeBars_AreaAbsolute.png")), fChartWidth, fChartHeight); barViewer.Refresh( stats.ErosionThr.GetArea(ca).As(au), stats.DepositionThr.GetArea(ca).As(au), abbr, ElevationChangeBarViewer.BarTypes.Area, false); barViewer.Save(new FileInfo(Path.Combine(figuresFolder.FullName, sFilePrefix + "ChangeBars_AreaRelative.png")), fChartWidth, fChartHeight); barViewer.Refresh( stats.ErosionThr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.DepositionThr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.NetVolumeOfDifference_Thresholded.As(vu), stats.ErosionErr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.DepositionErr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.NetVolumeOfDifference_Error.As(vu), abbr, ElevationChangeBarViewer.BarTypes.Volume, true); barViewer.Save(new FileInfo(Path.Combine(figuresFolder.FullName, sFilePrefix + "ChangeBars_VolumeAbsolute.png")), fChartWidth, fChartHeight); barViewer.Refresh( stats.ErosionThr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.DepositionThr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.NetVolumeOfDifference_Thresholded.As(vu), stats.ErosionErr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.DepositionErr.GetVolume(ca, Project.ProjectManager.Project.Units).As(vu), stats.NetVolumeOfDifference_Error.As(vu), abbr, ElevationChangeBarViewer.BarTypes.Volume, false); barViewer.Save(new FileInfo(Path.Combine(figuresFolder.FullName, sFilePrefix + "ChangeBars_VolumeRelative.png")), fChartWidth, fChartHeight); barViewer.Refresh( stats.AverageDepthErosion_Thresholded.As(lu), stats.AverageDepthDeposition_Thresholded.As(lu), stats.AverageNetThicknessOfDifferenceADC_Thresholded.As(lu), stats.AverageDepthErosion_Error.As(lu), stats.AverageDepthDeposition_Error.As(lu), stats.AverageThicknessOfDifferenceADC_Error.As(lu), abbr, ElevationChangeBarViewer.BarTypes.Vertical, true); barViewer.Save(new FileInfo(Path.Combine(figuresFolder.FullName, sFilePrefix + "ChangeBars_DepthAbsolute.png")), fChartWidth, fChartHeight); barViewer.Refresh( stats.AverageDepthErosion_Thresholded.As(lu), stats.AverageDepthDeposition_Thresholded.As(lu), stats.AverageNetThicknessOfDifferenceADC_Thresholded.As(lu), stats.AverageDepthErosion_Error.As(lu), stats.AverageDepthDeposition_Error.As(lu), stats.AverageThicknessOfDifferenceADC_Error.As(lu), abbr, ElevationChangeBarViewer.BarTypes.Vertical, false); barViewer.Save(new FileInfo(Path.Combine(figuresFolder.FullName, sFilePrefix + "ChangeBars_DepthRelative.png")), fChartWidth, fChartHeight); }