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); }
public void KnopenGenerator_GenereerKnopen() { Knoop[] knopen = new Knoop[20]; KnopenGenerator KG = new KnopenGenerator(); knopen = KG.GeneerKnopen(20); Assert.AreEqual(knopen.Length, 20); }
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))); }
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); }
//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); }
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); }
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(); } } }
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); }
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(); } } }
//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(); } } }
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); }
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 }); } } } }