Beispiel #1
0
        /// <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);
        }
Beispiel #8
0
            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);
            }
        }