public Segment(int segmentID, Knoop beginKnoop, Knoop eindKnoop, List <Punt> vertices) { this.segmentID = segmentID; this.beginKnoop = beginKnoop; this.eindKnoop = eindKnoop; this.vertices = vertices; }
/// <summary> /// Hulpmethod voor WRdataParser /// analyseert lijnen in strings en geeft bijhorende segment terug /// </summary> /// <param name="line">Lines parsed from file</param> /// <returns></returns> private static Segment SegmentMaker(String[] line) { List <Punt> vertices = new List <Punt>(); Knoop beginknoop; Knoop eindknoop; //SegmentID if (!int.TryParse(line[0], out int wegsegmentID)) { throw new WRIdException(); } //vertices = allePunten(incl begin/eind) StringBuilder allepunten = new StringBuilder(); allepunten.Append(line[1]); allepunten.Remove(0, 12); // verwijdert LINESTRING ( allepunten.Remove(allepunten.Length - 1, 1); // verwijdert ) string[] puntenTuples = allepunten.ToString().Split(", "); //string tempVerwijderEerste = line[1].Remove(0, 12); // verwijdert LINESTRING ( //string tempVerwijderLaatst = tempVerwijderEerste.Remove(tempVerwijderEerste.Length - 1); //string[] puntenTuples = tempVerwijderLaatst.Split(", "); List <string[]> punten = new List <string[]>(); foreach (string punt in puntenTuples) { punten.Add(punt.Split(" ")); } for (int i = 0; i < punten.Count; i++) // kan eventueel foreach voor duidelijkheid om de i te verwijdere { if (!double.TryParse(punten[i][0], NumberStyles.Any, CultureInfo.InvariantCulture, out double x)) //invariantculture voor de . in te lezen als double { throw new DoubleException(); } if (!double.TryParse(punten[i][1], NumberStyles.Any, CultureInfo.InvariantCulture, out double y)) { throw new DoubleException(); } vertices.Add(new Punt(x, y)); } //beginknoop if (!int.TryParse(line[4], out int beginknoopID)) { throw new WRIdException(); } beginknoop = new Knoop(beginknoopID, vertices.First()); //eindknoop if (!int.TryParse(line[5], out int eindknoopID)) { throw new WRIdException(); } eindknoop = new Knoop(eindknoopID, vertices.Last()); return(new Segment(wegsegmentID, beginknoop, eindknoop, vertices)); }