zoukankan      html  css  js  c++  java
  • Arcengine 基本操作(待更新)

            /// <summary>
            /// 删除fieldName属性值为1的弧段
            /// </summary>
            /// <param name="fieldName"></param>
            /// <param name="t"></param>
            public void DelectPolyline(string fieldName, int t)
            {
    
                ILayer pLayer = axMapControl1.get_Layer(0);
                IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
                IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
    
                IFields pIFields = pFeatureLayer.FeatureClass.Fields;
                int fieldIndex = pIFields.FindField(fieldName);
    
                var pDataset = pFeatureClass as IDataset;
                IWorkspace pWorkspace = pDataset.Workspace;
                IFeatureWorkspace pFWs = pWorkspace as IFeatureWorkspace;
    
                IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pFWs;
                pWorkspaceEdit.StartEditing(true);
                pWorkspaceEdit.StartEditOperation();
    
                IFeatureCursor pEF = pFeatureLayer.Search(null, false);
                IFeature pFeatureDe = pEF.NextFeature();
                while (pFeatureDe != null)
                {
                    if (Convert.ToInt32(pFeatureDe.get_Value(fieldIndex)) != t)
                    {
                        pFeatureDe.Delete();
                    }
                    pFeatureDe = pEF.NextFeature();
                }
                pWorkspaceEdit.StopEditOperation();
                pWorkspaceEdit.StopEditing(true);
                MessageBox.Show("删除成功");
            }
    
    
    ///若干个线要素合并成一个
     private void MergeFeatures(List<int> OneFeatureArr,ILayer tSelectLayer)
            {
                IFeatureLayer tFeatureLayer = tSelectLayer as IFeatureLayer;
                IFeatureClass pFeatureClass = tFeatureLayer.FeatureClass;
                var pDataset = pFeatureClass as IDataset;
                IWorkspace pWorkspace = pDataset.Workspace;
                IFeatureWorkspace pFWs = pWorkspace as IFeatureWorkspace;
                
                IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pFWs;
                pWorkspaceEdit.StartEditing(true);
                pWorkspaceEdit.StartEditOperation();
    
                IFeatureLayer pFeatureLayer = tSelectLayer as IFeatureLayer;
                IFeatureCursor pEF = pFeatureLayer.Search(null, false);
                IFeature pFeatureFirst = pEF.NextFeature();
                while (pFeatureFirst != null)
                {//找到在数组里的第一个要素
                    if (pFeatureFirst.OID == OneFeatureArr[0])
                    {
                        //OneFeatureArr.RemoveAt(0);//除掉第一个要素
                        break;
                    }
                    else
                        pFeatureFirst = pEF.NextFeature();
                }
                pEF = pFeatureLayer.Search(null, false);
    
                IGeometry pGeometryFirst = pFeatureFirst.Shape;
                ITopologicalOperator2 pTopOperatorFirst = (ITopologicalOperator2)pGeometryFirst;
                IRelationalOperator pRelOperatorFirst = (IRelationalOperator)pGeometryFirst;
    
                pTopOperatorFirst.IsKnownSimple_2 = false;
                pTopOperatorFirst.Simplify();
                pGeometryFirst.SnapToSpatialReference();
    
                IGeometry pGeometrySecond = null;
                IFeature pFeatureSecond = pEF.NextFeature();
    
                IGeometryCollection Geometrybag = new GeometryBagClass();//装geometry的袋子
                object oMissing = Type.Missing;
                while (pFeatureSecond != null)
                {
                    if (OneFeatureArr.IndexOf(pFeatureSecond.OID) == -1)
                    {
                        pFeatureSecond = pEF.NextFeature();
                        continue;
                    }
                    pGeometrySecond = pFeatureSecond.ShapeCopy;
                    Geometrybag.AddGeometry(pGeometrySecond, ref oMissing, ref oMissing);//将geometry装进袋子
                    //pFeatureSecond.Delete();
                    pFeatureSecond = pEF.NextFeature();
                }
                IEnumGeometry tEnumGeometry = (IEnumGeometry)Geometrybag;
                pTopOperatorFirst.ConstructUnion(tEnumGeometry);
    
                pTopOperatorFirst.IsKnownSimple_2 = false;
                pTopOperatorFirst.Simplify();
                pFeatureFirst.Shape = pGeometryFirst;           
                pFeatureFirst.Store();            
    
                pWorkspaceEdit.StopEditOperation();
                pWorkspaceEdit.StopEditing(true);
            }
  • 相关阅读:
    随便说说辞职后
    用Excel的VBA实现文本匹配与替换
    [转]为什么你做不到呢?
    [转]女生,你为什么不沉住气奋斗?
    写在互联网分析的前面
    回归白领的生活
    NSSortDescriptor:对NSDictionary的NSArray进行排序
    本团队推荐:大神开发的仿原神风格ue5开发MMOARPG核心战斗系统
    UE4外包团队:UE4开发元宇宙项目 UE5开发元宇宙或最佳?
    元宇宙外包团队:Unity开发元宇宙应用,在元宇宙里里Unity扮演什么角色?
  • 原文地址:https://www.cnblogs.com/jinqier/p/4153525.html
Copyright © 2011-2022 走看看