/// <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); }
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); }