Ejemplo n.º 1
0
 public Segment(Knoop beginKnoop, Knoop eindKnoop, int segmentID, List <Punt> verticles)
 {
     this.BeginKnoop = beginKnoop;
     this.EindKnoop  = eindKnoop;
     this.SegmentID  = segmentID;
     this.Verticles  = verticles;
 }
Ejemplo n.º 2
0
        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");
        }