コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);
        }