/// <summary> /// 进行弯曲匹配,提取对应线段 /// </summary> /// <param name="CFromBendForest">大比例尺弯曲森林</param> /// <param name="CToBendForest">小比例尺弯曲森林</param> /// <param name="ParameterThreshold">参数容器</param> /// <param name="CorrespondSegmentLk">对应线段列</param> /// <remarks>弯曲树匹配和孩子弯曲匹配都由本函数来执行 /// 注意:此处的弯曲树匹配及弯曲匹配与"MPBBSL"中有所不同,此处增加了递归识别独立弯曲</remarks> public List <CCorrespondBend> BendTreeMatch(CBendForest CFromBendForest, CBendForest CToBendForest, CParameterThreshold ParameterThreshold, CParameterInitialize pParameterInitialize) { //大比例尺独立弯曲 SortedDictionary <double, CBend> pFromIndependBendSlt = new SortedDictionary <double, CBend>(new CCmpDbl()); for (int i = 0; i < CFromBendForest.Count; i++) { pFromIndependBendSlt.Add(CFromBendForest.ElementAt(i).Value.dblStartRL, CFromBendForest.ElementAt(i).Value); } //小比例尺独立弯曲 SortedDictionary <double, CBend> pToIndependBendSlt = new SortedDictionary <double, CBend>(new CCmpDbl()); for (int i = 0; i < CToBendForest.Count; i++) { pToIndependBendSlt.Add(CToBendForest.ElementAt(i).Value.dblStartRL, CToBendForest.ElementAt(i).Value); } //获取对应弯曲 List <CCorrespondBend> pIndependCorrespondBendLt = IndependBendMatch(pFromIndependBendSlt, pToIndependBendSlt, ParameterThreshold, pParameterInitialize); return(pIndependCorrespondBendLt); }
/// <summary> /// 整理弯曲森林中的弯曲 /// </summary> /// <param name="cpl">折线</param> /// <param name="pBendForest">弯曲森林</param> /// <returns>按相对位置排序的弯曲列表</returns> /// <remarks>计算各弯曲的相对起始位置;并给按顺序编号</remarks> public SortedDictionary <double, CBend> NeatenBendForest(CPolyline cpl, CBendForest pBendForest) { SortedDictionary <double, CBend> pBendSlt = new SortedDictionary <double, CBend>(new CCmpDbl()); //整理弯曲 for (int i = 0; i < pBendForest.Count; i++) { CBend pBend = pBendForest.ElementAt(i).Value; RecursiveNeatenBendForest(cpl, pBend, pBendSlt); } //给弯曲编号 for (int i = 0; i < pBendSlt.Count; i++) { pBendSlt.ElementAt(i).Value.ID = i; } return(pBendSlt); }