GIS的积累
It is never to late to learn

导航

 

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);
posted on 2009-03-08 16:12  GIS的学习  阅读(253)  评论(0编辑  收藏  举报