public Straat(int Id, string naam, Graaf graaf, Gemeente gemeente) { Graaf = graaf; StraatID = Id; Naam = naam; Gemeente = gemeente; gemeente.Straten.Add(this); 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); } } }
public override bool Equals(object obj) { if (obj is Graaf) { Graaf temp = obj as Graaf; return(GraafID == temp.GraafID && Map == temp.Map); } else { return(false); } }
public void ShowStraat() { List <Segment> segmenten = Graaf.GetSegmenten(); Console.WriteLine($"{StraatID}, {Naam}, {Gemeente.Naam}, {Gemeente.Provincie.Naam}"); Console.WriteLine($"aantal knopen: {Graaf.getKnopen().Count}"); Console.WriteLine($"aantal wegsegmenten: {segmenten.Count}"); foreach (KeyValuePair <Knoop, List <Segment> > pair in Graaf.Map) { Punt temp = pair.Key.SegmentPunt; Console.WriteLine($"Knoop[{pair.Key.KnoopID},[{temp.X};{temp.Y}]]"); foreach (Segment seg in pair.Value) { Console.WriteLine($" [segment:{seg.SegmentID},begin:{seg.BeginKnoop.KnoopID},eind:{seg.EindKnoop.KnoopID}]"); foreach (Punt punt in seg.Vertices) { Console.WriteLine($" ({punt.X};{punt.Y})"); } } } }
public Dictionary <string, Provincie> BouwStraten(string path, Dictionary <string, Graaf> straatIdGraafKoppeling) { #region setup List <string> filter = new List <string>(); //ID links Dictionary <string, List <string> > provincieIDGemeenteIDLink = new Dictionary <string, List <string> >(); Dictionary <string, List <string> > gemeenteIdStraatID = new Dictionary <string, List <string> >(); //ID en naam links Dictionary <string, string> gemeenteIdEnNaam = new Dictionary <string, string>(); Dictionary <string, string> straatIdEnNaam = new Dictionary <string, string>(); //datatypes Dictionary <string, Provincie> provincies = new Dictionary <string, Provincie>(); Dictionary <string, Gemeente> gemeenten = new Dictionary <string, Gemeente>(); Dictionary <string, Straat> straten = new Dictionary <string, Straat>(); #endregion #region file extracting using (StreamReader sr = new StreamReader(Path.Combine(path, "ProvincieIDsVlaanderen.csv"))) { string[] filterIDs = sr.ReadLine().Split(","); foreach (string id in filterIDs) { filter.Add(id); } } //provincies aanmaken en gemeenteIDs koppelen using (StreamReader sr = new StreamReader(Path.Combine(path, "ProvincieInfo.csv"))) { //gemeenteId; provincieId; taalCodeProvincieNaam; provincieNaam //1;1;nl;Antwerpen sr.ReadLine(); string line = ""; while ((line = sr.ReadLine()) != null) { string[] splitLine = line.Split(";"); string provincieId = splitLine[1]; string provincieNaam = splitLine[3]; string gemeenteId = splitLine[0]; if (splitLine[2] == "nl") { if (filter.Contains(provincieId)) { //kijken of mijn verzameling provincies deze al bevat if (!provincies.ContainsKey(provincieId)) { provincies.Add(provincieId, new Provincie(int.Parse(provincieId), provincieNaam)); } //mijn verzameling van provincieIDs gelinkt aan gemeenteIDs in orde brengen. if (provincieIDGemeenteIDLink.ContainsKey(provincieId)) { provincieIDGemeenteIDLink[provincieId].Add(gemeenteId); } else { provincieIDGemeenteIDLink.Add(provincieId, new List <string>()); provincieIDGemeenteIDLink[provincieId].Add(gemeenteId); } } } } } //Gemeente naam en ID aan elkaar koppelen. using (StreamReader sr = new StreamReader(Path.Combine(path, "WRGemeentenaam.csv"))) { //gemeenteNaamId; gemeenteId; taalCodeGemeenteNaam; gemeenteNaam //1; 1; nl; Aartselaar sr.ReadLine(); string line; while ((line = sr.ReadLine()) != null) { string[] splitLine = line.Split(";"); if (splitLine[2] == "nl") { gemeenteIdEnNaam.Add(splitLine[1], splitLine[3]); } } } //gemeenten aanmaken en koppelen aan hun provincie. foreach (KeyValuePair <string, List <string> > entry in provincieIDGemeenteIDLink) { foreach (string gemeenteId in entry.Value) { Gemeente temp = new Gemeente(int.Parse(gemeenteId), gemeenteIdEnNaam[gemeenteId]); provincies[entry.Key].VoegGemeenteToe(temp); gemeenten.Add(gemeenteId, temp); } } //straatnaamIDs koppelen aan de straatnamen using (StreamReader sr = new StreamReader(Path.Combine(path, "WRstraatnamen.csv"))) { //EXN; LOS //-9; NULL //1; Acacialaan sr.ReadLine(); sr.ReadLine(); string line; while ((line = sr.ReadLine()) != null) { string[] splitLine = line.Split(";"); straatIdEnNaam.Add(splitLine[0], splitLine[1].Trim()); } } //gemeenteIDs koppelen aan de straatnaamIDs using (StreamReader sr = new StreamReader(Path.Combine(path, "WRGemeenteID.csv"))) { //straatNaamId; gemeenteId //1; 1 sr.ReadLine(); string line; while ((line = sr.ReadLine()) != null) { string[] splitLine = line.Split(";"); if (gemeenten.ContainsKey(splitLine[1])) { if (gemeenteIdStraatID.ContainsKey(splitLine[1])) { gemeenteIdStraatID[splitLine[1]].Add(splitLine[0]); } else { gemeenteIdStraatID.Add(splitLine[1], new List <string>()); gemeenteIdStraatID[splitLine[1]].Add(splitLine[0]); } } } } #endregion //effectieve straten aanmaken foreach (KeyValuePair <string, List <string> > entry in gemeenteIdStraatID) { foreach (string straatId in entry.Value) { if (straatIdGraafKoppeling.ContainsKey(straatId)) { //184418 was not present in the dictionary error gegeven dus dit geschreven //de gemeente wordt in de Straat constructor in order gebracht zodat die zijn lijst van straten correct blijft. string naam = straatIdEnNaam[straatId]; Graaf tempGraaf = straatIdGraafKoppeling[straatId]; Gemeente tempGemeente = gemeenten[entry.Key]; Straat tempStraat = new Straat(int.Parse(straatId), naam, tempGraaf, tempGemeente); straten.Add(straatId, tempStraat); } } } //Lege Provincies weghalen uit de verzameling gemeenten foreach (KeyValuePair <string, Gemeente> gemeente in gemeenten) { if (gemeente.Value.Straten.Count == 0) { gemeente.Value.Provincie.VerwijderGemeente(gemeente.Value); } } return(provincies); }
public List <Segment> GetSegmenten() { return(Graaf.GetSegmenten()); }
public List <Knoop> GetKnopen() { return(Graaf.getKnopen()); }