public Segment(int segmentID, Knoop beginKnoop, Knoop eindKnoop, List <Punt> vertices) { SegmentID = segmentID; BeginKnoop = beginKnoop; EindKnoop = eindKnoop; Vertices = vertices; }
/*We overlopen per straat de graaf, en voegen gaandeweg de knopen en segmenten die we tegenkomen op. * MAAR: * - We zullen segmenten verschillende keren tegenkomen in 1 straat, aangezien ze in de graaf aan meerdere knopen gekoppeld zijn * - We zullen over de straten heen verschillende keren dezelfde knopen tegenkomen omdat deze knopen de verschillende straten verbinden * * Dus ik hou van beide bij welke er al uitgeprint zijn! * */ public static void PrintDocumenten(List <Straat> straten) { if (File.Exists(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Straten.txt") && File.Exists(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Segmenten.txt") && File.Exists(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Knopen.txt") && File.Exists(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Punten.txt")) { File.Delete(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Straten.txt"); File.Delete(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Segmenten.txt"); File.Delete(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Knopen.txt"); File.Delete(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Punten.txt"); } List <int> uitgeprinteSegmentenID = new List <int>(); List <int> uitgeprinteKnopenID = new List <int>(); using StreamWriter writer = File.CreateText(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Straten.txt"); using StreamWriter writer2 = File.CreateText(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Segmenten.txt"); using StreamWriter writer3 = File.CreateText(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Knopen.txt"); using StreamWriter writer4 = File.CreateText(@"C:\Users\Sieglinde\Documents\Programmeren\Labo_Straatmodel\Punten.txt"); writer.WriteLine("StraatID;Straatnaam;Gemeente;Provincie;GraafID;Lengte"); writer2.WriteLine("SegmentID;BeginknoopID;EindknoopID;straatID"); writer3.WriteLine("KnoopID;X;Y"); writer4.WriteLine("X,Y,SegmentID, positie"); foreach (Straat straat in straten) { writer.WriteLine($"{straat.StraatID};{straat.Straatnaam.Trim()};{straat.Gemeente};{straat.Provincie};{straat.Graaf.GraafID};{straat.Lengte}"); Dictionary <Knoop, List <Segment> > map = straat.Graaf.Map; foreach (KeyValuePair <Knoop, List <Segment> > knoopMetSegmenten in map) { Knoop knoop = knoopMetSegmenten.Key; if (!uitgeprinteKnopenID.Contains(knoop.KnoopID)) { writer3.WriteLine($"{knoop.KnoopID};{knoop.Punt.X};{knoop.Punt.Y}"); uitgeprinteKnopenID.Add(knoop.KnoopID); } foreach (Segment segment in knoopMetSegmenten.Value) { if (!uitgeprinteSegmentenID.Contains(segment.SegmentID)) { List <Punt> puntenlijst = segment.Vertices; //De eerste en laatste waarde van de vertices knip ik er hier af, die zitten al in mijn tekstbestand van begin en eindknoop!! for (int i = 1; i < puntenlijst.Count - 1; i++) { writer4.WriteLine($"{puntenlijst[i].X};{puntenlijst[i].Y};{segment.SegmentID};{i}"); } writer2.WriteLine($"{segment.SegmentID};{segment.BeginKnoop.KnoopID};{segment.EindKnoop.KnoopID};{straat.StraatID}"); uitgeprinteSegmentenID.Add(segment.SegmentID); } } } } }
public static Dictionary <int, List <Segment> > LeesSegmenten(string path) { Dictionary <int, List <Segment> > straatIDSegmentlijst = new Dictionary <int, List <Segment> >(); using (StreamReader sr = File.OpenText(path)) { string input = null; sr.ReadLine(); while ((input = sr.ReadLine()) != null) { string[] inputs = input.Split(';'); if (!(int.Parse(inputs[6]) == -9 && int.Parse(inputs[7]) == -9)) { int segmentID = int.Parse(inputs[0]); List <Punt> vertices = new List <Punt>(); string stringMetPunten = inputs[1].Remove(0, 12); //Punten zoeken, deze moeten in de List<punt> vetrices van het segment komen. string stringMetPuntenZonderHaken = stringMetPunten.Trim('(', ')', ' '); string[] xys = stringMetPuntenZonderHaken.Split(','); foreach (string xy in xys) { string xyTrimmed = xy.Trim(' '); string[] xeny = xyTrimmed.Split(' '); Punt punt = new Punt(double.Parse(xeny[0].Trim('(')), double.Parse(xeny[1])); vertices.Add(punt); } Knoop beginknoop = new Knoop(int.Parse(inputs[4]), vertices[0]); //Eerste punt van de vertices is de beginknoop, laatste punt is de eindknoop! Knoop eindknoop = new Knoop(int.Parse(inputs[5]), vertices[vertices.Count - 1]); Segment segment = new Segment(segmentID, beginknoop, eindknoop, vertices); // segmenten toevoegen aan een dictionary die de straatID en segmenten bij die straat bijhoudt int straatID = int.Parse(inputs[6]); if (!(straatID == -9)) { if (straatIDSegmentlijst.ContainsKey(straatID)) //als er al een record in de dictionary zit voor de straat { straatIDSegmentlijst[straatID].Add(segment); } else //anders nieuwe record toevoegen en segment aan die lijst toevoegen { straatIDSegmentlijst.Add(straatID, new List <Segment>()); straatIDSegmentlijst[straatID].Add(segment); } } int straatID2 = int.Parse(inputs[7]); if (!(straatID2 == -9) && (straatID2 != straatID)) { if (straatIDSegmentlijst.ContainsKey(straatID2)) //als er al een record in de dictionary zit voor de straat { straatIDSegmentlijst[straatID2].Add(segment); } else { straatIDSegmentlijst.Add(straatID2, new List <Segment>()); //Nieuwe record in dictionary toevoegen straatIDSegmentlijst[straatID2].Add(segment); } } } } } return(straatIDSegmentlijst); }