// 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");
}
}
}
}