zoukankan      html  css  js  c++  java
  • Arcgis Engine 切割图斑(ITool)

            public override void OnMouseDown(int Button, int Shift, int X, int Y)
            {
                // TODO:  Add Cut.OnMouseDown implementation
                if(Button==1)//左键按下
                {
                    //拿到hook
                    IMapControl3 pMapControlx = (IMapControl3)m_hookHelper.Hook;
    
                    IFeatureLayer pFeatureLayer = pMapControlx.get_Layer(0) as IFeatureLayer;
    
                    //划线
                    IGeometry pline = (IGeometry)pMapControlx.TrackLine();
    
                    
                    //拿到划线范围内的所有feature
                    IGeometry pGeometry = pline as IGeometry;
                    IMap pMap = pMapControlx.Map;
                    pMap.SelectByShape(pGeometry, null, false);
    //转成IRealtionOperator接口,以便在遍历时判断几何位置关系。 IRelationalOperator rela = (pline as IPolyline) as IRelationalOperator; //拿到切割目标集合 IEnumFeature pEnumFeature = (IEnumFeature)pMap.FeatureSelection; IFeature pFeature = pEnumFeature.Next(); //依次遍历 while (pFeature != null) { if(rela.Crosses(pFeature.Shape))//判断是否Cross { try { //把面转成ITopologicalOperator,使用Cut函数 ITopologicalOperator topo = (pFeature.Shape as IPolygon) as ITopologicalOperator; //新建两个面,作为切割函数的参数,切割后的两个对象保存于这两个面之中 IGeometry pLeftGeometry = new PolygonClass(); IGeometry pRightGeometry = new PolygonClass(); topo.Cut((pline as IPolyline), out pLeftGeometry, out pRightGeometry); //由FeatureClass新建Feature IFeature pFeatureLeft = pFeatureLayer.FeatureClass.CreateFeature(); IFeature pFeatureRight = pFeatureLayer.FeatureClass.CreateFeature(); //保存 pFeatureLeft.Shape = pLeftGeometry; pFeatureRight.Shape = pRightGeometry; pFeatureLeft.Store(); pFeatureRight.Store(); //删除 pFeature.Delete(); } catch { } } pFeature = pEnumFeature.Next(); } //清除选择 IFeatureSelection pFeatureSelectionClear= pMapControlx.get_Layer(0) as IFeatureSelection; pFeatureSelectionClear.Clear(); pMapControlx.Refresh(); } }

      

  • 相关阅读:
    Python基础-字符串方法 、文件操作
    Python基础-列表、字典
    Python基础作业-用户登录
    LeetCode 78. Subsets
    LeetCode 77. Combinations
    LeetCode 76. Minimum Window Substring
    LeetCode 74. Search a 2D Matrix
    LeetCode 73. Set Matrix Zeroes
    LightOJ 1043
    LightOJ 1042
  • 原文地址:https://www.cnblogs.com/xianerwonder/p/4311479.html
Copyright © 2011-2022 走看看