AE开发中,矢量图层叠加分析需要用到的主要类为BasicGeoprocessor,其主要接口为IBasicGeoprocessor。IBasicGeoprocessor接口提供了基本的空间数据处理的方法和属性,其中包括叠加求交(Interset)和叠加求和(Union)。
下面提供两个叠加求交的开发实例:
一、 VB+AE9.1叠加求交示例代码:
1
Private
Sub
M_OverLayer_Click()
2
'
Get the input layer and feature class
3
Dim
pLayer
As
ILayer
4
Set
pLayer
=
MapControl1.Layer(
0
)
5
Dim
pInputFeatLayer
As
IFeatureLayer
6
Set
pInputFeatLayer
=
pLayer
7
'
Use the Itable interface from the Layer (not from the FeatureClass)
8
9
Dim
pInputTable
As
ITable
10
Set
pInputTable
=
pLayer
11
'
Get the input feature class.
12
'
The Input feature class properties, such as shape type,
13
'
will be needed for the output
14
15
Dim
pInputFeatClass
As
IFeatureClass
16
Set
pInputFeatClass
=
pInputFeatLayer.FeatureClass
17
'
Get the overlay layer
18
'
Use the Itable interface from the Layer (not from the FeatureClass)
19
Set
pLayer
=
MapControl1.Layer(
1
)
20
Dim
pOverlayTable
As
ITable
21
Set
pOverlayTable
=
pLayer
22
23
'
Error checking
24
If
pInputTable
Is
Nothing
Then
25
MsgBox
"
Table QI failed
"
26
Exit
Sub
27
End
If
28
29
If
pOverlayTable
Is
Nothing
Then
30
MsgBox
"
Table QI failed
"
31
Exit
Sub
32
End
If
33
34
'
Define the output feature class name and shape type (taken from the
35
'
properties of the input feature class)
36
Dim
pFeatClassName
As
IFeatureClassName
37
Set
pFeatClassName
=
New
FeatureClassName
38
With
pFeatClassName
39
.FeatureType
=
esriFTSimple
40
.ShapeFieldName
=
"
Shape
"
41
.ShapeType
=
pInputFeatClass.ShapeType
42
End
With
43
44
'
Set output location and feature class name
45
Dim
pNewWSName
As
IWorkspaceName
46
Set
pNewWSName
=
New
WorkspaceName
47
pNewWSName.WorkspaceFactoryProgID
=
"
esriCore.ShapeFileWorkspaceFactory.1
"
48
pNewWSName.PathName
=
"
C:/temp
"
49
50
Dim
pDatasetName
As
IDatasetName
51
Set
pDatasetName
=
pFeatClassName
52
pDatasetName.Name
=
"
Intersect_result
"
53
Set
pDatasetName.WorkspaceName
=
pNewWSName
54
'
Set the tolerance. Passing 0.0 causes the default tolerance to be used.
55
'
The default tolerance is 1/10,000 of the extent of the data frame's spatial domain
56
57
Dim
tol
As
Double
58
tol
=
0
#
'
Perform the intersect
59
Dim
pBGP
As
IBasicGeoprocessor
60
Set
pBGP
=
New
BasicGeoprocessor
61
62
Dim
pOutputFeatClass
As
IFeatureClass
63
Set
pOutputFeatClass
=
pBGP.Intersect(pInputTable,
False
, pOverlayTable,
False
, _
64
tol, pFeatClassName)
65
66
'
Add the output layer to the map
67
Dim
pOutputFeatLayer
As
IFeatureLayer
68
Set
pOutputFeatLayer
=
New
FeatureLayer
69
Set
pOutputFeatLayer.FeatureClass
=
pOutputFeatClass
70
pOutputFeatLayer.Name
=
pOutputFeatClass.AliasName
71
MapControl1.AddLayer pOutputFeatLayer
72
End Sub
73
74
75

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

二、C#+AE9.1叠加求交示例代码:
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
}
来自:http://www.cnblogs.com/raymond19840709/archive/2007/01/12/618998.html

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47
