arcEngine 求点到polyline集合的最近点 包括垂足计算

这段代码演示了如何使用ArcEngine找到一个点到polyline集合的最近点,并进行垂足计算。在buttonItem21_Click事件中,通过CBuffer类的方法获取最近的线段、起点、终点,以及计算的垂足点,并在地图上绘制这些元素。代码还展示了如何更新和刷新地图视图。

测试代码

  private void buttonItem21_Click(object sender, EventArgs e)
        {
            DateTime dt1 = DateTime.Now;
            CBuffer buffer = new CBuffer();
            //List<IGeometry> geoList = buffer.GetBufferInterList(this.myMapControl1.get_Layer(0) as IFeatureLayer, this.PntCurrent, 100000);
            int disNum = -1;
            ILine line = buffer.GetNearestLine(this.myMapControl1.get_Layer(0) as IFeatureLayer, this.PntCurrent, 100000, ref disNum);
            IGraphicsContainer pGraphicsContainer = this.myMapControl1.Map as IGraphicsContainer;
            pGraphicsContainer.DeleteAllElements();


            //foreach (IGeometry kv in geoList)
            //{
            //    ILineElement pLineElement;
            //    pLineElement = new LineElementClass();
            //    IElement pElement;
            //    pElement = pLineElement as IElement;
            //    pElement.Geometry = kv;
            //    pGraphicsContainer.AddElement((IElement)pLineElement, 0);
            //}          


            IMarkerElement pMarkerElement4;
            pMarkerElement4 = new MarkerElementClass();
            IElement pElement4;
            pElement4 = pMarkerElement4 as IElement;
            pElement4.Geometry = this.PntCurrent;
            pGraphicsContainer.AddElement((IElement)pMarkerElement4, 0);


            IMarkerElement pMarkerElement;
            pMarkerElement = new MarkerElementClass();
            IElement pElement2;
            pElement2 = pMarkerElement as IElement;
            pElement2.Geometry = line.FromPoint;
            pGraphicsContainer.AddElement((IElement)pMarkerElement, 0);


            IMarkerElement pMarkerElement2;
            pMarkerElement2 = new MarkerElementClass();
            IElement pElement3;
            pElement3 = pMarkerElement2 as IElement;
            pElement3.Geometry = line.ToPoint;
            pGraphicsContainer.AddElement((IElement)pMarkerElement2, 0);


            I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值