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 @@
+