// Copyright (C) Stichting Deltares 2020. All rights reserved. // // This file is part of the LayerOnSlopeTool // // The LayerOnSlopeTool is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using System.IO; using Deltares.LayerOnSlopeTool.Data; using Deltares.LayerOnSlopeTool.Importer; using NUnit.Framework; namespace Deltares.LayerOnSlopeTool.ImporterTests { [TestFixture] public class CsvImportersTests { private string importFolder; /// /// Setup for whole testfixture /// [TestFixtureSetUp] public void FixtureSetup() { importFolder = Path.Combine(Directory.GetCurrentDirectory(), "TmpImportFiles"); } /// /// Setup for single test /// [SetUp] public void Setup() { if (!Directory.Exists(importFolder)) Directory.CreateDirectory(importFolder); } [Test] public void CharacteristicPointsImporterCorrectFileTest() { const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsFile(testFilePath); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(testFilePath); IList characteristicPointsRecords = csvImporterCharacteristicPoints.ImportedItems; CheckCharacteristicPoints(characteristicPointsRecords); } [Test] public void CharacteristicPointsWithLocationIdImporterCorrectFileTest() { const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsFileWithLocationId(testFilePath); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(testFilePath); IList characteristicPointsRecords = csvImporterCharacteristicPoints.ImportedItems; CheckCharacteristicPoints(characteristicPointsRecords); } [Test] [ExpectedException(typeof(ArgumentException))] public void CharacteristicPointsImporterIllegalHeaderTest() { const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsFileWithIllegalHeader(testFilePath); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(testFilePath); } [Test] [ExpectedException(typeof(ArgumentException))] public void CharacteristicPointsImporterTooFewItemsHeaderTest() { const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsFileWithTooFewItems(testFilePath); CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(testFilePath); } [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = "The file name for the Characteristic Points csv is empty.")] public void CharacteristicPointsImporterEmptyFileNameTest() { const string importFile = ""; CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(importFile); } [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = "The Characteristic Points csv file with name BlablaBla could not be found.")] public void CharacteristicPointsImporterNotExistingFileNameTest() { const string importFile = "BlablaBla"; CsvImporterCharacteristicPoints csvImporterCharacteristicPoints = new CsvImporterCharacteristicPoints(importFile); } [Test] public void SurfaceLinesImporterCorrectFileTest() { const string importFile = "surfacelines.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateSurfaceLinesFile(testFilePath); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(testFilePath); IList surfaceLineRecords = csvImporterSurfaceLines.ImportedItems; CheckSurfaceLine(surfaceLineRecords); } [Test] public void SurfaceLinesWithLocationIdImporterCorrectFileTest() { const string importFile = "surfacelines.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateSurfaceLinesFileWithLocationId(testFilePath); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(testFilePath); IList surfaceLineRecords = csvImporterSurfaceLines.ImportedItems; CheckSurfaceLine(surfaceLineRecords); } [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = "The file name for the Surface Lines csv is empty.")] public void SurfaceLinesImporterEmptyFileNameTest() { const string importFile = ""; CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(importFile); } [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = "The Surface Lines csv file with name BlablaBla could not be found.")] public void SurfaceLinesImporterNotExistingFileNameTest() { const string importFile = "BlablaBla"; CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(importFile); } [Test] [ExpectedException(typeof(ArgumentException))] public void SurfaceLinesImporterIllegalHeaderTest() { const string importFile = "surfacelines.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateSurfaceLinesFileWithIllegalHeaders(testFilePath); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(testFilePath); } [Test] public void SurfaceLinesImporterIllegalValuesTest() { const string importFile = "surfacelines.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateSurfaceLinesFileWithIllegalValues(testFilePath); CsvImporterSurfaceLines csvImporterSurfaceLines = new CsvImporterSurfaceLines(testFilePath); Assert.AreEqual(1, csvImporterSurfaceLines.ErrorMessages.Count); } [Test] public void LocationsImporterCorrectFileTest() { const double tolerance = 0.001; const string importFile = "locations.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateValidLocationsFile(testFilePath); CsvImporterLocations csvImporterLocations = new CsvImporterLocations(testFilePath); IList locationRecords = csvImporterLocations.ImportedItems; Assert.AreEqual(2, locationRecords.Count); Assert.AreEqual("25-2-2-A-1-A", locationRecords[1].LocationId); Assert.AreEqual("25-2-2-A-1-A", locationRecords[1].SurfaceLineId); Assert.AreEqual("Secondstifile.sti", locationRecords[1].SoilGeometryName); Assert.AreEqual(1.1, locationRecords[1].XSoilGeometry2DOrigin, tolerance); Assert.AreEqual(0.8, locationRecords[1].LayerThickness, tolerance); Assert.AreEqual("zand", locationRecords[1].LayerMaterial); Assert.AreEqual("klei2", locationRecords[1].DikeEmbankmentMaterial); } [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = "The file name for the Locations csv is empty.")] public void LocationsImporterEmptyFileNameTest() { const string importFile = ""; CsvImporterLocations csvImporterLocations = new CsvImporterLocations(importFile); } [Test] [ExpectedException(typeof(ArgumentException), ExpectedMessage = "The Locations csv file with name BlablaBla could not be found.")] public void LocationsImporterNotExistingFileNameTest() { const string importFile = "BlablaBla"; CsvImporterLocations csvImporterLocations = new CsvImporterLocations(importFile); } [Test] [ExpectedException(typeof(ArgumentException))] public void LocationsImporterFileWithMissingRequiredColumn() { const string importFile = "locations.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateLocationsFileWithMissingRequiredColumn(testFilePath); CsvImporterLocations csvImporterLocations = new CsvImporterLocations(testFilePath); } [Test] public void LocationsImporterIllegalValuesTest() { const string importFile = "locations.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateLocationsFileWithIllegalValues(testFilePath); CsvImporterLocations csvImporterLocations = new CsvImporterLocations(testFilePath); Assert.AreEqual(2, csvImporterLocations.ErrorMessages.Count); } [Test] public void ReadLocationsTest() { const string importFile = "locations.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateValidLocationsFile(testFilePath); List locations; List errors; var result = CsvImporter.ReadLocations(importFolder, out locations, out errors); Assert.AreEqual(0, errors.Count); Assert.AreEqual(true, result); Assert.AreEqual(2, locations.Count); } [Test] public void ReadLocationsWithMissingRequiredColumns() { const string importFile = "locations.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateLocationsFileWithMissingRequiredColumn(testFilePath); List locations; List errors; var result = CsvImporter.ReadLocations(importFolder, out locations, out errors); Assert.AreEqual(1, errors.Count); Assert.AreEqual(false, result); Assert.IsTrue(errors[0].Contains("Fatal error whilst reading locations")); } [Test] public void ReadLocationsWithInvalidDataTest() { const string importFile = "locations.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateLocationsFileWithIllegalValues(testFilePath); List locations; List errors; var result = CsvImporter.ReadLocations(importFolder, out locations, out errors); Assert.AreEqual(2, errors.Count); Assert.AreEqual(false, result); Assert.IsTrue(errors[0].Contains("Next error occured whilst reading location")); Assert.IsTrue(errors[1].Contains("Next error occured whilst reading location")); } [Test] public void ReadSurfaceLineTestWithCharacteristicPointsSucceeds() { const string importSurfaceLineFile = "surfacelines.csv"; string testSurfaceLineFilePath = Path.Combine(importFolder, importSurfaceLineFile); if (File.Exists(testSurfaceLineFilePath)) File.Delete(testSurfaceLineFilePath); CreateSurfaceLinesFileForBelongingCharPoints(testSurfaceLineFilePath); const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsForBelongingSurfaceLLine(testFilePath); List surfaceLines; List errors; var result = CsvImporter.ReadSurfaceLines(importFolder, out surfaceLines, out errors); Assert.AreEqual(0, errors.Count); Assert.IsTrue(result); Assert.AreEqual(3, surfaceLines.Count); Assert.AreEqual("DWP_1", surfaceLines[0].SurfaceLineId); Assert.AreEqual("DWP_2", surfaceLines[1].SurfaceLineId); Assert.AreEqual("DWP_3", surfaceLines[2].SurfaceLineId); } [Test] public void ReadSurfaceLineTestWithoutCharacteristicPointsFails() { const string importSurfaceLineFile = "surfacelines.csv"; string testSurfaceLineFilePath = Path.Combine(importFolder, importSurfaceLineFile); if (File.Exists(testSurfaceLineFilePath)) File.Delete(testSurfaceLineFilePath); CreateSurfaceLinesFile(testSurfaceLineFilePath); const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); //CreateCharacteristicPointsFile(testFilePath); List surfaceLines; List errors; var result = CsvImporter.ReadSurfaceLines(importFolder, out surfaceLines, out errors); Assert.AreEqual(1, errors.Count); Assert.IsTrue(errors[0].Contains("Fatal error whilst reading surface lines:")); Assert.IsTrue(errors[0].Contains("The Characteristic Points csv file with name")); Assert.IsTrue(errors[0].Contains("could not be found")); } [Test] public void ReadSurfaceLineTestWithWrongCharacteristicPointsFails() { const string importSurfaceLineFile = "surfacelines.csv"; string testSurfaceLineFilePath = Path.Combine(importFolder, importSurfaceLineFile); if (File.Exists(testSurfaceLineFilePath)) File.Delete(testSurfaceLineFilePath); CreateSurfaceLinesFile(testSurfaceLineFilePath); const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsFileWithWrongCoordinates(testFilePath); List surfaceLines; List errors; var result = CsvImporter.ReadSurfaceLines(importFolder, out surfaceLines, out errors); Assert.AreEqual(1, errors.Count); Assert.IsTrue(errors[0].Contains("Characteristic Points csv has record")); Assert.IsTrue(errors[0].Contains("that can not be matched with a surface line point.")); } [Test] public void ReadSurfaceLineTestWithWrongCharacteristicPointsReference() { const string importSurfaceLineFile = "surfacelines.csv"; string testSurfaceLineFilePath = Path.Combine(importFolder, importSurfaceLineFile); if (File.Exists(testSurfaceLineFilePath)) File.Delete(testSurfaceLineFilePath); CreateSurfaceLinesFile(testSurfaceLineFilePath); const string importFile = "characteristicpoints.csv"; string testFilePath = Path.Combine(importFolder, importFile); if (File.Exists(testFilePath)) File.Delete(testFilePath); CreateCharacteristicPointsFileWithWrongReference(testFilePath); List surfaceLines; List errors; var result = CsvImporter.ReadSurfaceLines(importFolder, out surfaceLines, out errors); Assert.AreEqual(1, errors.Count); Assert.IsTrue(errors[0].Contains("Characteristic Points csv has record")); Assert.IsTrue(errors[0].Contains("that can not be matched with a surface line.")); } private static void CheckSurfaceLine(IList surfaceLineRecords) { Assert.AreEqual("D1", surfaceLineRecords[0].SurfaceLineId); Assert.AreEqual(0.0, surfaceLineRecords[0].Xcoors[0]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[0]); Assert.AreEqual(0.680, surfaceLineRecords[0].Zcoors[0]); Assert.AreEqual(21.110, surfaceLineRecords[0].Xcoors[1]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[1]); Assert.AreEqual(1.120, surfaceLineRecords[0].Zcoors[1]); Assert.AreEqual(31.600, surfaceLineRecords[0].Xcoors[2]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[2]); Assert.AreEqual(1.300, surfaceLineRecords[0].Zcoors[2]); Assert.AreEqual(52.630, surfaceLineRecords[0].Xcoors[10]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[10]); Assert.AreEqual(4.770, surfaceLineRecords[0].Zcoors[10]); Assert.AreEqual(72.370, surfaceLineRecords[0].Xcoors[22]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[22]); Assert.AreEqual(-1.060, surfaceLineRecords[0].Zcoors[22]); Assert.AreEqual(86.660, surfaceLineRecords[0].Xcoors[30]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[30]); Assert.AreEqual(0.270, surfaceLineRecords[0].Zcoors[30]); Assert.AreEqual(117.940, surfaceLineRecords[0].Xcoors[32]); Assert.AreEqual(0.0, surfaceLineRecords[0].Ycoors[32]); Assert.AreEqual(0.120, surfaceLineRecords[0].Zcoors[32]); } private static void CreateCharacteristicPointsFile(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private static void CreateCharacteristicPointsFileWithWrongCoordinates(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;137.94;0;0.12;-1;-1;-1;73.99;0;-15.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private static void CreateCharacteristicPointsFileWithWrongReference(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1A;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private static void CheckCharacteristicPoints(IList characteristicPointsRecords) { Assert.AreEqual("D1", characteristicPointsRecords[0].SurfaceLineId); Assert.AreEqual(1, characteristicPointsRecords[0].Volgnummer); Assert.AreEqual(117.94, characteristicPointsRecords[0].Points[0].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[0].Y); Assert.AreEqual(0.12, characteristicPointsRecords[0].Points[0].Z); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[1].X); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[1].Y); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[1].Z); Assert.AreEqual(73.99, characteristicPointsRecords[0].Points[2].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[2].Y); Assert.AreEqual(-1.0, characteristicPointsRecords[0].Points[2].Z); Assert.AreEqual(72.55, characteristicPointsRecords[0].Points[3].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[3].Y); Assert.AreEqual(-1.46, characteristicPointsRecords[0].Points[3].Z); Assert.AreEqual(67.9, characteristicPointsRecords[0].Points[4].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[4].Y); Assert.AreEqual(1.07, characteristicPointsRecords[0].Points[4].Z); Assert.AreEqual(63.31, characteristicPointsRecords[0].Points[5].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[5].Y); Assert.AreEqual(1.36, characteristicPointsRecords[0].Points[5].Z); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[6].X); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[6].Y); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[6].Z); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[7].X); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[7].Y); Assert.AreEqual(-1, characteristicPointsRecords[0].Points[7].Z); Assert.AreEqual(55.17, characteristicPointsRecords[0].Points[8].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[8].Y); Assert.AreEqual(4.46, characteristicPointsRecords[0].Points[8].Z); Assert.AreEqual(54.25, characteristicPointsRecords[0].Points[9].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[9].Y); Assert.AreEqual(4.69, characteristicPointsRecords[0].Points[9].Z); Assert.AreEqual(51.75, characteristicPointsRecords[0].Points[10].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[10].Y); Assert.AreEqual(4.662, characteristicPointsRecords[0].Points[10].Z); Assert.AreEqual(50.11, characteristicPointsRecords[0].Points[11].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[11].Y); Assert.AreEqual(4.46, characteristicPointsRecords[0].Points[11].Z); Assert.AreEqual(40.48, characteristicPointsRecords[0].Points[12].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[12].Y); Assert.AreEqual(1.94, characteristicPointsRecords[0].Points[12].Z); Assert.AreEqual(32.21, characteristicPointsRecords[0].Points[13].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[13].Y); Assert.AreEqual(1.67, characteristicPointsRecords[0].Points[13].Z); Assert.AreEqual(31.6, characteristicPointsRecords[0].Points[14].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[14].Y); Assert.AreEqual(1.3, characteristicPointsRecords[0].Points[14].Z); Assert.AreEqual(0, characteristicPointsRecords[0].Points[15].X); Assert.AreEqual(0, characteristicPointsRecords[0].Points[15].Y); Assert.AreEqual(0.68, characteristicPointsRecords[0].Points[15].Z); } private static void CreateCharacteristicPointsFileWithLocationId(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "LocationId;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private static void CreateCharacteristicPointsFileWithIllegalHeader(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;X_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek_sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts;X_Dijktafelhoogte;Y_Dijktafelhoogte;Z_Dijktafelhoogte;Volgnummer"); writer.WriteLine( "D1;117.94;0;0.12;-1;-1;-1;73.99;0;-1.0;72.55;0;-1.46;67.9;0;1.07;63.31;0;1.36;-1;-1;-1;-1;-1;-1;55.17;0;4.46;54.25;0;4.69;51.75;0;4.662;50.11;0;4.46;40.48;0;1.94;32.21;0;1.67;31.6;0;1.3;0;0;0.68;52.63;0;4.77;1"); } } private static void CreateCharacteristicPointsFileWithTooFewItems(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine("Profielnaam;X_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;"); writer.WriteLine("D1;117.94;0;0.12;"); } } private static void CreateSurfaceLinesFile(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private static void CreateSurfaceLinesFileWithLocationId(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "LocationId;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private static void CreateSurfaceLinesFileWithIllegalValues(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;AS63.310;Bw0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.0as00;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private static void CreateSurfaceLinesFileWithIllegalHeaders(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Proflnaam;Geologischprofiel;X_GridPoint;Y_GridPoint;ScenarioClusterID;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel)"); writer.WriteLine( "D1;;AS63.310;Bw0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.0as00;1.300;31.730;0.000;1.610;32.210;0.000;1.670;35.580;0.000;1.580;40.480;0.000;1.940;47.860;0.000;3.790;50.110;0.000;4.460;51.750;0.000;4.662;52.630;0.000;4.770;54.250;0.000;4.690;55.170;0.000;4.460;58.850;0.000;2.980;60.290;0.000;2.460;63.310;0.000;1.360;67.900;0.000;1.070;69.410;0.000;0.600;69.800;0.000;0.480;70.530;0.000;0.000;70.820;0.000;-0.190;71.550;0.000;-0.600;72.370;0.000;-1.060;72.380;0.000;-1.170;72.550;0.000;-1.460;73.860;0.000;-1.390;73.990;0.000;-1.0;74.570;0.000;-0.840;74.970;0.000;-0.600;76.170;0.000;0.110;86.660;0.000;0.270;103.280;0.000;0.220;117.940;0.000;0.120"); writer.WriteLine( "D2;;63.310;0.000;1;0.000;0.000;0.680;21.110;0.000;1.120;31.600;0.000;1.300;31.730;0.000;1.610"); } } private static void CreateLocationsFileWithMissingRequiredColumn(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "location_id;surfaceline_id;segment_id;geo_x;geo_y;x_soilgeometry2D_origin;Pl1_id;polderlevel;polderlevellow;head_pl2;head_pl3;head_pl4;Grass_quality;Direction;Ophoogmateriaaldijk;Ophoogmateriaalberm;Sheetpile_x;Sheetpile_y;Sheetpile_z;Sheetpile_length;use_original_plline_assignments;PenetrationLength;TrafficLoad;minimal_circle_depth;dempingsfactor_pl3;dempingsfactor_pl4;PLLineCreationMethod;level_reduction_inside;level_reduction_outside;layer_height_distribution;layer_height_deviation;safety_factor_piping;safety_factor_stability_inner_slope;safety_factor_stability_outer_slope;probability_of_failure_stability_innerslope;probability_of_failure_stability_outerslope;probability_of_failure_piping;uplift_criterion_piping;uplift_criterion_stability;Materiaaltypedijk;bp_tp;bp_hbp;bp_lbp;Baggerdiepte;distance_to_entry_point;PLLineOffsetBelowDikeTopAtRiver;PLLineOffsetBelowDikeTopAtPolder;PLLineOffsetBelowShoulderBaseInside;PLLineOffsetBelowDikeToeAtPolder;PLLineOffsetDryBelowDikeTopAtRiver;PLLineOffsetDryBelowDikeTopAtPolder;PLLineOffsetDryBelowShoulderBaseInside;PLLineOffsetDryBelowDikeToeAtPolder;StabilityShoulderGrowSlope;StabilityShoulderGrowDeltaX;StabilitySlopeAdaptionDeltaX;detrimentfactor;dike_table_height;SlopeDampingPiezometricHeightPolderSide;StabilityDesignMethod;SlopeAdaptionStartCotangent;SlopeAdaptionEndCotangent;SlopeAdaptionStepCotangent; UseNewDikeTopWidth; NewDikeTopWidth;UseNewDikeSlopeInside;NewDikeSlopeInside;UseNewDikeSlopeOutside;NewDikeSlopeOutside;UseNewShoulderTopSlope;NewShoulderTopSlope;UseNewShoulderBaseSlope;NewShoulderBaseSlope;UseNewMaxHeightShoulderAsFraction;NewMaxHeightShoulderAsFraction;UseNewMinDistanceDikeToeStartDitch;NewMinDistanceDikeToeStartDitch;UseNewDitchDefinition;NewWidthDitchBottom;newSlopeAngleDitch;NewDepthDitch;ZoneType;ForbiddenZoneFactor;ZoneAreaRestSlopeCrestWidth;PLLineOffsetBelowDikeCrestMiddle;PLLineOffsetFactorBelowShoulderCrest;UsePLLineOffsetDryBelowDikeCrestMiddle;PLLineOffsetDryBelowDikeCrestMiddle;UsePLLineOffsetDryFactorBelowShoulderCrest;PLLineOffsetDryFactorBelowShoulderCrest;IntrusionVerticalWaterPressure;TL_DegreeOfConsolidation;water_height;water_height_low;water_height_decimerings_hoogte;max_waterheight"); writer.WriteLine( "16-1-1-C-3-Z;16-1-1-C-3-Z;1043;124330;441312;1;16-1-1-C-3-Z;0.9;0.2;13.056;0.9;0.8;1;1;klei;klei2;1;2;3;12;TRUE;1.3;10;1.5;30;40;ExpertKnowledgeRRD;1;2;Uniform;0.1;1.2;1.3;1.4;0.01;0.02;0.03;1.1;1.2;klei;1.0;1.1;1.2;2.0;2.1;0.5;0.6;0.1;0.2;0.6;1.6;0.2;0.3;2.0;0.2;0.5;0.9;3.5;0.01;OptimizedSlopeAndShoulderAdaption;3.0;6.0;0.5;TRUE;1.8;TRUE;1.9;TRUE;2.9;TRUE;2.8;TRUE;2.7;TRUE;0.6;TRUE;2.6;TRUE;1.1;1.2;1.3;NoZones;0.5;1.6;1.0;0.1;TRUE;1.1;FALSE;0.11;Standard;10.1;1.2;1.3;1.4;1.5"); writer.WriteLine( "25-2-2-A-1-A;25-2-2-A-1-A;106;66586;424173;2;25-2-2-A-1-A;-0.25;-0.25;0.8727;-0.25;-0.25;1;1;klei;klei2;1;2;3;12;FALSE;1.3;10;1.5;30;40;ExpertKnowledgeRRD;1;2;Uniform;0.1;1.2;1.3;1.4;0.01;0.02;0.03;1.1;1.2;klei;1.0;1.1;1.2;2.0;2.1;0.5;0.6;0.1;0.2;0.6;1.6;0.2;0.3;2.0;0.2;0.5;0.9;3.5;0.2;SlopeAdaptionBeforeShoulderAdaption;4.5;6.5;0.25;FALSE;0.8;FALSE;0.9;FALSE;1.9;FALSE;1.8;FALSE;1.7;FALSE;0.7;FALSE;1.6;FALSE;1.4;1.5;1.6;ForbiddenZone;0.9;2.1; 1.1;0.11;FALSE; 1.0;TRUE;0.1;SemiTimeDependent;55.5;2.2;2.3;2.4;2.5"); } } private static void CreateValidLocationsFile(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "location_id;surfaceline_id;soilgeometry2D_name;x_soilgeometry2D_origin;slope_layer_thickness;slope_layer_material;Ophoogmateriaaldijk;"); writer.WriteLine( "16-1-1-C-3-Z;16-1-1-C-3-Z;Firststifile.sti;0.9;1.2;klei;klei2;"); writer.WriteLine( "25-2-2-A-1-A;25-2-2-A-1-A;Secondstifile.sti;1.1;0.8;zand;klei2;"); } } private static void CreateLocationsFileWithIllegalValues(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "location_id;surfaceline_id;soilgeometry2D_name;x_soilgeometry2D_origin;slope_layer_thickness;slope_layer_material;Ophoogmateriaaldijk;polderlevel;polderlevellow;head_pl2;head_pl3;head_pl4;"); writer.WriteLine( "16-1-1-C-3-Z;16-1-1-C-3-Z;Firststifile.sti;0.ssw9;1.2;klei;klei2;-0.6;-0.9,2.1;2.2;2.5;"); writer.WriteLine( "25-2-2-A-1-A;25-2-2-A-1-A;Secondstifile.sti;1.1;0qwerty.8;zand;klei2;"); } } private static void CreateSurfaceLinesFileForBelongingCharPoints(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "Profielnaam;X1;Y1;Z1;.....;Xn;Yn;Zn;(Profiel);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"); writer.WriteLine( "DWP_1;8.42;0;0.820780171;10.14;0;0.95;17.08;0;0.88;19.45;0;0.81;20.62;0;0.3;21.84;0;-0.61;23.08;0;-0.38;24.61;0;0.63;29.24;0;1.04;33.31;0;1.46;36.26;0;2.19;37.546;0;3;42.41;0;4.08;45.23;0;4.9;46.42;0;5.24;47.38;0;5.27;47.92;0;5.32;48.09;0;5.325;49.53;0;5.37;49.96;0;5.36;50.59;0;5.36;51.8;0;5.05;55.13;0;4.09;58.6;0;3.23;60.76;0;2.89;64.81;0;2.57;69.06;0;2.31;70.19;0;2;71.55;0;0.99;72.11;0;1;73.34;0;1.32;73.866;0;2;74.75;0;2.54;80.78;0;2.54;114.42;0;2.54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"); writer.WriteLine( "DWP_2;11.31;0;1.219278075;17.51;0;1.38;19.03;0;1.01;20.06;0;0.32;21.24;0;-0.49;22.46;0;-0.01;23.07;0;0.61;27.99;0;0.81;33.66;0;1.04;41.59;0;2.43;45.92;0;4.04;49.31;0;5.47;50.61;0;5.57;51.03;0;5.59;51.2;0;5.592;51.82;0;5.6;52.64;0;5.57;53.03;0;5.56;53.7;0;5.57;57.12;0;4.55;61.68;0;3.04;66.95;0;1.67;75.61;0;1.15;82.91;0;0.62;83;0;0.4;84;0;-0.045;84.76;0;-0.49;85;0;-0.7;85.84;0;-1.11;86;0;-1;87.46;0;-1.06;88;0;-1;88.44;0;-0.54;89.96;0;0.4;99.15;0;0.57;117.31;0;0.57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"); writer.WriteLine( "DWP_3;11.6;0;0.490209858;16.95;0;0.39;17.37;0;-0.09;17.59;0;-0.2;17.99;0;-0.4;18;0;-0.5;18.21;0;-0.51;19;0;-0.4;19.48;0;-0.23;20;0;-0.2;20.49;0;0.59;26.75;0;0.74;32.64;0;1.18;39.56;0;2.43;45.59;0;3.94;49.6;0;5.02;50.44;0;4.99;50.86;0;5.04;51;0;5.044;51.64;0;5.06;52.48;0;5.06;52.81;0;5.04;53.5;0;5.05;56.1;0;4.21;58.42;0;3.41;60.06;0;2.93;61.9;0;2.89;65.1;0;2.89;68.17;0;2.7;69.6;0;2.48;72.69;0;1.58;75.48;0;1.15;79.67;0;0.49;82.14;0;0.24;82.98;0;-0.02;83;0;-0.2;83.72;0;-0.46;84;0;-0.5;84.39;0;-1.1;86.67;0;-1.24;87;0;-0.7;87.58;0;-0.5;88;0;-0.4;89.29;0;0.17;101.4;0;0.32;117.6;0;0.32"); } } private static void CreateCharacteristicPointsForBelongingSurfaceLLine(string filePath) { using (var writer = File.CreateText(filePath)) { writer.WriteLine( "LOCATIONID;X_Maaiveld binnenwaarts;Y_Maaiveld binnenwaarts;Z_Maaiveld binnenwaarts;X_Insteek sloot polderzijde;Y_Insteek sloot polderzijde;Z_Insteek sloot polderzijde;X_Slootbodem polderzijde;Y_Slootbodem polderzijde;Z_Slootbodem polderzijde;X_Slootbodem dijkzijde;Y_Slootbodem dijkzijde;Z_Slootbodem dijkzijde;X_Insteek sloot dijkzijde;Y_Insteek_sloot dijkzijde;Z_Insteek sloot dijkzijde;X_Teen dijk binnenwaarts;Y_Teen dijk binnenwaarts;Z_Teen dijk binnenwaarts;X_Kruin binnenberm;Y_Kruin binnenberm;Z_Kruin binnenberm;X_Insteek binnenberm;Y_Insteek binnenberm;Z_Insteek binnenberm;X_Kruin binnentalud;Y_Kruin binnentalud;Z_Kruin binnentalud;X_Verkeersbelasting kant binnenwaarts;Y_Verkeersbelasting kant binnenwaarts;Z_Verkeersbelasting kant binnenwaarts;X_Verkeersbelasting kant buitenwaarts;Y_Verkeersbelasting kant buitenwaarts;Z_Verkeersbelasting kant buitenwaarts;X_Kruin buitentalud;Y_Kruin buitentalud;Z_Kruin buitentalud;X_Insteek buitenberm;Y_Insteek buitenberm;Z_Insteek buitenberm;X_Kruin buitenberm;Y_Kruin buitenberm;Z_Kruin buitenberm;X_Teen dijk buitenwaarts;Y_Teen dijk buitenwaarts;Z_Teen dijk buitenwaarts;X_Insteek geul;Y_Insteek geul;Z_Insteek geul;X_Teen geul;Y_Teen geul;Z_Teen geul;X_Maaiveld buitenwaarts;Y_Maaiveld buitenwaarts;Z_Maaiveld buitenwaarts"); writer.WriteLine( "DWP_1;114.42;0;2.54;74.75;0;2.54;72.11;0;1;71.55;0;0.99;69.06;0;2.31;60.76;0;2.89;-1;-1;-1;-1;-1;-1;50.59;0;5.36;50.59;0;5.36;48.09;0;5.325;46.42;0;5.24;-1;-1;-1;-1;-1;-1;24.61;0;0.63;-1;-1;-1;-1;-1;-1;8.42;0;0.820780171"); writer.WriteLine( "DWP_2; 117.31; 0; 0.57; 89.96; 0; 0.4; 88; 0; -1; 85.84; 0; -1.11; 82.91; 0; 0.62; 66.95; 0; 1.67; -1; -1; -1; -1; -1; -1; 53.7; 0; 5.57; 53.7; 0; 5.57; 51.2; 0; 5.592; 49.31; 0; 5.47; -1; -1; -1; -1; -1; -1; 33.66; 0; 1.04; -1; -1; -1; -1; -1; -1; 11.31; 0; 1.219278075"); writer.WriteLine( "DWP_3;117.6;0;0.32;89.29;0;0.17;86.67;0;-1.24;84.39;0;-1.1;82.98;0;-0.02;72.69;0;1.58;65.1;0;2.89;60.06;0;2.93;53.5;0;5.05;53.5;0;5.05;51;0;5.044;49.6;0;5.02;-1;-1;-1;-1;-1;-1;20.49;0;0.59;-1;-1;-1;-1;-1;-1;11.6;0;0.490209858"); } } } }