XML exporter erweitert
This commit is contained in:
@@ -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,9 +58,15 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
private void DoCollectives2Base(XmlElement dataCollectiveElement)
|
||||
{
|
||||
XmlElement parentElement = DoRow(dataCollectiveElement, "Stammdatenkollektiv");
|
||||
foreach(Schacht schacht in _schaechte)
|
||||
|
||||
foreach (Kanal haltung in _haltungen)
|
||||
{
|
||||
XmlElement xmlElement = DoSchachtRow(schacht,parentElement, "AbwassertechnischeAnlage");
|
||||
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;
|
||||
@@ -133,7 +181,7 @@ namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
private XmlElement DoRowValue(XmlElement rowElement, string originColName, string value)
|
||||
{
|
||||
XmlElement xmlElement = CreateElementFor(originColName, rowElement);
|
||||
if(value != "")
|
||||
if (value != "")
|
||||
{
|
||||
xmlElement.InnerText = value;
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user