private void AddDams(List <Reach> reaches, List <DamTableRow> damTable) { foreach (var reach in reaches) { foreach (var node in reach.Nodes) { DamTableRow located = null; foreach (var dam in damTable) { if (!node.Location.Match(dam.Location, 10)) { continue; } node.Dam = new Dam(dam); reach.HasDam = true; located = dam; break; } if (located != null) { damTable.Remove(located); } } } if (damTable.Count != 0) { Trace.WriteLine($"Error: dam table should be empty {String.Join(":", damTable)}"); } }
public Dam(DamTableRow row) { Id = row.Id; Name = row.Name; Passability = row.Passability; OnDeserialized(); Location.Longitude = row.Location.Longitude; Location.Latitude = row.Location.Latitude; Location.Symbol = Location.MapSymbol.X; Location.Color = Color.DarkRed; }
public static List <DamTableRow> Create(string filename) { if (!File.Exists(filename)) { throw new ArgumentException($"File {filename} not found."); } try { var damTable = new List <DamTableRow>(); using (var stream = new FileStream(filename, FileMode.Open)) { using (var reader = new CsvReader(new StreamReader(stream, Encoding.UTF8))) { reader.Read(); // Id, X, Y, Name, P while (reader.Read()) { var row = new DamTableRow { Id = reader.GetField <int>(0), Location = new Location { Longitude = reader.GetField <Double>(1), Latitude = reader.GetField <Double>(2) }, }; row.Name = reader.TryGetField <string>(3, out var name) ? name : row.Id.ToString(); row.Passability = reader.TryGetField <Double>(4, out var pass) ? pass : 0.5; damTable.Add(row); } } } return(damTable); } catch (Exception) { throw new ArgumentException($"Dam file {filename} not in proper format or in use by another application."); } }