public void MaakSegmentAan() { Console.WriteLine("Aanmaken van segmenten..."); List <Punt> allePunten = new List <Punt>(); //om mijn segment te krijgen moet ik knopen aanmaken, een segment bestaat uit een begin en eindknoop //voor een begin knoop moet ik mijn aller eerste punt(x,y) van mijn regel nemen //voor mijn eind knoop moet ik mijn aller laatste punt(x,y) van mijn regel nemen Punt beginPunt = null; Punt eindPunt = null; Knoop beginKnoop; Knoop eindKnoop; foreach (KeyValuePair <int, string[]> data in segmentLijst) { //data.Value[0] = wegsegmentID //data.Value[1] = geo //data.Value[2] = morfologie //data.Value[3] = status //data.Value[4] = beginwegknoopid //data.Value[5] = eindwegknoopid //data.Value[6] = linksstraatnaamID //data.Value[7] = RechtsstraatnaamID var GeoLinestring = data.Value[1].Split("("); // splitsen op geo en linsestring wegkrijgen var GeoBuitenHaakje = GeoLinestring[1].Split(")"); // splitsen op geo en de buiten ) wegrkijgen var GeoKoppels = GeoBuitenHaakje[0].Split(", "); // splitsen op geo per koppels dus [0] = x1,y1, [1] = x2,y2; for (int i = 0; i < GeoKoppels.Length; i++) // splitsen op geo per X en y coordinaat dus [0] = x, [1] = Y { var GeoPunten = GeoKoppels[i].Split(" "); // splitsen op geo per X en y coordinaat dus [0] = x, [1] = Y allePunten.Add(new Punt(double.Parse(GeoPunten[0]), double.Parse(GeoPunten[1]))); //List met punten opvullen //voor een begin knoop te krijgen moet ik mijn aller EERSTE begin x,y coordinaten nemen if (i == 0) { beginPunt = new Punt(double.Parse(GeoPunten[0]), double.Parse(GeoPunten[1])); } //voor een begin knoop te krijgen moet ik mijn aller LAATSTE begin x,y coordinaten nemen if (i == GeoKoppels.Length - 1) { eindPunt = new Punt(double.Parse(GeoPunten[0]), double.Parse(GeoPunten[1])); } } beginKnoop = new Knoop(int.Parse(data.Value[4]), beginPunt); eindKnoop = new Knoop(int.Parse(data.Value[5]), eindPunt); Segment segment = new Segment(beginKnoop, eindKnoop, int.Parse(data.Value[0]), allePunten); //checken of mijn linkerstraatID en rechterStraatID gelijk zijn //zo wel dan check ik of de Key ID al bestaat zo ja dan voeg ik hem toe zo niet dan maak ik een nieuwe aan //zo niet doe ik het zelfde maar voor elke ID dus zowel links als rechts int linkerID = int.Parse(data.Value[6]); int rechterID = int.Parse(data.Value[7]); if (linkerID == rechterID) { if (alleSegmenten.ContainsKey(linkerID)) { alleSegmenten[linkerID].Add(segment); } else { List <Segment> list = new List <Segment>(); list.Add(segment); alleSegmenten.Add(linkerID, list); } } else { List <Segment> list = new List <Segment>(); list.Add(segment); if (alleSegmenten.ContainsKey(linkerID)) { alleSegmenten[linkerID].Add(segment); } else { alleSegmenten.Add(linkerID, list); } if (alleSegmenten.ContainsKey(rechterID)) { alleSegmenten[rechterID].Add(segment); } else { alleSegmenten.Add(rechterID, list); } } } Console.WriteLine("Aanmaken van segmenten... OK"); }
public Knoop(int knoopID, Punt punt) { this.KnoopID = knoopID; this.Punt = punt; }