public Segment(int iD, Knoop beginKnoop, Knoop eindKnoop, List <Punt> punten) { SegmentID = iD; BeginKnoop = beginKnoop; EindKnoop = eindKnoop; Vertices = punten; BerekenLengte(); }
public static void BouwGravenVerzameling(Dictionary <string, Graaf> idGraafVerzameling, string straatID, Segment segment) { //de straten zonder naam eruit filteren, zou ik eigenlijk moeten verplaatsen naar erbuiten if (straatID != "-9") { Knoop beginKnoop = segment.BeginKnoop; Knoop eindKnoop = segment.EindKnoop; //kijken of ik al zo een straat heb if (idGraafVerzameling.ContainsKey(straatID)) { //als de straat al bestaat, kijken of die knoop er al in zit, dan toevoegen aan de lijst, anders de knoop met een nieuwe lijst toevoegen if (idGraafVerzameling[straatID].Map.ContainsKey(beginKnoop)) { //kijken of het segment zich niet al in de lijst bevindt(bijvoorbeeld als links en rechts dezelfde straat zijn. of als er dubbele data zou zijn if (!idGraafVerzameling[straatID].Map[beginKnoop].Contains(segment)) { idGraafVerzameling[straatID].Map[beginKnoop].Add(segment); } } else { idGraafVerzameling[straatID].Map.Add(beginKnoop, new List <Segment> { segment }); } //hetzelfde maar met de andere knoop. if (idGraafVerzameling[straatID].Map.ContainsKey(eindKnoop)) { //kijken of het segment zich niet al in de lijst bevindt(bijvoorbeeld als links en rechts dezelfde straat zijn. of als er dubbele data zou zijn if (!idGraafVerzameling[straatID].Map[eindKnoop].Contains(segment)) { idGraafVerzameling[straatID].Map[eindKnoop].Add(segment); } } else { idGraafVerzameling[straatID].Map.Add(eindKnoop, new List <Segment> { segment }); } } else { Dictionary <Knoop, List <Segment> > nieuweMapEntry = new Dictionary <Knoop, List <Segment> >(); nieuweMapEntry.Add(beginKnoop, new List <Segment> { segment }); nieuweMapEntry.Add(eindKnoop, new List <Segment> { segment }); Graaf nieuweGraaf = new Graaf(int.Parse(straatID), nieuweMapEntry); idGraafVerzameling.Add(straatID, nieuweGraaf); } } }
public override bool Equals(object obj) { if (obj is Knoop) { Knoop temp = obj as Knoop; return(KnoopID == temp.KnoopID && SegmentPunt.Equals(temp.SegmentPunt)); } else { return(false); } }
public Dictionary <string, Graaf> MaakGraven(string path) { Dictionary <string, Graaf> straatIdGraafKoppeling = new Dictionary <string, Graaf>(); string line; using (StreamReader r1 = new StreamReader(Path.Combine(path, "WRdata.csv"))) { r1.ReadLine(); while ((line = r1.ReadLine()) != null) { //de string onderverdelen in makkelijker te gebruiken variabelen string[] onteledeDelen = line.Split(";"); string wegsegmentID = onteledeDelen[0]; string segmentCoördinaten = onteledeDelen[1]; string beginWegKnoopID = onteledeDelen[4]; string eindWegKnoopID = onteledeDelen[5]; string linkseStraatnaamId = onteledeDelen[6]; string rechtsStraatnaamId = onteledeDelen[7]; // coordinaten ontleden // (217368.75 181577.0159999989, 217400.1099999994 181499.5159999989) voorbeeld string getrimdeCoordinaten = segmentCoördinaten.Substring(12, segmentCoördinaten.Length - 13); getrimdeCoordinaten = getrimdeCoordinaten.Replace(", ", ","); string[] coordinatenOntleding = getrimdeCoordinaten.Split(","); //collecties aanmaken List <double> xCoordinaten = new List <double>(); List <double> yCoordinaten = new List <double>(); List <Punt> puntenVerzameling = new List <Punt>(); //alle punten in comma's veranderen anders is het in het verkeerde formaat. //alle combinaties in specifieke x en y verzamelingen steken foreach (string xEnY in coordinatenOntleding) { string[] tijdelijkeCoordinaat = xEnY.Split(" "); string tmp = tijdelijkeCoordinaat[0].Replace(".", ","); xCoordinaten.Add(double.Parse(tmp)); tmp = tijdelijkeCoordinaat[1].Replace(".", ","); yCoordinaten.Add(double.Parse(tmp)); } //coordinaten in punten steken for (int i = 0; i < xCoordinaten.Count; i++) { puntenVerzameling.Add(new Punt(xCoordinaten[i], yCoordinaten[i])); } //de knopen voor dit segment aanmaken Knoop beginKnoop = new Knoop(int.Parse(beginWegKnoopID), puntenVerzameling[0]); Knoop eindKnoop = new Knoop(int.Parse(eindWegKnoopID), puntenVerzameling[puntenVerzameling.Count - 1]); // Het Segment aanmaken: Segment seg = new Segment(int.Parse(wegsegmentID), beginKnoop, eindKnoop, puntenVerzameling); //het skelet van mijn straat beginnen bouwen zonder de naam: dus een graaf gelinkt aan een ID BouwGravenVerzameling(straatIdGraafKoppeling, linkseStraatnaamId, seg); if (linkseStraatnaamId != rechtsStraatnaamId) { BouwGravenVerzameling(straatIdGraafKoppeling, rechtsStraatnaamId, seg); } } // einde van de loop } //dit is het einde van het document lezen, nu hebben we een hoop graven gekoppeld aan straatnaamIDs. return(straatIdGraafKoppeling); }