AE+C# 实现MERGE,

代码参考ESRI中国社区,忘了哪个帖子了。。。
代码中路径等直接写上去了

             // 合并图层的集合
            ILayer pLayer;
            IArray pArray;
            pArray 
=   new  ArrayClass();
            
for  ( int  i  =   0 ; i  <   this .axMapControl1.LayerCount; i ++ )
             
{
                pLayer 
= this.axMapControl1.get_Layer(i);
                pArray.Add(pLayer);
               }

            
// 定义输出图层的fields表

            ITable pTable;
            IFeatureLayer pFeatureLayer;
            IFeatureClass pFeatureClass;
            pLayer 
=   this .axMapControl1.get_Layer( 0 );
            pTable 
=  (ITable)pLayer;
            pFeatureLayer
= (IFeatureLayer)pLayer;
            pFeatureClass 
=  pFeatureLayer.FeatureClass;

            
// 判断图层是否大于2个
             if ( this .axMapControl1.LayerCount <   2 )
            
{
                MessageBox.Show(
"Table QI failed");
                
return;
              }


            
// 输出文件类型
            IFeatureClassName pFeatureClassName;
            IDatasetName pDatasetName;
            IWorkspaceName pNewWSName;
            pFeatureClassName 
=   new  FeatureClassNameClass();
            pFeatureClassName.FeatureType 
=  esriFeatureType.esriFTSimple;
            pFeatureClassName.ShapeFieldName 
=   " Shape " ;
            pFeatureClassName.ShapeType 
=  pFeatureClass.ShapeType;

            
// 输出shapefile的名称和位置
            pNewWSName  =   new  WorkspaceNameClass();
            pNewWSName.WorkspaceFactoryProgID
= " esriDataSourcesFile.ShapefileWorkspaceFactory " ;
            pNewWSName.PathName 
=   " E:\\data " ;
            pDatasetName  =  (IDatasetName)pFeatureClassName;
            pDatasetName.Name 
=   " Merge_result " ;
            pDatasetName.WorkspaceName 
=  pNewWSName;
            
            
// 合并图层
            IFeatureClass pOutputFeatClass;
            IBasicGeoprocessor pBasicGeop;
            pBasicGeop 
=   new  BasicGeoprocessorClass();
            pOutputFeatClass
= pBasicGeop.Merge(pArray,pTable,pFeatureClassName);

            
// 将合并后的图层加载到Map中
            IFeatureLayer pOutputFeatLayer;
            pOutputFeatLayer 
=   new  FeatureLayerClass();
           pOutputFeatLayer.FeatureClass 
=  pOutputFeatClass;
            pOutputFeatLayer.Name 
=  pOutputFeatClass.AliasName;
            
this .axMapControl1.AddLayer(pOutputFeatLayer  as  ILayer,  0 );


 

你可能感兴趣的:(merge)