Index: src/Deltares.DSoilModel.Data.Tests/DSoilModelProjectTest.cs =================================================================== diff -u -r499 -r536 --- src/Deltares.DSoilModel.Data.Tests/DSoilModelProjectTest.cs (.../DSoilModelProjectTest.cs) (revision 499) +++ src/Deltares.DSoilModel.Data.Tests/DSoilModelProjectTest.cs (.../DSoilModelProjectTest.cs) (revision 536) @@ -43,10 +43,11 @@ GeographicHelper.Instance = geographicHelper as GeographicHelper; } - [TestCase("Boring_RDNAP.gef", true)] - [TestCase("Boring_UserXYID.gef", false)] - [TestCase("Boring_UserZID.gef", false)] - public void TestBoringImportRequiresRdNap(string fileName, bool result) + [TestCase("Boring_RDNAP.gef", true, false)] + [TestCase("Boring_RDNAPParis.gef", true, true)] + [TestCase("Boring_UserXYID.gef", false, false)] + [TestCase("Boring_UserZID.gef", false, false)] + public void TestBoringImportRequiresRdNap(string fileName, bool result, bool invalid) { var filePath = Path.Combine(GetTestFilesPath(), "GEF", fileName); Assert.IsTrue(File.Exists(filePath)); @@ -58,12 +59,22 @@ Assert.AreEqual(result, project.Borings.Count > 0); Assert.AreNotEqual(result, LogManager.Messages.Any(m => m.MessageType == LogMessageType.Error)); + + // invalid X,Y coordinates, gives warning and X,Y of imported boring set to 0,0 + if (invalid) + { + Assert.AreEqual(result, LogManager.Messages.Any(m => m.MessageType == LogMessageType.Warning)); + Assert.AreEqual(1, project.Borings.Count); + Assert.AreEqual(0, project.Borings[0].X); + Assert.AreEqual(0, project.Borings[0].X); + } } - [TestCase("CPT_RDNAP.gef", true)] - [TestCase("CPT_UserXYID.gef", false), Category("Work_In_Progress")] // TODO: fix issue DSB-625 - [TestCase("CPT_UserZID.gef", false)] - public void TestCptImportRequiresRdNap(string fileName, bool result) + [TestCase("CPT_RDNAP.gef", true, false)] + [TestCase("CPT_RDNAPParis.gef", true, true)] + [TestCase("CPT_UserXYID.gef", false, false), Category("Work_In_Progress")] // TODO: fix issue DSB-625 + [TestCase("CPT_UserZID.gef", false, false)] + public void TestCptImportRequiresRdNap(string fileName, bool result, bool invalid) { var filePath = Path.Combine(GetTestFilesPath(), "GEF", fileName); Assert.IsTrue(File.Exists(filePath)); @@ -75,6 +86,15 @@ Assert.AreEqual(result, project.CPTs.Count > 0); Assert.AreNotEqual(result, LogManager.Messages.Any(m => m.MessageType == LogMessageType.Error)); + + // invalid X,Y coordinates, gives warning and X,Y of imported CPT set to 0,0 + if (invalid) + { + Assert.AreEqual(result, LogManager.Messages.Any(m => m.MessageType == LogMessageType.Warning)); + Assert.AreEqual(1, project.CPTs.Count); + Assert.AreEqual(0, project.CPTs[0].X); + Assert.AreEqual(0, project.CPTs[0].X); + } } [Test] @@ -847,3 +867,4 @@ } } } + Index: src/Deltares.DSoilModel.Data/DSoilModelProject.cs =================================================================== diff -u -r499 -r536 --- src/Deltares.DSoilModel.Data/DSoilModelProject.cs (.../DSoilModelProject.cs) (revision 499) +++ src/Deltares.DSoilModel.Data/DSoilModelProject.cs (.../DSoilModelProject.cs) (revision 536) @@ -513,6 +513,15 @@ LogManager.Add(new LogMessage(LogMessageType.Error, null, msg)); return false; } + + if (!IsValidRdCoordinate(conePenetrationTestData.X, conePenetrationTestData.Y)) + { + var msg = String.Format(LocalizationManager.GetTranslatedText(this, "gefInvalidRdCoordinates"), fileName, conePenetrationTestData.X, conePenetrationTestData.Y); + LogManager.Add(new LogMessage(LogMessageType.Warning, null, msg)); + conePenetrationTestData.X = 0; + conePenetrationTestData.Y = 0; + } + UniqueNameProvider.ProvideUniqueName(cpts, conePenetrationTestData); cpts.Add(conePenetrationTestData); return true; @@ -530,7 +539,6 @@ if (fileName.EndsWith(".gef")) { var gefBoringImporter = new GefBoringFileImporter(); - //gefBoringImporter.Soils = soils; gefBoringImporter.FillFromGefFile(fileName, soils); boring = gefBoringImporter.Boring; } @@ -543,6 +551,14 @@ return false; } + if (!IsValidRdCoordinate(boring.X, boring.Y)) + { + var msg = String.Format(LocalizationManager.GetTranslatedText(this, "gefInvalidRdCoordinates"), fileName, boring.X, boring.Y); + LogManager.Add(new LogMessage(LogMessageType.Warning, null, msg)); + boring.X = 0; + boring.Y = 0; + } + // Ensure unique name UniqueNameProvider.ProvideUniqueName(borings, boring); borings.Add(boring); @@ -1303,5 +1319,27 @@ soil.UsePop = false; } } + + /// + /// Determines whether provided x,y coordinates are valid RD coordinates (Rijks Driehoekstelsel). + /// + /// The x coordinate. + /// The y coordinate. + /// + /// true if [is valid rd coordinate] [the specified x]; otherwise, false. + /// + private bool IsValidRdCoordinate(double x, double y) + { + // valid coordinate range taken from wikipedia: https://nl.wikipedia.org/wiki/Rijksdriehoeksco%C3%B6rdinaten#Geldigheidsgebied + const double xRdMin = -7000; + const double xRdMax = +300; + const double yRdMin = 289000; + const double yRdMax = 629000; + + return (x >= xRdMin && x <= xRdMax && y >= yRdMin && y <= yRdMax); + } + + + } } \ No newline at end of file Index: src/Deltares.DSoilModel.Data/Translations.xml =================================================================== diff -u -r499 -r536 --- src/Deltares.DSoilModel.Data/Translations.xml (.../Translations.xml) (revision 499) +++ src/Deltares.DSoilModel.Data/Translations.xml (.../Translations.xml) (revision 536) @@ -28,6 +28,7 @@ +