Beispiel #1
0
 public Segment(int segmentID, Knoop beginKnoop, Knoop eindKnoop, List <Punt> vertices)
 {
     SegmentID  = segmentID;
     BeginKnoop = beginKnoop;
     EindKnoop  = eindKnoop;
     Vertices   = vertices;
 }
Beispiel #2
0
        /*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);
        }