Exemplo n.º 1
0
        public void Afstandsberekenaar_BerekenAfstand2Knopen()
        {
            Knoop knoopVan = new Knoop(300, 300);
            Knoop knoopTot = new Knoop(800, 800);
            int   Afstand  = Afstandsberekenaar.BerekenAfstand2Knopen(knoopVan, knoopTot);

            Assert.AreEqual(707, Afstand);
        }
Exemplo n.º 2
0
        public void KnopenGenerator_GenereerKnopen()
        {
            Knoop[]         knopen = new Knoop[20];
            KnopenGenerator KG     = new KnopenGenerator();

            knopen = KG.GeneerKnopen(20);
            Assert.AreEqual(knopen.Length, 20);
        }
Exemplo n.º 3
0
        public static int BerekenAfstand2Knopen(Knoop knoopVan, Knoop knoopTot)
        {
            int dx = System.Math.Abs(knoopTot.getX() - knoopVan.getX());
            int dy = System.Math.Abs(knoopTot.getY() - knoopVan.getY());
            //voorkom te grote integers
            double wortel = System.Math.Sqrt((dx * dx) + (dy * dy));

            //converteer terug naar int
            return(System.Convert.ToInt32(System.Math.Floor(wortel)));
        }
Exemplo n.º 4
0
        private void Form1_Load_1(object sender, EventArgs e)
        {
            // maak knopen aan (hardcoded)
            Knoop h1  = new Knoop("H1");
            Knoop h2  = new Knoop("H2");
            Knoop h3  = new Knoop("H3");
            Knoop h4  = new Knoop("H4");
            Knoop h5  = new Knoop("H5");
            Knoop h6  = new Knoop("H6");
            Knoop h7  = new Knoop("H7");
            Knoop h8  = new Knoop("H8");
            Knoop h9  = new Knoop("H9");
            Knoop h10 = new Knoop("H10");

            knopen.Add(h1);
            knopen.Add(h2);
            knopen.Add(h3);
            knopen.Add(h4);
            knopen.Add(h5);
            knopen.Add(h6);
            knopen.Add(h7);
            knopen.Add(h8);
            knopen.Add(h9);
            knopen.Add(h10);

            // maak kanten aan (hardcoded)
            kanten.Add(new Kant(h1, h2, 20));
            kanten.Add(new Kant(h1, h3, 45));
            kanten.Add(new Kant(h1, h10, 45));
            kanten.Add(new Kant(h2, h3, 30));
            kanten.Add(new Kant(h2, h5, 25));
            kanten.Add(new Kant(h2, h8, 100));
            kanten.Add(new Kant(h2, h10, 30));
            kanten.Add(new Kant(h3, h4, 45));
            kanten.Add(new Kant(h4, h5, 75));
            kanten.Add(new Kant(h4, h6, 40));
            kanten.Add(new Kant(h5, h6, 75));
            kanten.Add(new Kant(h5, h8, 90));
            kanten.Add(new Kant(h6, h7, 80));
            kanten.Add(new Kant(h6, h9, 40));
            kanten.Add(new Kant(h7, h8, 15));
            kanten.Add(new Kant(h8, h9, 45));
            kanten.Add(new Kant(h8, h10, 50));

            // bepaal 'Minimum Spanning Tree' via prim algoritme
            MinimumSpanningTree mst = new MinimumSpanningTree();

            DataTable table = mst.BuildMatrixTable("PrimTable", knopen, kanten);

            FillGridView(table);

            List <Kant> geselecteerdeKanten = mst.Get(table, knopen, kanten);

            DisplayResult(geselecteerdeKanten);
        }
Exemplo n.º 5
0
        //genereer coordinaten van de knopen
        //eerste coordinaat naar rechts, tussen 50 en 1050
        //tweede coordinaat omlaag, tussen 300 en 1650
        public Knoop[] GeneerKnopen(int aantalKnopen)
        {
            Knoop[] knopen_gen = new Knoop[aantalKnopen];

            System.Random rnd = new System.Random();
            for (int i = 0; i <= aantalKnopen - 1; i++)
            {
                knopen_gen[i] = (new Knoop(rnd.Next(50, 1050), rnd.Next(300, 1650)));
            }
            return(knopen_gen);
        }
Exemplo n.º 6
0
        public void Afstandsberekenaar_BerekenLengteRoute()
        {
            Knoop[] Route = new Knoop[4];
            for (int i = 0; i < 4; i++)
            {
                Route[i] = new Knoop(i * 100, i * 200);
            }
            int Lengte = Afstandsberekenaar.BerekenRouteLengte(Route);

            Assert.AreEqual(1339, Lengte);
        }
Exemplo n.º 7
0
        public void AddKnoop(Knoop knoop)
        {
            SqlConnection connection = getConnection();
            string        knoopQuery = "INSERT INTO dbo.knoop VALUES(@Id, @puntId)";
            string        puntQuery  = "INSERT INTO dbo.punt (X,Y) output INSERTED.ID VALUES(@X, @Y)";

            using (SqlCommand puntCommand = connection.CreateCommand())
                using (SqlCommand knoopCommand = connection.CreateCommand())
                {
                    connection.Open();
                    SqlTransaction transaction = connection.BeginTransaction();
                    puntCommand.Transaction  = transaction;
                    knoopCommand.Transaction = transaction;
                    try
                    {
                        puntCommand.Parameters.Add(new SqlParameter("@X", SqlDbType.Float));
                        puntCommand.Parameters.Add(new SqlParameter("@Y", SqlDbType.Float));
                        puntCommand.CommandText            = puntQuery;
                        puntCommand.Parameters["@X"].Value = knoop.SegmentPunt.X;
                        puntCommand.Parameters["@Y"].Value = knoop.SegmentPunt.Y;
                        int puntId = (int)puntCommand.ExecuteScalar();

                        knoopCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int));
                        knoopCommand.Parameters.Add(new SqlParameter("@puntId", SqlDbType.Int));
                        knoopCommand.CommandText                 = knoopQuery;
                        knoopCommand.Parameters["@Id"].Value     = knoop.KnoopID;
                        knoopCommand.Parameters["@puntId"].Value = puntId;

                        knoopCommand.ExecuteNonQuery();
                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        Console.WriteLine(ex);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
        }
Exemplo n.º 8
0
        public void RouteBerekenaar1_ZoekRoute_controleer_lengte()
        {
            //voorbereiding: maak een aantal knopen
            int aantalKnoop = 15;

            Knoop[] knopen_gen = new Knoop[aantalKnoop];
            for (int i = 0; i < aantalKnoop; i++)
            {
                knopen_gen[i] = new Knoop(i * 100, i * 200);
            }

            //testuitvoering
            RouteBerekenaar1 RB1 = new RouteBerekenaar1();

            Knoop[] knopen_calc = RB1.ZoekRoute(knopen_gen);

            //controle route dmv bepalen lengte
            int Lengte = Afstandsberekenaar.BerekenRouteLengte(knopen_calc);

            Assert.AreEqual(6252, Lengte);
        }
Exemplo n.º 9
0
        public bool CheckKnoop(Knoop knoop)
        {
            SqlConnection connection = getConnection();
            string        query      = "SELECT COUNT(*) AS count FROM dbo.knoop WHERE Id=@Id";

            using (SqlCommand command = connection.CreateCommand())
            {
                command.CommandText = query;
                SqlParameter paramId = new SqlParameter();
                paramId.ParameterName = "@Id";
                paramId.DbType        = DbType.Int32;
                paramId.Value         = knoop.KnoopID;
                command.Parameters.Add(paramId);
                connection.Open();
                try
                {
                    IDataReader reader = command.ExecuteReader();
                    reader.Read();
                    int knoopCount = (int)reader["count"];

                    if (knoopCount == 1)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    throw new Exception("Incorrect SQL syntax in CheckKnoop");
                }
                finally
                {
                    connection.Close();
                }
            }
        }
Exemplo n.º 10
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();
                                }
                            }
        }
Exemplo n.º 11
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();
                            }
                        }
        }
Exemplo n.º 12
0
        //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);
        }
Exemplo n.º 13
0
        private void Read()
        {
            GenericParser reader = new GenericParser(Config.Path + "/" + Config.Data)
            {
                ColumnDelimiter   = ';',
                MaxBufferSize     = 40960,
                FirstRowHasHeader = true
            };

            while (reader.Read())
            {
                int linksStraatId  = Convert.ToInt32(reader[6].Trim());
                int rechtsStraatId = Convert.ToInt32(reader[7].Trim());
                if ((linksStraatId != -9) && (rechtsStraatId != -9))
                {
                    int wegsegmentId = Convert.ToInt32(reader[0].Trim());

                    string      geo        = reader[1];
                    int         startIndex = geo.IndexOf("(") + 1;
                    int         endIndex   = geo.IndexOf(")");
                    string      enkelInts  = geo.Substring(startIndex, endIndex - startIndex);
                    string[]    puntjes    = enkelInts.Split(',');
                    List <Punt> punten     = new List <Punt>();
                    foreach (string puntje in puntjes)
                    {
                        string   tss      = puntje.Replace('.', ',');
                        string[] puntData = tss.Trim(' ').Split(' ');

                        double x = Convert.ToDouble(puntData[0].Trim());
                        double y = Convert.ToDouble(puntData[1].Trim());
                        punten.Add(new Punt(x, y));
                    }
                    int     beginKnoopId = Convert.ToInt32(reader[4].Trim());
                    Knoop   beginKnoop   = new Knoop(beginKnoopId, punten[0]);
                    int     eindKnoopId  = Convert.ToInt32(reader[5].Trim());
                    Knoop   eindKnoop    = new Knoop(eindKnoopId, punten[punten.Count - 1]);
                    Segment nieuwSegment = new Segment(wegsegmentId, beginKnoop, eindKnoop, punten);


                    if (_straatIdSegmenten.ContainsKey(rechtsStraatId))
                    {
                        if (!_straatIdSegmenten[rechtsStraatId].Contains(nieuwSegment))
                        {
                            _straatIdSegmenten[rechtsStraatId].Add(nieuwSegment);
                        }
                    }
                    else
                    {
                        _straatIdSegmenten.Add(rechtsStraatId, new List <Segment> {
                            nieuwSegment
                        });
                    }

                    if (_straatIdSegmenten.ContainsKey(linksStraatId))
                    {
                        if (!_straatIdSegmenten[linksStraatId].Contains(nieuwSegment))
                        {
                            _straatIdSegmenten[linksStraatId].Add(nieuwSegment);
                        }
                    }
                    else
                    {
                        _straatIdSegmenten.Add(linksStraatId, new List <Segment> {
                            nieuwSegment
                        });
                    }
                }
            }
        }