Ejemplo n.º 1
0
 public Segment(int segmentID, Knoop beginKnoop, Knoop eindKnoop, List <Punt> vertices)
 {
     this.segmentID  = segmentID;
     this.beginKnoop = beginKnoop;
     this.eindKnoop  = eindKnoop;
     this.vertices   = vertices;
 }
Ejemplo n.º 2
0
        /// <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));
        }