终于找到方法啦,但是还是有一个小问题,就是运行时报错,说是参数错误,我百思不得其解啊,各位高手帮帮忙看看啦,谢谢!
1 private void M_OverLayer_Click(object sender, System.EventArgs e)
2 {
3 try
4 {
5 //分析层
6 ILayer pLayer=this.axMapControl1.get_Layer(0);
7 IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;
8 ITable pInputTable=pLayer as ITable;
9 IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;
10
11 //叠加表
12 pLayer=this.axMapControl1.get_Layer(1);
13 ITable pOverlayTable=pLayer as ITable;
14
15 //叠加分析表
16 IFeatureClassName pFeatClassName=new FeatureClassNameClass();
17 pFeatClassName.FeatureType=esriFeatureType.esriFTSimple;
18 pFeatClassName.ShapeFieldName="shape";
19 pFeatClassName.ShapeType=pInputFeatClass.ShapeType;
20
21 //工作空间名称
22 IWorkspaceName pNewWSName=new WorkspaceNameClass();
23 pNewWSName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
24 pNewWSName.PathName = @"C:\temp";
25
26 //数据集名称
27 IDatasetName pDatasetName=pFeatClassName as IDatasetName;
28 pDatasetName.Name="ss";
29 pDatasetName.WorkspaceName=pNewWSName;
30
31 //几何处理
32 IBasicGeoprocessor pBGP=new BasicGeoprocessorClass();
33 IFeatureClass pOutputFeatClass=pBGP.Intersect(pInputTable,false,pOverlayTable,false,0.01,pFeatClassName);
34
35 //输出要素层设置
36 IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();
37 pOutputFeatLayer.FeatureClass=pOutputFeatClass;
38 pOutputFeatLayer.Name=pOutputFeatClass.AliasName;
39
40 this.axMapControl1.AddLayer((ILayer)pOutputFeatClass,0);
41 axMapControl1.Update();
42 }
43 catch(Exception ex)
44 {
45 MessageBox.Show(ex.Message);
46 }
47 }