Esempio n. 1
0
        private void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            SaveFileDialog       SFD = new SaveFileDialog();

            SFD.ShowDialog();
            if (SFD.FileName == null || SFD.FileName == "")
            {
                return;
            }
            ParameterInitialize.strSavePath = SFD.FileName;
            ParameterInitialize.pWorkspace  = CHelperFunction.OpenWorkspace(ParameterInitialize.strSavePath);


            //读取数据
            try
            {
                _pOptCorSimplified = new COptCorSimplified(ParameterInitialize);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            _pOptCorSimplified.OptCorSimplifiedMorphing();

            _DataRecords.ParameterResult = _pOptCorSimplified.ParameterResult;
        }
Esempio n. 2
0
        private void btnSaveInterpolation_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            List <CPolyline>     cpllt = new List <CPolyline>();

            cpllt.Add(_RelativeInterpolationCpl);
            string strFileName = _dblProportion.ToString();

            CHelperFunction.SaveCPlLt(cpllt, strFileName, ParameterInitialize.pWorkspace, ParameterInitialize.m_mapControl);
        }
 private void btnReduce_Click(object sender, EventArgs e)
 {
     try
     {
         _dblProportion = _dblProportion - 0.02;
         pbScale.Value  = Convert.ToInt16(100 * _dblProportion);
         _RelativeInterpolationCplLt = CHelperFunction.GetAndSaveInterpolation(_DataRecords, _dblProportion);
     }
     catch (Exception)
     {
         MessageBox.Show("不能再减小了!");
     }
 }
        private void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            SaveFileDialog       SFD = new SaveFileDialog();

            SFD.ShowDialog();
            if (SFD.FileName == null || SFD.FileName == "")
            {
                return;
            }
            ParameterInitialize.strSavePath = SFD.FileName;
            ParameterInitialize.pWorkspace  = CHelperFunction.OpenWorkspace(ParameterInitialize.strSavePath);

            _pOptCorMMSimplified = new COptCorMMSimplified(ParameterInitialize);
            _pOptCorMMSimplified.OptCorMMSimplifiedMorphing();
            MessageBox.Show("Done!");
        }
        public COptCorSimplified(CParameterInitialize ParameterInitialize)
        {
            //获取当前选择的点要素图层
            //大比例尺要素图层
            IFeatureLayer pBSFLayer = (IFeatureLayer)ParameterInitialize.m_mapFeature.get_Layer(ParameterInitialize.cboLargerScaleLayer.SelectedIndex);

            //小比例尺要素图层
            IFeatureLayer pSSFLayer = (IFeatureLayer)ParameterInitialize.m_mapFeature.get_Layer(ParameterInitialize.cboSmallerScaleLayer.SelectedIndex);

            ParameterInitialize.pBSFLayer   = pBSFLayer;
            ParameterInitialize.pSSFLayer   = pSSFLayer;
            ParameterInitialize.intMaxBackK = Convert.ToInt32(ParameterInitialize.txtMaxBackK.Text);
            _ParameterInitialize            = ParameterInitialize;

            //获取线数组
            List <CPolyline> _BSCPlLt = CHelperFunction.GetCPlLtByFeatureLayer(pBSFLayer);
            List <CPolyline> _SSCPlLt = CHelperFunction.GetCPlLtByFeatureLayer(pSSFLayer);

            _FromCpl = _BSCPlLt[0];
            _ToCpl   = _SSCPlLt[0];
        }
        public CParameterResult OptCorMMMorphing()
        {
            List <CPolyline> pBSCPlLt = _BSCPlLt;
            List <CPolyline> pSSCPlLt = _SSCPlLt;
            int    intMaxBackK        = _intMaxBackK;
            int    intMulti           = _intMulti;
            int    intIncrease        = _intIncrease;
            double dblSmallDis        = _dblSmallDis;

            long lngStartTime1 = System.Environment.TickCount;  //lngTime1

            CGeometricMethods.SetEdgeLength(ref pBSCPlLt);
            CGeometricMethods.SetEdgeLength(ref pSSCPlLt);
            long lngTime1 = System.Environment.TickCount - lngStartTime1;  //lngTime1

            double dblX             = pSSCPlLt[0].FrCpt.X - pBSCPlLt[0].FrCpt.X;
            double dblY             = pSSCPlLt[0].FrCpt.Y - pBSCPlLt[0].FrCpt.Y;
            CPoint StandardVetorCpt = new CPoint(0, dblX, dblY);

            //StandardVetorCpt = new CPoint(0, 0, 0);
            _StandardVetorCpt = StandardVetorCpt;
            double        dblStandardLength = CGeometricMethods.CalDis(0, 0, dblX, dblY);
            List <double> dblDistanceLt     = new List <double>(intMulti);
            List <double> dblTimeLt         = new List <double>(intMulti);

            List <LinkedList <CCorrespondCPoint> > pCorrCptLkLt = new List <LinkedList <CCorrespondCPoint> >(pBSCPlLt.Count);
            List <LinkedList <CCorrespondCPoint> > pCtrlCptLkLt = new List <LinkedList <CCorrespondCPoint> >(pBSCPlLt.Count);

            for (int i = 0; i < intMulti; i++)
            {
                long   lngStartTime2 = System.Environment.TickCount;                       //lngTime2
                double dblDistance   = 0;
                pCorrCptLkLt = new List <LinkedList <CCorrespondCPoint> >(pBSCPlLt.Count); //initialize
                pCtrlCptLkLt = new List <LinkedList <CCorrespondCPoint> >(pBSCPlLt.Count); //initialize
                for (int j = 0; j < pBSCPlLt.Count; j++)
                {
                    CTable[,] Table = CreatTable(pBSCPlLt[j], pSSCPlLt[j], intMaxBackK, StandardVetorCpt, dblSmallDis);  //创建T矩阵

                    dblDistance += Table[pBSCPlLt[j].cptlt.Count - 1, pSSCPlLt[j].cptlt.Count - 1].dblEvaluation;
                    LinkedList <CCorrespondCPoint> CtrlCptLk;
                    pCorrCptLkLt.Add(FindCorrespondSegmentLk(Table, out CtrlCptLk));
                    pCtrlCptLkLt.Add(CtrlCptLk);
                }
                long lngTime2 = System.Environment.TickCount - lngStartTime2;   //lngTime2
                dblTimeLt.Add(lngTime1 + lngTime2);
                dblDistanceLt.Add(dblDistance);


                //保存对应线
                CHelperFunctionExcel.ExportDataltToExcel(dblTimeLt, intMaxBackK + "Timelt0", _ParameterInitialize.strSavePath);
                CHelperFunctionExcel.ExportDataltToExcel(dblDistanceLt, intMaxBackK + "Distancelt0", _ParameterInitialize.strSavePath);

                if (i == (intMulti - 1))
                {
                    CHelperFunction.SaveCtrlLine(pCtrlCptLkLt, intMaxBackK + "OptCorMMControlLine", dblStandardLength, _ParameterInitialize.pWorkspace, _ParameterInitialize.m_mapControl);
                    CHelperFunction.SaveCorrLine(pCorrCptLkLt, intMaxBackK + "OptCorMMCorrLine", _ParameterInitialize.pWorkspace, _ParameterInitialize.m_mapControl);
                }
                intMaxBackK  = intMaxBackK + intIncrease;
                _CorrCptLkLt = pCorrCptLkLt;
            }

            return(null);
        }
 private void btn030_Click(object sender, EventArgs e)
 {
     _dblProportion = 0.3;
     _RelativeInterpolationCplLt = CHelperFunction.GetAndSaveInterpolation(_DataRecords, _dblProportion);
 }
 private void btnAdd_Click(object sender, EventArgs e)
 {
     _dblProportion = _dblProportion + 0.02;
     pbScale.Value  = Convert.ToInt16(100 * _dblProportion);
     _RelativeInterpolationCplLt = CHelperFunction.GetAndSaveInterpolation(_DataRecords, _dblProportion);
 }
 private void btnInputedScale_Click(object sender, EventArgs e)
 {
     _dblProportion = Convert.ToDouble(this.txtProportion.Text);
     _RelativeInterpolationCplLt = CHelperFunction.GetAndSaveInterpolation(_DataRecords, _dblProportion);
 }
Esempio n. 10
0
 private void btn100_Click(object sender, EventArgs e)
 {
     _dblProportion            = 1;
     _RelativeInterpolationCpl = CHelperFunction.DisplayInterpolation(_DataRecords, _dblProportion);
 }