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)));
|
||||
Haltungslaenge = length.ToString();
|
||||
Haltungslaenge = string.Format("{0:0.00}", length);
|
||||
OnPropertyChanged(nameof(Haltungslaenge));
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WWTech_KanalSchnittstelle.Exporter.Kandis;
|
||||
using WWTech_KanalSchnittstelle.Exporter.XML;
|
||||
|
||||
namespace WWTech_KanalSchnittstelle.Exporter
|
||||
{
|
||||
@@ -18,6 +19,7 @@ namespace WWTech_KanalSchnittstelle.Exporter
|
||||
switch(exportType)
|
||||
{
|
||||
case EExportType.KANDIS6: return new KANDIS60();
|
||||
case EExportType.XML2006: return new XML2006();
|
||||
default: throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
XmlElement xmlElement = CreateElementFor("Identifikation", _file);
|
||||
xmlElement.SetAttribute("xmlns", "http://www.ofd-hannover.la/Identifikation");
|
||||
XmlElement xmlElement2 = CreateElementFor("Version", xmlElement);
|
||||
xmlElement2.InnerText = "2-3";
|
||||
xmlElement2.InnerText = "2006-2";
|
||||
DoAdmindata(xmlElement);
|
||||
DoCollectives(xmlElement);
|
||||
|
||||
@@ -58,6 +58,12 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
private void DoCollectives2Base(XmlElement dataCollectiveElement)
|
||||
{
|
||||
XmlElement parentElement = DoRow(dataCollectiveElement, "Stammdatenkollektiv");
|
||||
|
||||
foreach (Kanal haltung in _haltungen)
|
||||
{
|
||||
XmlElement xmlElement = DoHaltungRow(haltung, parentElement, "AbwassertechnischeAnlage");
|
||||
}
|
||||
|
||||
foreach (Schacht schacht in _schaechte)
|
||||
{
|
||||
XmlElement xmlElement = DoSchachtRow(schacht, parentElement, "AbwassertechnischeAnlage");
|
||||
@@ -83,14 +89,14 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
XmlElement GeometrieElement = CreateElementFor("Geometrie", xmlElement);
|
||||
XmlElement KnotenElement = CreateElementFor("Knoten", GeometrieElement);
|
||||
XmlElement PunktElement = CreateElementFor("Punkt", KnotenElement);
|
||||
DoRowValue(PunktElement, "Rechtswert", schacht.SohlRechtsWert.ToString());
|
||||
DoRowValue(PunktElement, "Hochwert", schacht.SohlHochWert.ToString());
|
||||
DoRowValue(PunktElement, "Punkthoehe", schacht.SohlHoehe.ToString());
|
||||
DoRowValue(PunktElement, "Rechtswert", schacht.SohlRechtsWert.ToString().Replace(',', '.'));
|
||||
DoRowValue(PunktElement, "Hochwert", schacht.SohlHochWert.ToString().Replace(',', '.'));
|
||||
DoRowValue(PunktElement, "Punkthoehe", schacht.SohlHoehe.ToString().Replace(',', '.'));
|
||||
DoRowValue(PunktElement, "PunktattributAbwasser", "SMP");
|
||||
PunktElement = CreateElementFor("Punkt", KnotenElement);
|
||||
DoRowValue(PunktElement, "Rechtswert", schacht.DeckelRechtsWert.ToString());
|
||||
DoRowValue(PunktElement, "Hochwert", schacht.DeckelHochWert.ToString());
|
||||
DoRowValue(PunktElement, "Punkthoehe", schacht.DeckelHoehe.ToString());
|
||||
DoRowValue(PunktElement, "Rechtswert", schacht.DeckelRechtsWert.ToString().Replace(',', '.'));
|
||||
DoRowValue(PunktElement, "Hochwert", schacht.DeckelHochWert.ToString().Replace(',', '.'));
|
||||
DoRowValue(PunktElement, "Punkthoehe", schacht.DeckelHoehe.ToString().Replace(',', '.'));
|
||||
DoRowValue(PunktElement, "PunktattributAbwasser", "DMP");
|
||||
return xmlElement;
|
||||
}
|
||||
@@ -101,6 +107,48 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
xmlElement = _file.CreateElement(orginalTableName);
|
||||
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;
|
||||
|
||||
@@ -16,15 +16,26 @@ namespace WWTech_KanalSchnittstelle.Importer
|
||||
}
|
||||
public class CSVImporter : IImport
|
||||
{
|
||||
private string[] input;
|
||||
private string[]? input;
|
||||
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)
|
||||
#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 };
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
List<Schacht> result = new List<Schacht>();
|
||||
@@ -58,15 +69,15 @@ namespace WWTech_KanalSchnittstelle.Importer
|
||||
|
||||
if(kennung == EKennung.DECKEL)
|
||||
{
|
||||
schacht.DeckelRechtsWert = decimal.Parse(parsed[1].Replace('.', ','));
|
||||
schacht.DeckelHochWert = decimal.Parse(parsed[2].Replace('.', ','));
|
||||
schacht.DeckelHoehe = decimal.Parse(parsed[3].Replace('.', ','));
|
||||
schacht.DeckelRechtsWert = parseKoordinate(parsed[1]);
|
||||
schacht.DeckelHochWert = parseKoordinate(parsed[2]);
|
||||
schacht.DeckelHoehe = parseKoordinate(parsed[3]);
|
||||
}
|
||||
if(kennung == EKennung.SOHLE)
|
||||
{
|
||||
schacht.SohlRechtsWert = decimal.Parse(parsed[1].Replace('.', ','));
|
||||
schacht.SohlHochWert = decimal.Parse(parsed[2].Replace('.', ','));
|
||||
schacht.SohlHoehe = decimal.Parse(parsed[3].Replace('.', ','));
|
||||
schacht.SohlRechtsWert = parseKoordinate(parsed[1]);
|
||||
schacht.SohlHochWert = parseKoordinate(parsed[2]);
|
||||
schacht.SohlHoehe = parseKoordinate(parsed[3]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -20,23 +20,37 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML.Tests
|
||||
{
|
||||
new Schacht()
|
||||
{
|
||||
Objektbezeichnung = "15456498",
|
||||
SohlHoehe = 1457,
|
||||
DeckelHoehe = 1454,
|
||||
DeckelRechtsWert = 14,
|
||||
Objektbezeichnung = "SW01",
|
||||
SohlHoehe = 0112.7m,
|
||||
DeckelHoehe = 0108.8m,
|
||||
SohlHochWert = 123.93m,
|
||||
SohlRechtsWert = 123.92m,
|
||||
DeckelHochWert = 14785,
|
||||
},
|
||||
new Schacht()
|
||||
{
|
||||
Objektbezeichnung = "18656498",
|
||||
Objektbezeichnung = "SW02",
|
||||
SohlHoehe = 145,
|
||||
DeckelHoehe = 14,
|
||||
DeckelRechtsWert = 28,
|
||||
SohlHochWert = 14,
|
||||
SohlRechtsWert = 28,
|
||||
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();
|
||||
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