/// <summary> /// Creates a new <see cref="ReferenceLineMeta"/> from the <paramref name="lineData"/>. /// </summary> /// <param name="lineData">The <see cref="MapFeature"/> to create a <see cref="ReferenceLineMeta"/> from.</param> /// <returns>The newly created <see cref="ReferenceLineMeta"/>.</returns> private static ReferenceLineMeta CreateReferenceLineMeta(MapLineData lineData) { MapFeature feature = lineData.Features.First(); string assessmentSectionId = GetAssessmentSectionId(feature); int? signalFloodingProbability = ParseNormValue(feature.MetaData[signalFloodingProbabilityValueAttributeKey]); int? maximumAllowableFloodingProbability = ParseNormValue(feature.MetaData[maximumAllowableFloodingProbabilityValueAttributeKey]); IEnumerable <Point2D> geometryPoints = GetSectionGeometry(feature); var referenceLineMeta = new ReferenceLineMeta { AssessmentSectionId = assessmentSectionId }; if (maximumAllowableFloodingProbability != null) { referenceLineMeta.MaximumAllowableFloodingProbability = maximumAllowableFloodingProbability.Value; } if (signalFloodingProbability != null) { referenceLineMeta.SignalFloodingProbability = signalFloodingProbability.Value; } referenceLineMeta.ReferenceLine.SetGeometry(geometryPoints); return(referenceLineMeta); }
public void GetReferenceLineMetas_ValidDirectoryWithOneShapeFile_ReturnsReadReadGetReferenceLineMetas() { // Setup string pathValidFolder = Path.Combine(testDataPath, "ValidShapeFile"); var importer = new ReferenceLineMetaImporter(pathValidFolder); // Call ReferenceLineMeta[] referenceLineMetas = importer.GetReferenceLineMetas().ToArray(); // Assert Assert.AreEqual(3, referenceLineMetas.Length); var expectedReferenceLineMeta1 = new ReferenceLineMeta { AssessmentSectionId = "1-2", MaximumAllowableFloodingProbability = 1000, SignalFloodingProbability = 3000 }; expectedReferenceLineMeta1.ReferenceLine.SetGeometry(new[] { new Point2D(160679.9250, 475072.583), new Point2D(160892.0751, 474315.4917) }); AssertReferenceLineMetas(expectedReferenceLineMeta1, referenceLineMetas[0]); var expectedReferenceLineMeta2 = new ReferenceLineMeta { AssessmentSectionId = "2-1", MaximumAllowableFloodingProbability = 100, SignalFloodingProbability = 300 }; expectedReferenceLineMeta2.ReferenceLine.SetGeometry(new[] { new Point2D(155556.9191, 464341.1281), new Point2D(155521.4761, 464360.7401) }); AssertReferenceLineMetas(expectedReferenceLineMeta2, referenceLineMetas[1]); var expectedReferenceLineMeta3 = new ReferenceLineMeta { AssessmentSectionId = "3-3", MaximumAllowableFloodingProbability = 100, SignalFloodingProbability = 300 }; expectedReferenceLineMeta3.ReferenceLine.SetGeometry(new[] { new Point2D(147367.321899, 476902.9157103), new Point2D(147410.0515, 476938.9447) }); AssertReferenceLineMetas(expectedReferenceLineMeta3, referenceLineMetas[2]); }
private static void AssertReferenceLineMetas(ReferenceLineMeta expectedReferenceLineMeta, ReferenceLineMeta actualReferenceLineMeta) { Assert.AreEqual(expectedReferenceLineMeta.AssessmentSectionId, actualReferenceLineMeta.AssessmentSectionId); Assert.AreEqual(expectedReferenceLineMeta.SignalFloodingProbability, actualReferenceLineMeta.SignalFloodingProbability); Assert.AreEqual(expectedReferenceLineMeta.MaximumAllowableFloodingProbability, actualReferenceLineMeta.MaximumAllowableFloodingProbability); Point2D[] expectedPoints = expectedReferenceLineMeta.ReferenceLine.Points.ToArray(); Point2D[] actualPoints = actualReferenceLineMeta.ReferenceLine.Points.ToArray(); CollectionAssert.AreEqual(expectedPoints, actualPoints, new Point2DComparerWithTolerance(1e-6), $"Unexpected geometry found in ReferenceLineMeta with id '{actualReferenceLineMeta.AssessmentSectionId}'"); }
public void Constructor_ExpectedValues() { // Call var referenceLineMeta = new ReferenceLineMeta(); // Assert Assert.IsNotNull(referenceLineMeta.ReferenceLine); CollectionAssert.IsEmpty(referenceLineMeta.ReferenceLine.Points); Assert.IsNull(referenceLineMeta.AssessmentSectionId); Assert.IsNull(referenceLineMeta.SignalFloodingProbability); Assert.AreEqual(0, referenceLineMeta.MaximumAllowableFloodingProbability); }
public void ReadReferenceLinesMeta_ValidFilePath_ReturnsElement() { // Setup string validFilePath = Path.Combine(testDataPath, "NBPW.shp"); // Call IEnumerable <ReferenceLineMeta> referenceLineMetas = ReferenceLinesMetaReader.ReadReferenceLinesMetas(validFilePath); // Assert Assert.AreEqual(3, referenceLineMetas.Count()); var expectedReferenceLineMeta1 = new ReferenceLineMeta { AssessmentSectionId = "1-1", MaximumAllowableFloodingProbability = 1000, SignalFloodingProbability = 3000 }; expectedReferenceLineMeta1.ReferenceLine.SetGeometry(new[] { new Point2D(160679.9250, 475072.583), new Point2D(160892.0751, 474315.4917) }); AssertReferenceLineMetas(expectedReferenceLineMeta1, referenceLineMetas.ElementAt(0)); var expectedReferenceLineMeta2 = new ReferenceLineMeta { AssessmentSectionId = "2-2", MaximumAllowableFloodingProbability = 100, SignalFloodingProbability = 300 }; expectedReferenceLineMeta2.ReferenceLine.SetGeometry(new[] { new Point2D(155556.9191, 464341.1281), new Point2D(155521.4761, 464360.7401) }); AssertReferenceLineMetas(expectedReferenceLineMeta2, referenceLineMetas.ElementAt(1)); var expectedReferenceLineMeta3 = new ReferenceLineMeta { AssessmentSectionId = "3-3", MaximumAllowableFloodingProbability = 100, SignalFloodingProbability = 300 }; expectedReferenceLineMeta3.ReferenceLine.SetGeometry(new[] { new Point2D(147367.321899, 476902.9157103), new Point2D(147410.0515, 476938.9447) }); AssertReferenceLineMetas(expectedReferenceLineMeta3, referenceLineMetas.ElementAt(2)); }
public void ReadReferenceLinesMeta_EmptyTrackId_ReturnsElement() { // Setup string validFilePath = Path.Combine(testDataPath, "NBPW_EmptyTrackId.shp"); // Call IEnumerable <ReferenceLineMeta> referenceLineMetas = ReferenceLinesMetaReader.ReadReferenceLinesMetas(validFilePath); // Assert ReferenceLineMeta referenceLineMeta = referenceLineMetas.Single(); Assert.IsEmpty(referenceLineMeta.AssessmentSectionId); }
public void ReadReferenceLinesMeta_EmptyNormOgAndNormSw_ReturnsElement() { // Setup string validFilePath = Path.Combine(testDataPath, "NBPW_EmptyNormOGAndNormSW.shp"); // Call IEnumerable <ReferenceLineMeta> referenceLineMetas = ReferenceLinesMetaReader.ReadReferenceLinesMetas(validFilePath); // Assert ReferenceLineMeta referenceLineMeta = referenceLineMetas.Single(); Assert.AreEqual("46-1", referenceLineMeta.AssessmentSectionId); Assert.IsNull(referenceLineMeta.SignalFloodingProbability); Assert.AreEqual(0, referenceLineMeta.MaximumAllowableFloodingProbability); }
public ReferenceLineMetaSelectionRow(ReferenceLineMeta referenceLineMeta) { AssessmentSectionId = referenceLineMeta.AssessmentSectionId; ReferenceLineMeta = referenceLineMeta; SignalFloodingProbability = TryGetProbability(referenceLineMeta.SignalFloodingProbability); if (SignalFloodingProbability != string.Empty) { SignalFloodingProbabilityReturnPeriod = referenceLineMeta.SignalFloodingProbability; } MaximumAllowableFloodingProbability = TryGetProbability(referenceLineMeta.MaximumAllowableFloodingProbability); if (MaximumAllowableFloodingProbability != string.Empty) { MaximumAllowableFloodingProbabilityReturnPeriod = referenceLineMeta.MaximumAllowableFloodingProbability; } }
private AssessmentSection GetAssessmentSectionFromDialog() { using (ReferenceLineMetaSelectionDialog dialog = CreateReferenceLineMetaSelectionDialogWithItems()) { if (dialog.ShowDialog() != DialogResult.OK) { return(null); } ReferenceLineMeta selectedItem = dialog.SelectedReferenceLineMeta; return(selectedItem == null ? null : TryCreateAssessmentSection(selectedItem, dialog.SelectedMaximumAllowableFloodingProbability, dialog.SelectedSignalFloodingProbability, dialog.SelectedNormativeProbabilityType)); } }
/// <summary> /// Creates a new instance of <see cref="AssessmentSection"/>. /// </summary> /// <param name="selectedItem">The selected <see cref="ReferenceLineMeta"/>.</param> /// <param name="maximumAllowableFloodingProbability">The maximum allowable flooding probability of the assessment section.</param> /// <param name="signalFloodingProbability">The signal flooding probability of the assessment section.</param> /// <param name="normativeProbabilityType">The normative probability type of the assessment section.</param> /// <returns>The newly created <see cref="AssessmentSection"/>.</returns> /// <exception cref="ArgumentOutOfRangeException">Thrown when: /// <list type="bullet"> /// <item><paramref name="maximumAllowableFloodingProbability"/> is not in the interval [0.000001, 0.1] or is <see cref="double.NaN"/>;</item> /// <item><paramref name="signalFloodingProbability"/> is not in the interval [0.000001, 0.1] or is <see cref="double.NaN"/>;</item> /// <item>The <paramref name="signalFloodingProbability"/> is larger than <paramref name="maximumAllowableFloodingProbability"/>.</item> /// </list> /// </exception> private AssessmentSection CreateAssessmentSection(ReferenceLineMeta selectedItem, double maximumAllowableFloodingProbability, double signalFloodingProbability, NormativeProbabilityType normativeProbabilityType) { AssessmentSection assessmentSection; AssessmentSectionSettings settingOfSelectedAssessmentSection = settings.FirstOrDefault(s => s.AssessmentSectionId == selectedItem.AssessmentSectionId); if (settingOfSelectedAssessmentSection == null) { log.Warn(Resources.AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_No_settings_found_for_AssessmentSection); assessmentSection = CreateDikeAssessmentSection(maximumAllowableFloodingProbability, signalFloodingProbability); } else { assessmentSection = settingOfSelectedAssessmentSection.IsDune ? CreateDuneAssessmentSection(maximumAllowableFloodingProbability, signalFloodingProbability, settingOfSelectedAssessmentSection.N) : CreateDikeAssessmentSection(maximumAllowableFloodingProbability, signalFloodingProbability, settingOfSelectedAssessmentSection.N); } assessmentSection.Name = string.Format(IntegrationResources.AssessmentSection_Id_0, selectedItem.AssessmentSectionId); assessmentSection.Id = selectedItem.AssessmentSectionId; if (!selectedItem.ReferenceLine.Points.Any()) { log.Warn(Resources.AssessmentSectionFromFileCommandHandler_CreateAssessmentSection_Importing_ReferenceLineFailed); } else { assessmentSection.ReferenceLine.SetGeometry(selectedItem.ReferenceLine.Points); } assessmentSection.FailureMechanismContribution.NormativeProbabilityType = normativeProbabilityType; return(assessmentSection); }
/// <summary> /// Tries to create the <see cref="AssessmentSection"/>. /// </summary> /// <param name="selectedItem">The selected <see cref="ReferenceLineMeta"/>.</param> /// <param name="maximumAllowableFloodingProbability">The maximum allowable flooding probability of the assessment section.</param> /// <param name="signalFloodingProbability">The signal flooding probability of the assessment section.</param> /// <param name="normativeProbabilityType">The normative probability type of the assessment section.</param> /// <returns>The created <see cref="AssessmentSection"/>.</returns> /// <exception cref="CriticalFileValidationException">Thrown when: /// <list type="bullet"> /// <item><paramref name="maximumAllowableFloodingProbability"/> is not in the interval [0.000001, 0.1] or is <see cref="double.NaN"/>;</item> /// <item><paramref name="signalFloodingProbability"/> is not in the interval [0.000001, 0.1] or is <see cref="double.NaN"/>;</item> /// <item>The <paramref name="signalFloodingProbability"/> is larger than <paramref name="maximumAllowableFloodingProbability"/>.</item> /// </list> /// </exception> private AssessmentSection TryCreateAssessmentSection(ReferenceLineMeta selectedItem, double maximumAllowableFloodingProbability, double signalFloodingProbability, NormativeProbabilityType normativeProbabilityType) { try { return(CreateAssessmentSection(selectedItem, maximumAllowableFloodingProbability, signalFloodingProbability, normativeProbabilityType)); } catch (ArgumentOutOfRangeException exception) { var normValidityRange = new Range <double>(1.0 / 1000000, 1.0 / 10); string message = string.Format(Resources.AssessmentSectionFromFileCommandHandler_Unable_to_create_assessmentSection_with_MaximumAllowableFloodingProbability_0_and_SignalFloodingProbability_1_Probabilities_should_be_in_Range_2_, ProbabilityFormattingHelper.Format(maximumAllowableFloodingProbability), ProbabilityFormattingHelper.Format(signalFloodingProbability), normValidityRange.ToString(FormattableConstants.ShowAtLeastOneDecimal, CultureInfo.CurrentCulture)); throw new CriticalFileValidationException(message, exception); } }