Example #1
0
        private static void ExportGraaf(Graaf g)
        {
            int graafId = g.Id;

            using (SqlConnection conn = new SqlConnection(_connString))
            {
                string sql = "INSERT INTO Graaf(Id)" +
                             "VALUES (@Id);";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.Add("@Id", SqlDbType.Int);
                cmd.Parameters["@Id"].Value = graafId;
                try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            if (g.Map != null)
            {
                foreach (var segment in g.Map)
                {
                    if (!_weggeschrevenSegmenten.Contains(segment.Id))
                    {
                        ExportSegment(segment);
                        _weggeschrevenSegmenten.Add(segment.Id);
                    }
                    ExportTussenTabel(graafId, segment.Id, "GraafId_SegmentId");
                }
            }
        }
Example #2
0
        //hulpmethode
        public Graaf BouwGraaf(List <Segment> segmenten, int straatId)
        {
            Dictionary <Knoop, List <Segment> > map = new Dictionary <Knoop, List <Segment> >();

            foreach (Segment seg in segmenten)
            {
                if (map.ContainsKey(seg.BeginKnoop))
                {
                    map[seg.BeginKnoop].Add(seg);
                }
                else
                {
                    map.Add(seg.BeginKnoop, new List <Segment> {
                        seg
                    });
                }
                if (map.ContainsKey(seg.EindKnoop))
                {
                    map[seg.EindKnoop].Add(seg);
                }
                else
                {
                    map.Add(seg.EindKnoop, new List <Segment> {
                        seg
                    });
                }
            }
            Graaf result = new Graaf(straatId, map);

            return(result);
        }
Example #3
0
        //
        // geeft al de straten die in provincie>gemeente>straat zitten een wegsegment terug.
        // Wegsegmenten werden gemaakt door MaakSegmenten_vanDocument().
        public void GeefStratenWegSegment(List <Straat> stratenLijst)
        {
            List <Segment> wegSegmentenLijst = new List <Segment>();

            //duurt 20 sec
            wegSegmentenLijst = MaakSegmenten_vanDocument().OrderBy(o => o.linksStraatnaamID).ToList();
            //  v  idk yet, neemt veel in
            //int x = wegSegmentenLijst.RemoveAll(wsg => !provincies.Any(p => p.gemeenteLijst.Any
            //        (g => g.stratenNaamId.Contains(wsg.linksStraatnaamID.ToString())
            //        || g.stratenNaamId.Contains(wsg.rechtsStraatnaamID.ToString()))));

            List <Segment> wegSegmentenLijst_VoorHuidige_straat;

            for (int i = 0; i < stratenLijst.Count(); i++)
            {
                wegSegmentenLijst_VoorHuidige_straat = new List <Segment>();


                foreach (Segment se in wegSegmentenLijst.Where(ws => ws.linksStraatnaamID <= stratenLijst[i].straatID + 1 &&
                                                               ws.linksStraatnaamID >= stratenLijst[i].straatID - 1
                                                               ))
                {
                    if (se.linksStraatnaamID.Equals(stratenLijst[i].straatID))
                    {
                        if (wegSegmentenLijst_VoorHuidige_straat.Count.Equals(0) ||
                            !wegSegmentenLijst_VoorHuidige_straat.Exists(segm => segm.beginknoop.Equals(se.beginknoop) && segm.eindknoop.Equals(se.eindknoop)
                                                                         ))
                        {
                            wegSegmentenLijst_VoorHuidige_straat.Add(se);
                        }
                        else
                        {
                            Segment segmKop = wegSegmentenLijst_VoorHuidige_straat.Where(segm => segm.beginknoop.Equals(se.beginknoop) &&
                                                                                         segm.eindknoop.Equals(se.eindknoop)).First();
                            if (segmKop.Length > se.Length)
                            {
                                //doe niets
                            }
                            else
                            {
                                wegSegmentenLijst_VoorHuidige_straat.Add(se);
                                wegSegmentenLijst_VoorHuidige_straat.Remove(segmKop);
                            }
                        }
                    }
                }
                if (wegSegmentenLijst_VoorHuidige_straat.Count > 0)
                {
                    Graaf graafx = Graaf.buildGraaf(wegSegmentenLijst_VoorHuidige_straat);
                    stratenLijst[i].graaf = graafx;

                    stratenLijst[i].StraatLengthBerekenen();

                    if (stratenLijst[i].Length == 0)
                    {
                        stratenLijst.Remove(stratenLijst[i]);
                    }

                    List <Segment> toRemove = new List <Segment>();
                    toRemove = wegSegmentenLijst_VoorHuidige_straat;
                    foreach (Segment item in toRemove)
                    {
                        wegSegmentenLijst.Remove(item);
                    }
                }
            }
        }
        // GraafBestand.txt(>GraafId; KnoopId; knoop x punt; knoop y punt; (segmID;segm.beginknoop.knoopID;segm.eindknoop.knoopID)[(punt.x,punt.y)(punt.x,punt.y)...]<)
        //geeft Graaf lijst terug
        public List <Graaf> getGraafenLijst()
        {
            //deze code is niet bepaald mooi, maar het werkt, en ik ben er wel beetje trots op :)
            getalleknopen    = new List <Knoop>();
            getallesegmenten = new List <Segment>();

            List <Graaf>  graafLijst = new List <Graaf>();
            List <string> GraafInfoLIJN;

            using (FileStream fs = File.Open(@"..\..\..\..\dataVanTool1\GraafTest2.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                using (BufferedStream bs = new BufferedStream(fs))
                    using (StreamReader sreader = new StreamReader(bs))
                    {
                        string input = null;
                        //sla de eerste regel over.
                        sreader.ReadLine();

                        Graaf dummyGraaf;
                        while ((input = sreader.ReadLine()) != null)
                        {
                            GraafInfoLIJN = new List <string>();
                            string woord = input;

                            //Splits het tekstbestand op per graaf sinds elke graaf begint met een '>' teken.
                            string[] wholeLine = woord.Split('>').Where(val => val != "").ToArray();;
                            string   x         = wholeLine[0];

                            //dit lijn vergemakelijkt het later om de tekst te manipuleren.
                            string[] wholeLine1 = x.Replace(")]) ", ")]); ").Replace(")])<", ")]); ").Split(';');

                            //doet bv. "graafID9" => "9".
                            wholeLine1[0] = wholeLine1[0].Replace("graafID", "");

                            //maak graaf aan met id, gaat hij voor elke graaf doen.
                            dummyGraaf = new Graaf(Convert.ToInt32(wholeLine1[0]));

                            //verwijder de id [0] van de te bewerken data (want de id werd al gebruikt)
                            wholeLine1 = wholeLine1.Skip(1).ToArray();
                            //maakt knopenLijst opnieuw leeg aan, hier komen al de knopen voor de graaf.
                            List <Knoop> knopen = new List <Knoop>();

                            //gaat meestal tijdelijk een knoopid, x, y punten bijhouden
                            List <String> knooptekst = new List <string>();

                            //overloop de graaf tot zijn tekst opgebruikt is
                            //mijn manier van werken is de lijst steeds te verminderen door lijnen te verwijderen eens ik het gebruikt heb.
                            while (wholeLine1.Count() != 0)
                            {
                                //graaf tekst is op gebruikt? voeg graaf toe aan de lijst die je gaat terug geven.
                                if (wholeLine1[0] == " ")
                                {
                                    foreach (Knoop knp in knopen)
                                    {
                                        dummyGraaf.map.Add(knp, knp.segmenten);
                                        //nodig gehad om dbo.Knoop aan te maken
                                        //getalleknopen.Add(knp);
                                        foreach (Segment seg in knp.segmenten)
                                        {
                                            getallesegmenten.Add(seg);
                                        }
                                    }
                                    graafLijst.Add(dummyGraaf);
                                    wholeLine1 = wholeLine1.Skip(1).ToArray();
                                }

                                for (int i = 0; i < wholeLine1.Count(); i++)
                                { //is de volgende info een knoop?
                                    if (wholeLine1[0].StartsWith(" KnoopId"))
                                    {
                                        knooptekst    = wholeLine1.Take(3).ToList();
                                        knooptekst[0] = knooptekst[0].Replace(" KnoopId,puntx,punty: ", "");
                                        knopen.Add(new Knoop(Convert.ToInt32(knooptekst[0]), new Punt(Convert.ToDouble(knooptekst[1]), Convert.ToDouble(knooptekst[2]))));
                                        wholeLine1 = wholeLine1.Skip(3).ToArray();
                                    }
                                    //is de volgende info een segment?
                                    if (wholeLine1[0].StartsWith("( segmentID") ||
                                        wholeLine1[0].StartsWith(" segmentID,be")
                                        )
                                    {
                                        // neemt de segmentID,beginknoop.knoopID,eindknoop.knoopID van een knoop
                                        List <String> segmentTekst = wholeLine1.Take(5).ToList();
                                        segmentTekst[0] = segmentTekst[0].Replace("( segmentID,beginknoop.knoopID,eindknoop.knoopID,linksStraatnaamID,rechtsStraatnaamID: ", "");
                                        segmentTekst[0] = segmentTekst[0].Replace(" segmentID,beginknoop.knoopID,eindknoop.knoopID,linksStraatnaamID,rechtsStraatnaamID: ", "");

                                        // maakt een segment van die (segmentID,beginknoop.knoopID,eindknoop.knoopID van een knoop)
                                        Segment dummySeg = new Segment(Convert.ToInt32(segmentTekst[0]), Convert.ToInt32(segmentTekst[1]), Convert.ToInt32(segmentTekst[2]), Convert.ToInt32(segmentTekst[3]), Convert.ToInt32(segmentTekst[4]));

                                        // verwijder de 3 gebruikte lijnen
                                        wholeLine1 = wholeLine1.Skip(5).ToArray();

                                        //nu de punten van de segment hierboven ophalen
                                        string[]    punten      = wholeLine1[0].Replace(";[(", "").Split(']');
                                        List <Punt> puntenLijst = new List <Punt>();

                                        punten[0] = punten[0].Replace("[(", "").Replace("(", "".Replace(")", ""));
                                        List <String> puntenApart = punten[0].Split(')').ToList();

                                        puntenApart.ForEach(lijn =>
                                        {
                                            if (lijn != "")
                                            {
                                                String[] lx = lijn.Split(",");
                                                dummySeg.punten_verticles.Add(new Punt(Convert.ToDouble(lx[0]), Convert.ToDouble(lx[1])));
                                            }
                                        }); knopen.Where(k => k.knoopID == Convert.ToInt32(knooptekst[0])).First().segmenten.Add(dummySeg);

                                        wholeLine1 = wholeLine1.Skip(1).ToArray();

                                        //punten heeft altijd een Lijst<Punt> op punten[0]
                                        //maar soms neemt die de volgende segm mee en die komt dan naar punten[1]
                                        //enkel als de knoop meerdere segm heeft
                                        if (punten.Length > 0)
                                        {
                                            if (punten[1] != ")")
                                            {
                                                punten[1] = punten[1].Replace(") segmentID,beginknoop.knoopID,eindknoop.knoopID,linksStraatnaamID,rechtsStraatnaamID: ", "");
                                            }
                                            ;
                                        }
                                    }
                                }
                            }
                        }
                        return(graafLijst);
                    }
        }
Example #5
0
 public void InputGraaf(Node startNode, Node eindNode, List <Node> list)
 {
     g      = new Graaf(list);
     nodess = g.Dijkstra(startNode, eindNode);
     g      = null;
 }
Example #6
0
        //extra ter vervollediging
        public Gemeente ReturnGemeenteVoorGemeenteNaam(string gemeenteNaam)
        {
            string gemeenteQuery = "SELECT * FROM dbo.gemeente WHERE Naam=@gemeenteNaam";
            string straatQuery   = "SELECT * FROM dbo.straat JOIN gemeenteStraatLink ON gemeenteStraatLink.StraatId = straat.Id WHERE gemeenteStraatLink.GemeenteId = @GemeenteId";

            string segmentQuery = "SELECT * FROM dbo.segment JOIN straatSegmenten ON straatSegmenten.SegmentId = segment.Id WHERE straatId = @StraatId";
            string knoopQuery   = "SELECT punt.X,punt.Y FROM dbo.knoop JOIN punt ON knoop.PuntId = Punt.Id WHERE knoop.Id = @KnoopId";
            string puntQuery    = "SELECT * FROM dbo.punt JOIN dbo.vertices ON punt.Id=vertices.PuntId WHERE vertices.segmentId = @segmentId";

            SqlConnection connection = getConnection();

            using (SqlCommand knoopCommand = connection.CreateCommand())
                using (SqlCommand puntCommand = connection.CreateCommand())
                    using (SqlCommand segmentCommand = connection.CreateCommand())
                        using (SqlCommand gemeenteCommand = connection.CreateCommand())
                            using (SqlCommand straatCommand = connection.CreateCommand())
                            {
                                gemeenteCommand.CommandText = gemeenteQuery;
                                gemeenteCommand.Parameters.Add(new SqlParameter("@GemeenteNaam", SqlDbType.NVarChar));
                                gemeenteCommand.Parameters["@GemeenteNaam"].Value = gemeenteNaam;

                                straatCommand.CommandText = straatQuery;
                                straatCommand.Parameters.Add(new SqlParameter("@GemeenteId", SqlDbType.Int));

                                segmentCommand.CommandText = segmentQuery;
                                segmentCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));

                                knoopCommand.CommandText = knoopQuery;
                                knoopCommand.Parameters.Add(new SqlParameter("@KnoopId", SqlDbType.Int));

                                puntCommand.CommandText = puntQuery;
                                puntCommand.Parameters.Add(new SqlParameter("@SegmentId", SqlDbType.Int));

                                connection.Open();

                                try
                                {
                                    SqlDataReader reader = gemeenteCommand.ExecuteReader();
                                    reader.Read();
                                    int gemeenteId = (int)reader["Id"];
                                    reader.Close();
                                    List <int>    straatIds   = new List <int>();
                                    List <string> straatNamen = new List <string>();
                                    straatCommand.Parameters["@GemeenteId"].Value = gemeenteId;
                                    reader = straatCommand.ExecuteReader();
                                    Gemeente gemeente = new Gemeente(gemeenteId, gemeenteNaam);
                                    while (reader.Read())
                                    {
                                        straatIds.Add((int)reader["Id"]);
                                        straatNamen.Add((string)reader["Naam"]);
                                    }
                                    reader.Close();
                                    for (int index = 0; index < straatIds.Count; index++)
                                    {
                                        segmentCommand.Parameters["@StraatId"].Value = straatIds[index];
                                        reader = segmentCommand.ExecuteReader();
                                        List <Segment> segmenten     = new List <Segment>();
                                        List <int>     segmentIds    = new List <int>();
                                        List <int>     beginKnoopIds = new List <int>();
                                        List <int>     eindKnoopIds  = new List <int>();
                                        while (reader.Read())
                                        {
                                            segmentIds.Add((int)reader["Id"]);
                                            beginKnoopIds.Add((int)reader["BeginKnoopId"]);
                                            eindKnoopIds.Add((int)reader["EindKnoopId"]);
                                        }
                                        reader.Close();

                                        //hier beginnen we te loopen om onze segmenten op te bouwen.
                                        for (int i = 0; i < segmentIds.Count; i++)
                                        {
                                            knoopCommand.Parameters["@KnoopId"].Value = beginKnoopIds[i];
                                            reader = knoopCommand.ExecuteReader();
                                            reader.Read();
                                            double beginX = (double)reader["X"];
                                            double beginY = (double)reader["Y"];
                                            reader.Close();

                                            knoopCommand.Parameters["@KnoopId"].Value = eindKnoopIds[i];
                                            reader = knoopCommand.ExecuteReader();
                                            reader.Read();
                                            double eindX = (double)reader["X"];
                                            double eindY = (double)reader["Y"];
                                            reader.Close();

                                            puntCommand.Parameters["@SegmentId"].Value = segmentIds[i];
                                            reader = puntCommand.ExecuteReader();
                                            List <Punt> punten = new List <Punt>();
                                            while (reader.Read())
                                            {
                                                punten.Add(new Punt((double)reader["X"], (double)reader["Y"]));
                                            }
                                            reader.Close();
                                            Knoop beginKnoop = new Knoop(beginKnoopIds[i], new Punt(beginX, beginY));
                                            Knoop eindKnoop  = new Knoop(eindKnoopIds[i], new Punt(eindX, eindY));
                                            segmenten.Add(new Segment(segmentIds[i], beginKnoop, eindKnoop, punten));
                                        }

                                        Graaf  tempGraaf  = BouwGraaf(segmenten, straatIds[index]);
                                        Straat tempstraat = new Straat(straatIds[index], straatNamen[index], tempGraaf, gemeente);
                                    }



                                    return(gemeente);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex);
                                    return(null);
                                }
                                finally
                                {
                                    connection.Close();
                                }
                            }
        }
Example #7
0
        public Straat ReturnStraatInGemeente(int straatId, Gemeente gemeente)
        {
            string        straatQuery  = "SELECT * FROM dbo.straat WHERE Id=@StraatId";
            string        segmentQuery = "SELECT * FROM dbo.segment JOIN straatSegmenten ON straatSegmenten.SegmentId = segment.Id WHERE straatId = @StraatId";
            string        knoopQuery   = "SELECT punt.X,punt.Y FROM dbo.knoop JOIN punt ON knoop.PuntId = Punt.Id WHERE knoop.Id = @KnoopId";
            string        puntQuery    = "SELECT * FROM dbo.punt JOIN dbo.vertices ON punt.Id=vertices.PuntId WHERE vertices.segmentId = @segmentId ORDER BY vertices.PuntId";
            SqlConnection connection   = getConnection();

            using (SqlCommand puntCommand = connection.CreateCommand())
                using (SqlCommand knoopCommand = connection.CreateCommand())
                    using (SqlCommand segmentCommand = connection.CreateCommand())
                        using (SqlCommand straatCommand = connection.CreateCommand())
                        {
                            straatCommand.CommandText = straatQuery;
                            straatCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));
                            straatCommand.Parameters["@StraatId"].Value = straatId;

                            segmentCommand.CommandText = segmentQuery;
                            segmentCommand.Parameters.Add(new SqlParameter("@StraatId", SqlDbType.Int));
                            segmentCommand.Parameters["@StraatId"].Value = straatId;

                            knoopCommand.CommandText = knoopQuery;
                            knoopCommand.Parameters.Add(new SqlParameter("@KnoopId", SqlDbType.Int));

                            puntCommand.CommandText = puntQuery;
                            puntCommand.Parameters.Add(new SqlParameter("@SegmentId", SqlDbType.Int));
                            connection.Open();

                            try
                            {
                                List <Segment> segmenten = new List <Segment>();

                                SqlDataReader reader = straatCommand.ExecuteReader();
                                reader.Read();
                                string straatnaam = (string)reader["Naam"];
                                reader.Close();

                                reader = segmentCommand.ExecuteReader();
                                List <int> segmentIds    = new List <int>();
                                List <int> beginKnoopIds = new List <int>();
                                List <int> eindKnoopIds  = new List <int>();
                                while (reader.Read())
                                {
                                    segmentIds.Add((int)reader["Id"]);
                                    beginKnoopIds.Add((int)reader["BeginKnoopId"]);
                                    eindKnoopIds.Add((int)reader["EindKnoopId"]);
                                }
                                reader.Close();

                                //hier beginnen we te loopen om onze segmenten op te bouwen.
                                for (int i = 0; i < segmentIds.Count; i++)
                                {
                                    knoopCommand.Parameters["@KnoopId"].Value = beginKnoopIds[i];
                                    reader = knoopCommand.ExecuteReader();
                                    reader.Read();
                                    double beginX = (double)reader["X"];
                                    double beginY = (double)reader["Y"];
                                    reader.Close();

                                    knoopCommand.Parameters["@KnoopId"].Value = eindKnoopIds[i];
                                    reader = knoopCommand.ExecuteReader();
                                    reader.Read();
                                    double eindX = (double)reader["X"];
                                    double eindY = (double)reader["Y"];
                                    reader.Close();

                                    puntCommand.Parameters["@SegmentId"].Value = segmentIds[i];
                                    reader = puntCommand.ExecuteReader();
                                    Knoop       beginKnoop = new Knoop(beginKnoopIds[i], new Punt(beginX, beginY));
                                    Knoop       eindKnoop  = new Knoop(eindKnoopIds[i], new Punt(eindX, eindY));
                                    List <Punt> punten     = new List <Punt>()
                                    {
                                        beginKnoop.SegmentPunt
                                    };
                                    while (reader.Read())
                                    {
                                        punten.Add(new Punt((double)reader["X"], (double)reader["Y"]));
                                    }
                                    reader.Close();
                                    punten.Add(eindKnoop.SegmentPunt);
                                    segmenten.Add(new Segment(segmentIds[i], beginKnoop, eindKnoop, punten));
                                }

                                Graaf tempGraaf = BouwGraaf(segmenten, straatId);

                                Straat returnStraat = new Straat(straatId, straatnaam, tempGraaf, gemeente);
                                return(returnStraat);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex);
                                return(null);
                            }
                            finally
                            {
                                connection.Close();
                            }
                        }
        }
        //Console.WriteLine("testen");
        //Belgie belg = TestData();
        ////Knoop knoop1 = new Knoop(30, new Punt(2.45, 3.45));
        ////dp.FillDataBase();
        //}

        static Belgie TestData()
        {
            Punt  testPunt1 = new Punt(2.45, 3.45);
            Punt  testPunt2 = new Punt(3.45, 4.45);
            Punt  testPunt3 = new Punt(4.45, 5.45);
            Punt  testPunt4 = new Punt(5.45, 6.45);
            Punt  testPunt5 = new Punt(6.45, 7.45);
            Knoop knoop1    = new Knoop(30, testPunt1);
            Knoop knoop2    = new Knoop(40, testPunt2);
            Knoop knoop3    = knoop1;
            Knoop knoop4    = new Knoop(50, testPunt3);

            List <Punt> puntlijstSeg1 = new List <Punt> {
                testPunt4
            };
            List <Punt> puntlijstSeg2 = new List <Punt> {
                testPunt5
            };

            Segment testSegment1 = new Segment(112, knoop1, knoop2, puntlijstSeg1);
            Segment testSegment2 = new Segment(113, knoop3, knoop4, puntlijstSeg2);

            Dictionary <Knoop, List <Segment> > testMap1 = new Dictionary <Knoop, List <Segment> >();

            testMap1.Add(knoop1, new List <Segment> {
                testSegment1
            });
            testMap1.Add(knoop2, new List <Segment> {
                testSegment1
            });
            Dictionary <Knoop, List <Segment> > testMap2 = new Dictionary <Knoop, List <Segment> >();

            testMap2.Add(knoop1, new List <Segment> {
                testSegment2
            });
            testMap2.Add(knoop2, new List <Segment> {
                testSegment2
            });

            Graaf testGraaf1 = new Graaf(250, testMap1);
            Graaf testGraaf2 = new Graaf(260, testMap2);



            Gemeente  testGemeente  = new Gemeente(12, "testGemeente");
            Straat    testStraat1   = new Straat(10, "TestStraat1", testGraaf1, testGemeente);
            Straat    testStraat2   = new Straat(20, "TestStraat2", testGraaf2, testGemeente);
            Provincie testProvincie = new Provincie(1, "testProvincie");

            testProvincie.VoegGemeenteToe(testGemeente);
            Belgie belg = new Belgie(new List <Provincie>()
            {
                testProvincie
            });

            DataProcessing dp = new DataProcessing(belg);

            dp.CompletelyFillDataBase();

            return(belg);
        }
Example #9
0
        private void Read()
        {
            GenericParser reader = new GenericParser(Config.Path + "/" + Config.Straatnamen)
            {
                ColumnDelimiter   = ';',
                MaxBufferSize     = 49600,
                FirstRowHasHeader = true
            };

            while (reader.Read())
            {
                int    id         = Convert.ToInt32(reader[0].Trim());
                string straatNaam = reader[1].Trim();
                if (_idStraatnaam.ContainsKey(id))
                {
                    continue;
                }
                _idStraatnaam.Add(id, straatNaam);
            }
            reader = new GenericParser(Config.Path + "/" + Config.StraatIdGemeenteId)
            {
                ColumnDelimiter   = ';',
                MaxBufferSize     = 49600,
                FirstRowHasHeader = true
            };
            int graafIdCounter = 0;

            while (reader.Read())
            {
                int gemeenteId   = Convert.ToInt32(reader[1].Trim());
                int straatNaamId = Convert.ToInt32(reader[0].Trim());

                Graaf graaf = new Graaf();
                graaf.Id = ++graafIdCounter;

                var map = _wrDataProvider.GetSegmentListByStraatId(straatNaamId);
                if (map == null)
                {
                    continue;
                }
                graaf.Map = map;

                string straatnaam = _idStraatnaam.ContainsKey(straatNaamId) ? _idStraatnaam[straatNaamId] : null;
                if (straatnaam != null)
                {
                    Straat s = new Straat(straatNaamId, straatnaam, gemeenteId, graaf);


                    if (_gemIdStraten.ContainsKey(gemeenteId))
                    {
                        _gemIdStraten[gemeenteId].Add(s);
                    }
                    else
                    {
                        _gemIdStraten.Add(gemeenteId, new List <Straat> {
                            s
                        });
                    }
                }
            }
        }