Exemple #1
0
        /// <summary>
        ///     Nearly identical to base, override needed because other classes use road segments
        /// </summary>
        /// <param name="objectAsDict"></param>
        /// <returns></returns>
        protected sealed override List <Segment> GetSegmentList(IDictionary <string, object> objectAsDict)
        {
            if (!objectAsDict.ContainsKey("posList"))
            {
                return(null);
            }
            var lineList     = (List <string>)objectAsDict["posList"];
            var exteriorLine = lineList.First();

            if (string.IsNullOrEmpty(exteriorLine))
            {
                return(null);
            }
            List <Segment> netSegments        = new List <Segment>();
            var            exteriorLinePoints = TranslatorUtils.LineToVectorList(exteriorLine);
            var            reductedPoints     = DouglasPointsReduction.Reduct(exteriorLinePoints, toleranceDP);

            if (reductedPoints.Count <= 1)
            {
                return(null);
            }
            for (int i = 0; i < reductedPoints.Count - 1; i++)
            {
                Segment newSegment = new Segment {
                    p1 = reductedPoints[i], p2 = reductedPoints[i + 1]
                };
                netSegments.Add(newSegment);
                TranslatorInitiator.GridSegment.Add(newSegment);
            }
            return(netSegments);
        }
Exemple #2
0
        protected virtual List <Segment> GetSegmentList(IDictionary <string, object> objectAsDict)
        {
            if (!objectAsDict.ContainsKey("posList"))
            {
                return(null);
            }
            var lineList = (List <string>)objectAsDict["posList"];
            // extrior (GML name) is the only one in this case
            var exteriorLine = lineList.First();

            if (string.IsNullOrEmpty(exteriorLine))
            {
                return(null);
            }
            List <Segment> netSegments        = new List <Segment>();
            var            exteriorLinePoints = TranslatorUtils.LineToVectorList(exteriorLine);
            var            reductedPoints     = DouglasPointsReduction.Reduct(exteriorLinePoints, toleranceDP);

            if (reductedPoints.Count <= 1)
            {
                return(null);
            }
            for (int i = 0; i < reductedPoints.Count - 1; i++)
            {
                netSegments.Add(new Segment {
                    p1 = reductedPoints[i], p2 = reductedPoints[i + 1]
                });
            }
            return(netSegments);
        }