XML exporter erweitert
This commit is contained in:
@@ -168,7 +168,7 @@ namespace StammGenerator.ViewModel
|
|||||||
|
|
||||||
|
|
||||||
double length = Math.Sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
|
double length = Math.Sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
|
||||||
Haltungslaenge = length.ToString();
|
Haltungslaenge = string.Format("{0:0.00}", length);
|
||||||
OnPropertyChanged(nameof(Haltungslaenge));
|
OnPropertyChanged(nameof(Haltungslaenge));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using WWTech_KanalSchnittstelle.Exporter.Kandis;
|
using WWTech_KanalSchnittstelle.Exporter.Kandis;
|
||||||
|
using WWTech_KanalSchnittstelle.Exporter.XML;
|
||||||
|
|
||||||
namespace WWTech_KanalSchnittstelle.Exporter
|
namespace WWTech_KanalSchnittstelle.Exporter
|
||||||
{
|
{
|
||||||
@@ -18,6 +19,7 @@ namespace WWTech_KanalSchnittstelle.Exporter
|
|||||||
switch(exportType)
|
switch(exportType)
|
||||||
{
|
{
|
||||||
case EExportType.KANDIS6: return new KANDIS60();
|
case EExportType.KANDIS6: return new KANDIS60();
|
||||||
|
case EExportType.XML2006: return new XML2006();
|
||||||
default: throw new NotImplementedException();
|
default: throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
|||||||
XmlElement xmlElement = CreateElementFor("Identifikation", _file);
|
XmlElement xmlElement = CreateElementFor("Identifikation", _file);
|
||||||
xmlElement.SetAttribute("xmlns", "http://www.ofd-hannover.la/Identifikation");
|
xmlElement.SetAttribute("xmlns", "http://www.ofd-hannover.la/Identifikation");
|
||||||
XmlElement xmlElement2 = CreateElementFor("Version", xmlElement);
|
XmlElement xmlElement2 = CreateElementFor("Version", xmlElement);
|
||||||
xmlElement2.InnerText = "2-3";
|
xmlElement2.InnerText = "2006-2";
|
||||||
DoAdmindata(xmlElement);
|
DoAdmindata(xmlElement);
|
||||||
DoCollectives(xmlElement);
|
DoCollectives(xmlElement);
|
||||||
|
|
||||||
@@ -58,6 +58,12 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
|||||||
private void DoCollectives2Base(XmlElement dataCollectiveElement)
|
private void DoCollectives2Base(XmlElement dataCollectiveElement)
|
||||||
{
|
{
|
||||||
XmlElement parentElement = DoRow(dataCollectiveElement, "Stammdatenkollektiv");
|
XmlElement parentElement = DoRow(dataCollectiveElement, "Stammdatenkollektiv");
|
||||||
|
|
||||||
|
foreach (Kanal haltung in _haltungen)
|
||||||
|
{
|
||||||
|
XmlElement xmlElement = DoHaltungRow(haltung, parentElement, "AbwassertechnischeAnlage");
|
||||||
|
}
|
||||||
|
|
||||||
foreach (Schacht schacht in _schaechte)
|
foreach (Schacht schacht in _schaechte)
|
||||||
{
|
{
|
||||||
XmlElement xmlElement = DoSchachtRow(schacht, parentElement, "AbwassertechnischeAnlage");
|
XmlElement xmlElement = DoSchachtRow(schacht, parentElement, "AbwassertechnischeAnlage");
|
||||||
@@ -83,14 +89,14 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
|||||||
XmlElement GeometrieElement = CreateElementFor("Geometrie", xmlElement);
|
XmlElement GeometrieElement = CreateElementFor("Geometrie", xmlElement);
|
||||||
XmlElement KnotenElement = CreateElementFor("Knoten", GeometrieElement);
|
XmlElement KnotenElement = CreateElementFor("Knoten", GeometrieElement);
|
||||||
XmlElement PunktElement = CreateElementFor("Punkt", KnotenElement);
|
XmlElement PunktElement = CreateElementFor("Punkt", KnotenElement);
|
||||||
DoRowValue(PunktElement, "Rechtswert", schacht.SohlRechtsWert.ToString());
|
DoRowValue(PunktElement, "Rechtswert", schacht.SohlRechtsWert.ToString().Replace(',', '.'));
|
||||||
DoRowValue(PunktElement, "Hochwert", schacht.SohlHochWert.ToString());
|
DoRowValue(PunktElement, "Hochwert", schacht.SohlHochWert.ToString().Replace(',', '.'));
|
||||||
DoRowValue(PunktElement, "Punkthoehe", schacht.SohlHoehe.ToString());
|
DoRowValue(PunktElement, "Punkthoehe", schacht.SohlHoehe.ToString().Replace(',', '.'));
|
||||||
DoRowValue(PunktElement, "PunktattributAbwasser", "SMP");
|
DoRowValue(PunktElement, "PunktattributAbwasser", "SMP");
|
||||||
PunktElement = CreateElementFor("Punkt", KnotenElement);
|
PunktElement = CreateElementFor("Punkt", KnotenElement);
|
||||||
DoRowValue(PunktElement, "Rechtswert", schacht.DeckelRechtsWert.ToString());
|
DoRowValue(PunktElement, "Rechtswert", schacht.DeckelRechtsWert.ToString().Replace(',', '.'));
|
||||||
DoRowValue(PunktElement, "Hochwert", schacht.DeckelHochWert.ToString());
|
DoRowValue(PunktElement, "Hochwert", schacht.DeckelHochWert.ToString().Replace(',', '.'));
|
||||||
DoRowValue(PunktElement, "Punkthoehe", schacht.DeckelHoehe.ToString());
|
DoRowValue(PunktElement, "Punkthoehe", schacht.DeckelHoehe.ToString().Replace(',', '.'));
|
||||||
DoRowValue(PunktElement, "PunktattributAbwasser", "DMP");
|
DoRowValue(PunktElement, "PunktattributAbwasser", "DMP");
|
||||||
return xmlElement;
|
return xmlElement;
|
||||||
}
|
}
|
||||||
@@ -101,6 +107,48 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
|||||||
xmlElement = _file.CreateElement(orginalTableName);
|
xmlElement = _file.CreateElement(orginalTableName);
|
||||||
parentElement.AppendChild(xmlElement);
|
parentElement.AppendChild(xmlElement);
|
||||||
|
|
||||||
|
DoRowValue(xmlElement, "Objektbezeichnung", haltung.Objektbezeichnung);
|
||||||
|
DoRowValue(xmlElement, "Objektart", "1");
|
||||||
|
DoRowValue(xmlElement, "Entwaesserungsart", haltung.Entwaesserung == EEntwaeserung.Regenwasser ? "KR" : haltung.Entwaesserung == EEntwaeserung.Schmutzwasser ? "KS" : "KM");
|
||||||
|
|
||||||
|
XmlElement xmlElement1 = CreateElementFor("Kante", xmlElement);
|
||||||
|
DoRowValue(xmlElement1, "KantenTyp", "0");
|
||||||
|
DoRowValue(xmlElement1, "KnotenZulauf", haltung.StartSchacht.Objektbezeichnung);
|
||||||
|
DoRowValue(xmlElement1, "KnotenZulaufTyp", "0");
|
||||||
|
DoRowValue(xmlElement1, "KnotenAblauf", haltung.EndSchacht.Objektbezeichnung);
|
||||||
|
DoRowValue(xmlElement1, "KnotenAblaufTyp", "0");
|
||||||
|
DoRowValue(xmlElement1, "Material", haltung.Material);
|
||||||
|
|
||||||
|
XmlElement xmlElement2 = CreateElementFor("Profil", xmlElement1);
|
||||||
|
DoRowValue(xmlElement2, "SonderprofilVorhanden", "0");
|
||||||
|
DoRowValue(xmlElement2, "Profilart", "0");
|
||||||
|
DoRowValue(xmlElement2, "Profilbreite", haltung.DN.ToString());
|
||||||
|
DoRowValue(xmlElement2, "Profilhoehe", haltung.DN.ToString());
|
||||||
|
|
||||||
|
xmlElement2 = CreateElementFor("Haltung", xmlElement1);
|
||||||
|
DoRowValue(xmlElement2, "HaltungsFunktion", "1");
|
||||||
|
DoRowValue(xmlElement2, "DMPLaenge", haltung.Haltungslaenge.ToString().Replace(',', '.'));
|
||||||
|
|
||||||
|
xmlElement1 = CreateElementFor("Lage", xmlElement);
|
||||||
|
|
||||||
|
xmlElement1 = CreateElementFor("Geometrie", xmlElement);
|
||||||
|
|
||||||
|
DoRowValue(xmlElement1, "GeoObjekttyp", "L");
|
||||||
|
xmlElement2 = CreateElementFor("Geometriedaten", xmlElement1);
|
||||||
|
XmlElement xmlElement3 = CreateElementFor("Kanten", xmlElement2);
|
||||||
|
XmlElement xmlElement4 = CreateElementFor("Kante", xmlElement3);
|
||||||
|
|
||||||
|
XmlElement xmlElement5 = CreateElementFor("Start", xmlElement4);
|
||||||
|
DoRowValue(xmlElement5, "Rechtswert", haltung.StartSchacht.SohlRechtsWert.ToString().Replace(',', '.'));
|
||||||
|
DoRowValue(xmlElement5, "Hochwert", haltung.StartSchacht.SohlHochWert.ToString().Replace(',', '.'));
|
||||||
|
DoRowValue(xmlElement5, "Punkthoehe", haltung.StartSchacht.SohlHoehe.ToString().Replace(',', '.'));
|
||||||
|
DoRowValue(xmlElement5, "PunktattributAbwasser", "SMP");
|
||||||
|
|
||||||
|
xmlElement5 = CreateElementFor("Ende", xmlElement4);
|
||||||
|
DoRowValue(xmlElement5, "Rechtswert", haltung.EndSchacht.SohlRechtsWert.ToString().Replace(',', '.'));
|
||||||
|
DoRowValue(xmlElement5, "Hochwert", haltung.EndSchacht.SohlHochWert.ToString().Replace(',', '.'));
|
||||||
|
DoRowValue(xmlElement5, "Punkthoehe", haltung.EndSchacht.SohlHoehe.ToString().Replace(',', '.'));
|
||||||
|
DoRowValue(xmlElement5, "PunktattributAbwasser", "SMP");
|
||||||
|
|
||||||
|
|
||||||
return xmlElement;
|
return xmlElement;
|
||||||
|
|||||||
@@ -16,15 +16,26 @@ namespace WWTech_KanalSchnittstelle.Importer
|
|||||||
}
|
}
|
||||||
public class CSVImporter : IImport
|
public class CSVImporter : IImport
|
||||||
{
|
{
|
||||||
private string[] input;
|
private string[]? input;
|
||||||
private readonly Projekt projekt;
|
private readonly Projekt projekt;
|
||||||
|
|
||||||
#pragma warning disable CS8618 // Ein Non-Nullable-Feld muss beim Beenden des Konstruktors einen Wert ungleich NULL enthalten. Erwägen Sie die Deklaration als Nullable.
|
|
||||||
public CSVImporter(int projektID)
|
public CSVImporter(int projektID)
|
||||||
#pragma warning restore CS8618 // Ein Non-Nullable-Feld muss beim Beenden des Konstruktors einen Wert ungleich NULL enthalten. Erwägen Sie die Deklaration als Nullable.
|
|
||||||
{
|
{
|
||||||
projekt = new Projekt() { Id = projektID };
|
projekt = new Projekt() { Id = projektID };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private decimal parseKoordinate(string input)
|
||||||
|
{
|
||||||
|
decimal result = 0m;
|
||||||
|
input = string.Format("{0:0.000}", input).Replace('.', ',');
|
||||||
|
if(decimal.TryParse(input, out result))
|
||||||
|
{
|
||||||
|
throw new Exception("Konnte koordinate nicht parsen");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Schacht> LoadSchaechte(string filename, EEntwaeserung entwaeserung)
|
public List<Schacht> LoadSchaechte(string filename, EEntwaeserung entwaeserung)
|
||||||
{
|
{
|
||||||
List<Schacht> result = new List<Schacht>();
|
List<Schacht> result = new List<Schacht>();
|
||||||
@@ -58,15 +69,15 @@ namespace WWTech_KanalSchnittstelle.Importer
|
|||||||
|
|
||||||
if(kennung == EKennung.DECKEL)
|
if(kennung == EKennung.DECKEL)
|
||||||
{
|
{
|
||||||
schacht.DeckelRechtsWert = decimal.Parse(parsed[1].Replace('.', ','));
|
schacht.DeckelRechtsWert = parseKoordinate(parsed[1]);
|
||||||
schacht.DeckelHochWert = decimal.Parse(parsed[2].Replace('.', ','));
|
schacht.DeckelHochWert = parseKoordinate(parsed[2]);
|
||||||
schacht.DeckelHoehe = decimal.Parse(parsed[3].Replace('.', ','));
|
schacht.DeckelHoehe = parseKoordinate(parsed[3]);
|
||||||
}
|
}
|
||||||
if(kennung == EKennung.SOHLE)
|
if(kennung == EKennung.SOHLE)
|
||||||
{
|
{
|
||||||
schacht.SohlRechtsWert = decimal.Parse(parsed[1].Replace('.', ','));
|
schacht.SohlRechtsWert = parseKoordinate(parsed[1]);
|
||||||
schacht.SohlHochWert = decimal.Parse(parsed[2].Replace('.', ','));
|
schacht.SohlHochWert = parseKoordinate(parsed[2]);
|
||||||
schacht.SohlHoehe = decimal.Parse(parsed[3].Replace('.', ','));
|
schacht.SohlHoehe = parseKoordinate(parsed[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,23 +20,37 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML.Tests
|
|||||||
{
|
{
|
||||||
new Schacht()
|
new Schacht()
|
||||||
{
|
{
|
||||||
Objektbezeichnung = "15456498",
|
Objektbezeichnung = "SW01",
|
||||||
SohlHoehe = 1457,
|
SohlHoehe = 0112.7m,
|
||||||
DeckelHoehe = 1454,
|
DeckelHoehe = 0108.8m,
|
||||||
DeckelRechtsWert = 14,
|
SohlHochWert = 123.93m,
|
||||||
|
SohlRechtsWert = 123.92m,
|
||||||
DeckelHochWert = 14785,
|
DeckelHochWert = 14785,
|
||||||
},
|
},
|
||||||
new Schacht()
|
new Schacht()
|
||||||
{
|
{
|
||||||
Objektbezeichnung = "18656498",
|
Objektbezeichnung = "SW02",
|
||||||
SohlHoehe = 145,
|
SohlHoehe = 145,
|
||||||
DeckelHoehe = 14,
|
SohlHochWert = 14,
|
||||||
DeckelRechtsWert = 28,
|
SohlRechtsWert = 28,
|
||||||
DeckelHochWert = 14,
|
DeckelHochWert = 14,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
List<Kanal> haltungen = new List<Kanal>()
|
||||||
|
{
|
||||||
|
new Kanal()
|
||||||
|
{
|
||||||
|
StartSchacht = schaechte[0],
|
||||||
|
EndSchacht = schaechte[1],
|
||||||
|
DN = 200,
|
||||||
|
Entwaesserung = EEntwaeserung.Regenwasser,
|
||||||
|
Haltungslaenge = 53.93m,
|
||||||
|
Material = "STZ",
|
||||||
|
Objektbezeichnung = schaechte[0].Objektbezeichnung
|
||||||
|
}
|
||||||
|
};
|
||||||
XML2006 xmloutput = new XML2006();
|
XML2006 xmloutput = new XML2006();
|
||||||
xmloutput.Export("test.xml", EKodierungssystem.EN13508_2_2011, new List<Kanal>(), schaechte);
|
xmloutput.Export("test.xml", EKodierungssystem.EN13508_2_2011, haltungen, schaechte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user