示例#1
0
 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);
         }
     }
 }
示例#3
0
 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);
        }