コード例 #1
0
        /// <summary>计算河流的重要性</summary>
        /// <param name="CAllRiverLt">河流数据</param>
        private void CalWeightiness(List <CRiverNet> CRiverNetLt, CParameterInitialize pParameterInitialize)
        {
            //先找到最大层次
            double dblMaxLevel = 0;

            for (int i = 0; i < CRiverNetLt.Count; i++)
            {
                for (int j = 0; j < CRiverNetLt[i].CRiverLt.Count; j++)
                {
                    if (CRiverNetLt[i].CRiverLt[j].dblLevel > dblMaxLevel)
                    {
                        dblMaxLevel = CRiverNetLt[i].CRiverLt[j].dblLevel;
                    }
                }
            }

            //根据公式计算河流重要性
            for (int i = 0; i < CRiverNetLt.Count; i++)
            {
                for (int j = 0; j < CRiverNetLt[i].CRiverLt.Count; j++)
                {
                    double dblOrderWeightiness = Math.Pow(CRiverNetLt[i].CRiverLt[j].dblOrder, pParameterInitialize.dblOrderExponent);
                    double dblLevelWeightiness = Math.Pow((dblMaxLevel - CRiverNetLt[i].CRiverLt[j].dblLevel + 1), pParameterInitialize.dblOrderExponent);
                    CRiverNetLt[i].CRiverLt[j].dblWeightiness = CRiverNetLt[i].CRiverLt[j].pPolyline.Length * dblOrderWeightiness * dblLevelWeightiness;
                }
            }
        }
コード例 #2
0
        public override 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  = CHelpFunc.OpenWorkspace(ParameterInitialize.strSavePath);

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

            _pBSBLGOptCorMMSimplified.BSBLGOptCorMMSimplifiedMorphing();

            _DataRecords.ParameterResult = _pBSBLGOptCorMMSimplified.ParameterResult;
        }
コード例 #3
0
        private void btnRunAll_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            int intQuitCount  = Convert.ToInt32(txtNodes.Text);
            int intTwiceCount = intQuitCount * 2;

            //int intUnlimited = 2000000000;

            //0: NonShape
            //1: MinIntBound
            //2: MaxMinC_EdgeNo
            //3: MaxMinC_Comb
            //4: MaxAvgC_EdgeNo
            //5: MaxAvgC_Comb
            //true: involving smallest
            //false: not necessarily involving smallest

            RunAStar(ParameterInitialize, intQuitCount, 4, true);
            RunAStar(ParameterInitialize, intTwiceCount, 4, true);
            RunAStar(ParameterInitialize, intQuitCount, 1, true);

            //we should run AStar before running greedy
            //because we want to compare the results between Greedy and AStar
            RunGreedy(ParameterInitialize, 4, true);
            RunGreedy(ParameterInitialize, 1, true);

            RunILP(ParameterInitialize, 100, true);
            RunILP(ParameterInitialize, 200, true);

            MessageBox.Show("Done!");
        }
コード例 #4
0
        private void btnRunAll_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            int intQuitCount  = Convert.ToInt32(txtNodes.Text);
            int intTwiceCount = intQuitCount * 2;

            //int intUnlimited = 2000000000;

            //0: NonShape
            //1: MinimizeInteriorBoundaries
            //2: MaximizeMinComp
            //3: MaximizeMinComp_Combine
            //4: MaximizeAvgComp_EdgeNumber
            //5: MaximizeAvgComp_Combine
            //true: involving smallest
            //false: not necessarily involving smallest
            //RunGreedy(ParameterInitialize, 4, true);
            //RunGreedy(ParameterInitialize, 1, true);

            RunAStar(ParameterInitialize, intQuitCount, 4, true);
            RunAStar(ParameterInitialize, intTwiceCount, 4, true);
            RunAStar(ParameterInitialize, intQuitCount, 1, true);

            //RunILP(ParameterInitialize, 112, true);
            //RunILP(ParameterInitialize, 300, true);

            MessageBox.Show("Done!");
        }
コード例 #5
0
        public static void SaveToIpe(List <IFeatureLayer> pFLayerLt, IEnvelope pFLayerEnv, CEnvelope pIpeEnv,
                                     bool blnGroup, string strBoundWidth, CParameterInitialize ParameterInitialize, bool blnLayerToLeft = true)
        {
            var strContent = GetScaleLegend(pFLayerEnv, pIpeEnv, CHelpFunc.GetUnits(ParameterInitialize.m_mapControl.MapUnits));

            for (int i = 0; i < pFLayerLt.Count; i++)
            {
                var pFLayer         = pFLayerLt[i] as IFeatureLayer;
                var strDataOfFLayer = CToIpe.GetDataOfFeatureLayer(pFLayer, pFLayerEnv, pIpeEnv, strBoundWidth, true);

                if (blnGroup == true)
                {
                    strDataOfFLayer = "<group>\n" + strDataOfFLayer + "</group>\n";
                }
                strContent += strDataOfFLayer;

                if (blnLayerToLeft == true)
                {
                    pIpeEnv.XMin -= pIpeEnv.Width;
                    pIpeEnv.XMax -= pIpeEnv.Width;
                }
            }

            string strFullName = ParameterInitialize.strSavePath + "\\" + CHelpFunc.GetTimeStamp() + ".ipe";

            using (var writer = new System.IO.StreamWriter(strFullName, true))
            {
                writer.Write(CIpeDraw.GenerateIpeXMLWithContent(strContent));
            }

            System.Diagnostics.Process.Start(@strFullName);
        }
コード例 #6
0
        public override 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  = CHelpFunc.OpenWorkspace(ParameterInitialize.strSavePath);
            _pAL = new CAL(_DataRecords);
            //_pAL.intIterationNum = Convert.ToInt32(this.txtIterationNum.Text);     //the maximum itrative times
            //List<CCorrCpts> pCorrCptsLt = _DataRecords.ParameterResult.CCorrCptsLt;
            //List <CPoint > cptlt=new List<CPoint> ();
            //for (int i = 0; i < pCorrCptsLt.Count ; i++)
            //{
            //    cptlt.Add(pCorrCptsLt[i].FrCpt);
            //}
            //_RelativeInterpolationCpl = new CPolyline(0, cptlt);

            _RelativeInterpolationCpl = _DataRecords.ParameterResult.FromCpl;
            _DataRecords.ParameterResult.CResultPlLt = new List <CPolyline>();
        }
コード例 #7
0
        private void btnDivideByDP_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            _pDPSimplify = new CDPSimplify(ParameterInitialize);
            isDivideByDP = true;
        }
コード例 #8
0
        private void btnMultiResults_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  = CHelpFunc.OpenWorkspace(ParameterInitialize.strSavePath);


            //Read Datasets
            try
            {
                _pOptCorBezier = new COptCorBezier(ParameterInitialize);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            _pOptCorBezier.OptCorBezierMultiResultsMorphing();

            _DataRecords.ParameterResult = _pOptCorBezier.ParameterResult;
        }
コード例 #9
0
        private void btnDPMorph_Click(object sender, EventArgs e)
        {
            if (isDivideByDP == false)
            {
                MessageBox.Show("please press DivideByDP first!");
                return;
            }

            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            double dblProp      = Convert.ToDouble(txtProportion.Text);
            double dblParameter = Convert.ToDouble(txtParameter.Text);

            if (rdoDistance.Checked == true)
            {
                _pDPSimplify.DPMorph(dblParameter, -1, -1, dblProp);
            }
            else if (rdoRemainRatio.Checked == true)
            {
                _pDPSimplify.DPMorph(-1, dblParameter, -1, dblProp);
            }
            else if (rdoRemainNum.Checked == true)
            {
                _pDPSimplify.DPMorph(-1, -1, dblParameter, dblProp);
            }

            //_pDPSimplify.DPSimplify(-1, 0.8, -1);
            CHelpFunc.SaveCPlLt(_pDPSimplify.ParameterResult.CResultPlLt, "DPMorph" + "_" + dblParameter.ToString()
                                + "_" + dblProp.ToString(), ParameterInitialize.pWorkspace, ParameterInitialize.m_mapControl);


            _DataRecords.ParameterResult = _pDPSimplify.ParameterResult;
        }
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            ParameterInitialize.dblLargerScale  = Convert.ToDouble(this.txtLargerScale.Text);
            ParameterInitialize.dblSmallerScale = Convert.ToDouble(this.txtSmallerScale.Text);

            SaveFileDialog SFD = new SaveFileDialog();

            SFD.ShowDialog();
            if (SFD.FileName == null || SFD.FileName == "")
            {
                return;
            }
            ParameterInitialize.strSavePath       = SFD.FileName;
            ParameterInitialize.strSaveFolderName = System.IO.Path.GetFileNameWithoutExtension(SFD.FileName);
            ParameterInitialize.pWorkspace        = CHelpFunc.OpenWorkspace(ParameterInitialize.strSavePath);


            //读取数据

            _pAtBdMorphing = new CAtBdMorphing(ParameterInitialize);


            _pAtBdMorphing.AtBdMorphing();

            _DataRecords.ParameterResult = _pAtBdMorphing.ParameterResult;
            //CHelpFuncExcel.KillExcel();
            MessageBox.Show("Done!");
        }
コード例 #11
0
        public void FrmOptCor_Load(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            ParameterInitialize.cboLayerLt = new List <ComboBox>(2);
            ParameterInitialize.cboLayerLt.Add(this.cboLargerScaleLayer);
            ParameterInitialize.cboLayerLt.Add(this.cboSmallerScaleLayer);
            ParameterInitialize.txtMaxBackK         = this.txtMaxBackK;
            ParameterInitialize.txtMulti            = this.txtMulti;
            ParameterInitialize.txtIncrease         = this.txtIncrease;
            ParameterInitialize.txtEvaluation       = this.txtEvaluation;
            ParameterInitialize.cboMorphingMethod   = this.cboMorphingMethod;
            ParameterInitialize.chkCoincidentPoints = this.chkCoincidentPoints;
            ParameterInitialize.cboStandardVector   = this.cboStandardVector;
            ParameterInitialize.cboEvaluationMethod = this.cboEvaluationMethod;
            ParameterInitialize.cboIntMaxBackKforJ  = this.cboIntMaxBackKforJ;
            ParameterInitialize.txtAttributeOfKnown = this.txtAttributeOfKnown;

            this.cboMorphingMethod.SelectedIndex   = 1;
            this.cboStandardVector.SelectedIndex   = 0;
            this.cboEvaluationMethod.SelectedIndex = 0;
            this.cboIntMaxBackKforJ.SelectedIndex  = 3;



            //txtEvaluation
            //Read all the layers
            CHelpFunc.FrmOperation(ref ParameterInitialize);
        }
コード例 #12
0
 private void btnSaveTrajectory_Click(object sender, EventArgs e)
 {
     try
     {
         CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
         List <CPolyline>     cpllt   = _DataRecords.ParameterResult.CResultPlLt;
         List <CPolyline>     ctjpllt = new List <CPolyline>();
         for (int j = 0; j < cpllt[0].CptLt.Count; j++)
         {
             List <CPoint> ctjptlt = new List <CPoint>();
             for (int i = 0; i < cpllt.Count; i++)
             {
                 ctjptlt.Add(cpllt[i].CptLt[j]);
             }
             CPolyline ctjpl = new CPolyline(j, ctjptlt);
             ctjpllt.Add(ctjpl);
         }
         _DataRecords.ParameterResult.CTrajectoryPlLt = ctjpllt;
         CHelpFunc.SaveCPlLt(ctjpllt, "Trajectories", ParameterInitialize.pWorkspace, ParameterInitialize.m_mapControl);
     }
     catch
     {
         MessageBox.Show("No data or other errors! (Have you already implemented timerAdd_Tick?)");
     }
 }
コード例 #13
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            //get parameters
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            IEnvelope            pFLayerEnv          = ParameterInitialize.m_mapFeature
                                                       .get_Layer(ParameterInitialize.cboLayerLt[0].SelectedIndex).AreaOfInterest;
            CEnvelope pIpeEnv = new CEnvelope(
                Convert.ToDouble(this.txtIpeMinX.Text), Convert.ToDouble(this.txtIpeMinY.Text),
                Convert.ToDouble(this.txtIpeMaxX.Text), Convert.ToDouble(this.txtIpeMaxY.Text));

            string strBoundWidth = this.cboSize.SelectedItem.ToString();

            if (chkOverrideWidth.Checked == false)
            {
                strBoundWidth = "";
            }

            //save path
            CHelpFunc.SetSavePath(ParameterInitialize);

            var pFLayerLt = CHelpFunc.GetVisibleLayers(ParameterInitialize);

            CToIpe.SaveToIpe(pFLayerLt, pFLayerEnv, pIpeEnv,
                             this.chkGroup.Checked, strBoundWidth, ParameterInitialize);
        }
コード例 #14
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
            {
                _pOptCorMM = new COptCorMM(ParameterInitialize);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            _pOptCorMM.OptCorMMMorphing();

            _DataRecords.ParameterResult = _pOptCorMM.ParameterResult;
        }
コード例 #15
0
        public void DisplayAtBd(double dblProp)
        {
            CParameterInitialize pParameterInitialize = _ParameterInitialize;
            CParameterResult     pParameterResult     = _ParameterResult;

            if (dblProp < 0 || dblProp > 1)
            {
                MessageBox.Show("请输入正确参数!");
                return;
            }

            //double dblLargerScale = pParameterInitialize.dblLargerScale;
            //double dblSmallerScale = pParameterInitialize.dblSmallerScale;
            //double dblTargetScale = Math.Pow(dblLargerScale, 1 - dblProp) * Math.Pow(dblSmallerScale, dblProp);
            //double dblIgnorableDis = 0.0001 * dblTargetScale / 111319.490793;
            //double dblIgnorableDis = 0.0001 * dblTargetScale / 100000000000;
            //


            var pStopwatch         = Stopwatch.StartNew();
            var normaldisplayCplLt = GenerateInterpolatedCplLt(dblProp);
            var fadeddisplayCplLt  = GenerateInterpolatedCplLt(dblProp, _SgCorrCptsLtLt);

            pStopwatch.Stop();

            var pStopwatchSave = Stopwatch.StartNew();

            CSaveFeature.SaveCplEb(fadeddisplayCplLt, dblProp.ToString() + "_Lower");
            CSaveFeature.SaveCplEb(normaldisplayCplLt, dblProp.ToString() + "_Higher");
            pStopwatchSave.Stop();

            CHelpFunc.DisplayRunTime(pStopwatch.ElapsedMilliseconds, "Generate", pStopwatchSave.ElapsedMilliseconds, "ToShape");
        }
コード例 #16
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            //SaveFileDialog SFD = new SaveFileDialog();
            //SFD.ShowDialog();
            //ParameterInitialize.strSavePath = SFD.FileName;
            //ParameterInitialize.pWorkspace = CHelpFunc.OpenWorkspace(ParameterInitialize.strSavePath);


            //获取当前选择的点要素图层
            //大比例尺要素图层
            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;


            //获取线数组
            List <CPolyline> _LSCPlLt = CHelpFunc.GetCPlLtByFeatureLayer(pBSFLayer);
            List <CPolyline> _SSCPlLt = CHelpFunc.GetCPlLtByFeatureLayer(pSSFLayer);
            CPolyline        frcpl    = _LSCPlLt[0];
            CPolyline        tocpl    = _SSCPlLt[0];

            List <CCorrCpts> pCorrCptsLt   = BuildCorrespondences(frcpl, tocpl);
            double           dblSimilarity = CalSimilarity(pCorrCptsLt, frcpl, tocpl);

            MessageBox.Show(dblSimilarity.ToString());
        }
コード例 #17
0
        public 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  = CHelpFunc.OpenWorkspace(ParameterInitialize.strSavePath);

            //Read Datasets
            try
            {
                _pMPBBSL = new CMPBBSL(ParameterInitialize);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            _pMPBBSL.MPBBSLMorphing();

            _DataRecords.ParameterResult = _pMPBBSL.ParameterResult;
        }
コード例 #18
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            string strLargerLayer  = this.cboLargerScaleLayer.Text;
            string strSmallerLayer = this.cboSmallerScaleLayer.Text;

            IFeatureLayer pLargerFLayer  = null;
            IFeatureLayer pSmallerFLayer = null;

            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            try
            {
                for (int i = 0; i < ParameterInitialize.m_mapFeature.LayerCount; i++)
                {
                    if (strLargerLayer == ParameterInitialize.m_mapFeature.get_Layer(i).Name)
                    {
                        pLargerFLayer = (IFeatureLayer)ParameterInitialize.m_mapFeature.get_Layer(i);
                    }
                    else if (strSmallerLayer == ParameterInitialize.m_mapFeature.get_Layer(i).Name)
                    {
                        pSmallerFLayer = (IFeatureLayer)ParameterInitialize.m_mapFeature.get_Layer(i);
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Please select a feature layer");
                return;
            }

            double dblTargetScale = Convert.ToDouble(this.txtTargetScale.Text);
            double dblBuffer      = 2 * dblTargetScale * 0.00001; //人眼分辨率(0.01mm)的两倍
            //dblBuffer = 500;  //基于人眼分辨率为0.01mm

            long lngStartTime = System.Environment.TickCount; //record the start time

            //获取线数组
            List <CPolyline> LSCPlLt = CHelpFunc.GetCPlLtByFeatureLayer(pLargerFLayer);
            List <CPolyline> SSCPlLt = CHelpFunc.GetCPlLtByFeatureLayer(pSmallerFLayer);

            ITopologicalOperator pTopBS = LSCPlLt[0].pPolyline as ITopologicalOperator;
            ITopologicalOperator pTopSS = SSCPlLt[0].pPolyline as ITopologicalOperator;
            IGeometry            pGeo1  = pTopBS.Buffer(dblBuffer);
            IGeometry            pGeo2  = pTopSS.Buffer(dblBuffer);

            ITopologicalOperator pTop1         = pGeo1 as ITopologicalOperator;
            IGeometry            pIntersectGeo = pTop1.Intersect(pGeo2, esriGeometryDimension.esriGeometry2Dimension);

            IArea  pIntersectArea = pIntersectGeo as IArea;
            IArea  pArea1         = pGeo1 as IArea;
            IArea  pArea2         = pGeo2 as IArea;
            double dblOverlap     = 2 * pIntersectArea.Area / (pArea1.Area + pArea2.Area);

            long lngEndTime = System.Environment.TickCount;                                                                         //记录结束时间

            _DataRecords.ParameterInitialize.tsslTime.Text = "Running Time: " + Convert.ToString(lngEndTime - lngStartTime) + "ms"; //显示运行时

            MessageBox.Show(dblOverlap.ToString());
        }
コード例 #19
0
 private void FrmStraightLine_Load(object sender, EventArgs e)
 {
     if (!DesignMode)
     {
         CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
         CConstants.strMethod = "StraightLine";
     }
 }
コード例 #20
0
        private void btnRunData_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            List <CCorrCpts>     pCorrCptsLt         = _DataRecords.ParameterResult.CCorrCptsLt;
            double dblSimilarity = CalSimilarity(pCorrCptsLt);

            MessageBox.Show(dblSimilarity.ToString());
        }
コード例 #21
0
 public COptCorMM(CParameterInitialize ParameterInitialize)
 {
     Construct(ParameterInitialize);
     _intMaxBackK = Convert.ToInt32(ParameterInitialize.txtMaxBackK.Text);
     _intMulti    = Convert.ToInt32(ParameterInitialize.txtMulti.Text);
     _intIncrease = Convert.ToInt32(ParameterInitialize.txtIncrease.Text);
     _BSCPlLt     = _CPlLtLt[0];
     _SSCPlLt     = _CPlLtLt[1];
 }
コード例 #22
0
        /// <summary>
        /// 用基于弯曲的Morphing方法进行处理
        /// </summary>
        /// <param name="pParameterInitialize">参数</param>
        /// <param name="pParameterVariableFrom">有关大比例尺折线的参数变量,主要储存了大比例尺线要素、文件保存时的名字、大比例尺图层和极小值</param>
        /// <param name="pParameterVariableTo">有关小比例尺折线的参数变量,主要储存了:小比例尺线要素、文件保存时的名字、小比例尺图层和极小值</param>
        /// <param name="ParameterThreshold">阈值参数,主要储存了:大、小比例尺线要素长度,弯曲基线比阈值范围</param>
        /// <remarks>创建约束三角网时,已使用外包多边形作为约束边</remarks>
        public LinkedList <CCorrSegment> DWByMPBBSL(CParameterInitialize pParameterInitialize, CParameterVariable pParameterVariableFrom, CParameterVariable pParameterVariableTo, CParameterThreshold ParameterThreshold)
        {
            CPolyline frcpl = pParameterVariableFrom.CPolyline;

            frcpl.SetPolyline();
            CPolyline tocpl = pParameterVariableTo.CPolyline;

            tocpl.SetPolyline();

            List <CPoint> frchcptlt = _Triangulator.CreateConvexHullEdgeLt2(frcpl, pParameterVariableFrom.dblVerySmall);
            CPolyline     frchcpl   = new CPolyline(0, frchcptlt); //大比例尺折线外包多边形线段

            frchcpl.SetPolyline();

            List <CPoint> tochcptlt = _Triangulator.CreateConvexHullEdgeLt2(tocpl, pParameterVariableFrom.dblVerySmall);
            CPolyline     tochcpl   = new CPolyline(0, tochcptlt); //小比例尺折线外包多边形线段

            tochcpl.SetPolyline();

            //添加约束数据生成图层,以便于利用AE中的功能(ct:constraint)
            List <CPolyline> frctcpllt = new List <CPolyline>(); frctcpllt.Add(frcpl); frctcpllt.Add(frchcpl);
            List <CPolyline> toctcpllt = new List <CPolyline>(); toctcpllt.Add(tocpl); toctcpllt.Add(tochcpl);
            IFeatureLayer    pBSFLayer = CHelpFunc.SaveCPlLt(frctcpllt, "frctcpllt", pParameterInitialize.pWorkspace, pParameterInitialize.m_mapControl);
            IFeatureLayer    pSSFLayer = CHelpFunc.SaveCPlLt(toctcpllt, "toctcpllt", pParameterInitialize.pWorkspace, pParameterInitialize.m_mapControl);

            pParameterVariableFrom.pFeatureLayer = pBSFLayer;
            pParameterVariableTo.pFeatureLayer   = pSSFLayer;

            //建立CDT并获取弯曲森林
            CBendForest FromLeftBendForest  = new CBendForest();
            CBendForest FromRightBendForest = new CBendForest();

            GetBendForest(pParameterVariableFrom, ref FromLeftBendForest, ref FromRightBendForest, pParameterInitialize);

            CBendForest ToLeftBendForest  = new CBendForest();
            CBendForest ToRightBendForest = new CBendForest();

            GetBendForest(pParameterVariableTo, ref ToLeftBendForest, ref ToRightBendForest, pParameterInitialize);



            //弯曲树匹配,寻找对应独立弯曲
            List <CCorrespondBend> IndependCorrespondBendLt = new List <CCorrespondBend>();

            IndependCorrespondBendLt.AddRange(BendTreeMatch(FromLeftBendForest, ToLeftBendForest, ParameterThreshold));
            IndependCorrespondBendLt.AddRange(BendTreeMatch(FromRightBendForest, ToRightBendForest, ParameterThreshold));

            //弯曲匹配,寻找对应弯曲
            List <CCorrespondBend> CorrespondBendLt = BendMatch(IndependCorrespondBendLt, ParameterThreshold);

            //提取对应线段
            LinkedList <CCorrSegment> CorrespondSegmentLk = CHelpFunc.DetectCorrespondSegment(frcpl, tocpl, CorrespondBendLt);

            //CHelpFunc.PreviousWorkCSeLt(ref CorrespondSegmentLk);

            return(CorrespondSegmentLk);
        }
コード例 #23
0
        public COptCor(CParameterInitialize ParameterInitialize)
        {
            Construct <CPolyline>(ParameterInitialize, blnIGeoToCGeo: false);

            this.FrCptLtLt = CHelpFunc.GetCptEbEbByIColEb(this.ObjIGeoLtLt[0]).ToLtLt();
            this.ToCptLtLt = CHelpFunc.GetCptEbEbByIColEb(this.ObjIGeoLtLt[1]).ToLtLt();

            this.ObjIGeoLtLt = null;  //to save memory
        }
コード例 #24
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;


            _pOptCor = new COptCor(ParameterInitialize);
            _DataRecords.ParameterResult = _pOptCor.OptCorMorphing();
            MessageBox.Show("Done!");
        }
コード例 #25
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            CTemporary pTemporary = new CTemporary(ParameterInitialize, Convert.ToInt16(this.txtLayerCount.Text));

            pTemporary.Temporary();
            MessageBox.Show("Done!");
        }
コード例 #26
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            CUnifyDirectionsPolylines pUnifyDirectionsPolylines = new CUnifyDirectionsPolylines(ParameterInitialize);

            pUnifyDirectionsPolylines.UnifyDirectionsPolylines();

            MessageBox.Show("Done!");



            //CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            ////dialogue for saving
            //SaveFileDialog SFD = new SaveFileDialog();
            //SFD.ShowDialog();
            //string strPath = SFD.FileName;
            //ParameterInitialize.pWorkspace = CHelpFunc.OpenWorkspace(strPath);

            ////获取当前选择的点要素图层
            ////大比例尺要素图层
            //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;       //"Fixed layer"
            //ParameterInitialize.pSSFLayer = pSSFLayer;       //"(layer) would be modified"

            ////获取线数组
            //List<CPolyline> LSCPlLt = CHelpFunc.GetCPlLtByFeatureLayer(pBSFLayer);
            //List<CPolyline> SSCPlLt = CHelpFunc.GetCPlLtByFeatureLayer(pSSFLayer);

            //for (int i = 0; i < LSCPlLt.Count; i++)
            //{
            //    LSCPlLt[i].SetBaseLine();
            //    SSCPlLt[i].SetBaseLine();

            //    double dblFrDiffX = LSCPlLt[i].pBaseLine.ToCpt.X - LSCPlLt[i].pBaseLine.FrCpt.X;
            //    double dblFrDiffY = LSCPlLt[i].pBaseLine.ToCpt.Y - LSCPlLt[i].pBaseLine.FrCpt.Y;
            //    double dblToDiffX = SSCPlLt[i].pBaseLine.ToCpt.X - SSCPlLt[i].pBaseLine.FrCpt.X;
            //    double dblToDiffY = SSCPlLt[i].pBaseLine.ToCpt.Y - SSCPlLt[i].pBaseLine.FrCpt.Y;
            //    double dblAngleDiff = CGeoFunc.CalAngle_Counterclockwise(dblFrDiffX, dblFrDiffY, dblToDiffX, dblToDiffY);

            //    if ((Math.Abs(dblAngleDiff) > (Math.PI / 2) && Math.Abs(dblAngleDiff) < (3 * Math.PI / 2)))
            //    {
            //        SSCPlLt[i].ReverseCpl();
            //        SSCPlLt[i].SetPolyline();
            //    }
            //}

            ////Save
            //CHelpFunc.SaveCPlLt(SSCPlLt, ParameterInitialize.pSSFLayer.Name + "UnifiedDirections", ParameterInitialize.pWorkspace, ParameterInitialize.m_mapControl);
        }
コード例 #27
0
        private void btnSaveInterpolation_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;
            List <CPolyline>     cpllt = new List <CPolyline>();

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

            CHelpFunc.SaveCPlLt(cpllt, strFileName, ParameterInitialize.pWorkspace, ParameterInitialize.m_mapControl);
        }
コード例 #28
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            CMatchAndMergePolylines pMatchAndMergePolylines = new CMatchAndMergePolylines(ParameterInitialize);

            pMatchAndMergePolylines.MatchAndMergePolylines();

            MessageBox.Show("Done!");
        }
コード例 #29
0
        private void Choose_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            //建立文件夹,保存之后生成的要素图层
            SaveFileDialog SFD = new SaveFileDialog();

            SFD.ShowDialog();
            txtPath.Text = SFD.FileName;
        }
コード例 #30
0
        public void btnRun_Click(object sender, EventArgs e)
        {
            CParameterInitialize ParameterInitialize = _DataRecords.ParameterInitialize;

            CUnifyIndicesPolylines pUnifyIndicesPolylines = new CUnifyIndicesPolylines(ParameterInitialize);

            pUnifyIndicesPolylines.UnifyIndicesPolylines();

            MessageBox.Show("Done!");
        }