Index: Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFeaturesFactory.cs =================================================================== diff -u -r38ee40c1f98ff4b1921d4de64fd032c8fbcadf92 -r2aeb951ddc6e2137897569a2de4c55c9fb7e2420 --- Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFeaturesFactory.cs (.../RingtoetsMapDataFeaturesFactory.cs) (revision 38ee40c1f98ff4b1921d4de64fd032c8fbcadf92) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/Views/RingtoetsMapDataFeaturesFactory.cs (.../RingtoetsMapDataFeaturesFactory.cs) (revision 2aeb951ddc6e2137897569a2de4c55c9fb7e2420) @@ -22,10 +22,13 @@ using System.Collections.Generic; using System.Linq; using Core.Common.Base.Geometry; +using Core.Common.Geometry; using Core.Components.Gis.Data; using Core.Components.Gis.Features; using Core.Components.Gis.Geometries; using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.DikeProfiles; +using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.HydraRing.Data; namespace Ringtoets.Common.Forms.Views @@ -60,6 +63,88 @@ : new MapFeature[0]; } + /// + /// Create section features based on the provided . + /// + /// The collection of to create the section features for. + /// An array of features or an empty array when is null or empty. + public static MapFeature[] CreateFailureMechanismSectionFeatures(IEnumerable sections) + { + return sections != null && sections.Any() + ? new[] + { + new MapFeature(sections.Select(section => new MapGeometry(new[] + { + section.Points.Select(p => new Point2D(p.X, p.Y)) + }))) + } + : new MapFeature[0]; + } + + /// + /// Create section start point features based on the provided . + /// + /// The collection of to create the section start point features for. + /// An array of features or an empty array when is null or empty. + public static MapFeature[] CreateFailureMechanismSectionStartPointFeatures(IEnumerable sections) + { + return sections != null && sections.Any() + ? GetMapFeatures(sections.Select(sl => sl.GetStart())) + : new MapFeature[0]; + } + + /// + /// Create section end point features based on the provided . + /// + /// The collection of to create the section end point features for. + /// An array of features or an empty array when is null or empty. + public static MapFeature[] CreateFailureMechanismSectionEndPointFeatures(IEnumerable sections) + { + return sections != null && sections.Any() + ? GetMapFeatures(sections.Select(sl => sl.GetLast())) + : new MapFeature[0]; + } + + /// + /// Create features for the foreshore and dike geometry of the . + /// + /// The profiles to create features for. + /// An array of features or an empty array when is null or empty. + public static MapFeature[] CreateDikeProfilesFeatures(IEnumerable dikeProfiles) + { + return dikeProfiles != null && dikeProfiles.Any() + ? new[] + { + new MapFeature(dikeProfiles.Select(dp => new MapGeometry(GetWorldPoints(dp.ForeshoreProfile)))), + new MapFeature(dikeProfiles.Select(dp => new MapGeometry(GetWorldPoints(dp)))), + } + : new MapFeature[0]; + } + + private static IEnumerable> GetWorldPoints(DikeProfile dikeProfile) + { + return new[] + { + AdvancedMath2D.FromXToXY( + dikeProfile.DikeGeometry.Select(p => p.Point.X).ToArray(), + dikeProfile.WorldReferencePoint, + dikeProfile.X0, + dikeProfile.Orientation) + }; + } + + private static IEnumerable> GetWorldPoints(ForeshoreProfile foreshoreProfile) + { + return new[] + { + AdvancedMath2D.FromXToXY( + foreshoreProfile.Geometry.Select(p => p.X).ToArray(), + foreshoreProfile.WorldReferencePoint, + foreshoreProfile.X0, + foreshoreProfile.Orientation) + }; + } + private static MapFeature[] GetMapFeatures(IEnumerable points) { return new[]