1.加载Shapefile数据
1
IWorkspaceFactory pWorkspaceFactory;
2
IFeatureWorkspace pFeatureWorkspace;
3
IFeatureLayer pFeatureLayer;
4
5
//
获取当前路径和文件名
6
OpenFileDialog dlg
=
new
OpenFileDialog();
7
dlg.Filter
=
"
Shape(*.shp)|*.shp|All Files(*.*)|*.*
"
;
8
dlg.Title
=
"
Open Shapefile data
"
;
9
dlg.ShowDialog();
10
string
strFullPath
=
dlg.FileName;
11
if
(strFullPath
==
""
)
return
;
12
int
Index
=
strFullPath.LastIndexOf(
"
//
"
);
13
string
filePath
=
strFullPath.Substring(
0
, Index);
14
string
fileName
=
strFullPath.Substring(Index
+
1
);
15
16
//
打开工作空间并添加shp文件
17
pWorkspaceFactory
=
new
ShapefileWorkspaceFactoryClass();
18
pFeatureWorkspace
=
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,
0
);
19
pFeatureLayer
=
new
FeatureLayerClass();
20
21
pFeatureLayer.FeatureClass
=
pFeatureWorkspace.OpenFeatureClass(fileName);
22
pFeatureLayer.Name
=
pFeatureLayer.FeatureClass.AliasName;
23
axMapControl1.Map.AddLayer(pFeatureLayer);
24
axMapControl1.ActiveView.Refresh();
IWorkspaceFactory pWorkspaceFactory;2
IFeatureWorkspace pFeatureWorkspace;3
IFeatureLayer pFeatureLayer;4

5
//
获取当前路径和文件名
6
OpenFileDialog dlg
=
new
OpenFileDialog();7
dlg.Filter
=
"
Shape(*.shp)|*.shp|All Files(*.*)|*.*
"
;8
dlg.Title
=
"
Open Shapefile data
"
;9
dlg.ShowDialog();10
string
strFullPath
=
dlg.FileName;11
if
(strFullPath
==
""
)
return
;12
int
Index
=
strFullPath.LastIndexOf(
"
//
"
);13
string
filePath
=
strFullPath.Substring(
0
, Index);14
string
fileName
=
strFullPath.Substring(Index
+
1
);15

16
//
打开工作空间并添加shp文件
17
pWorkspaceFactory
=
new
ShapefileWorkspaceFactoryClass();18
pFeatureWorkspace
=
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,
0
);19
pFeatureLayer
=
new
FeatureLayerClass();20
21
pFeatureLayer.FeatureClass
=
pFeatureWorkspace.OpenFeatureClass(fileName);22
pFeatureLayer.Name
=
pFeatureLayer.FeatureClass.AliasName;23
axMapControl1.Map.AddLayer(pFeatureLayer);24
axMapControl1.ActiveView.Refresh();
2.加载栅格数据
1
IWorkspaceFactory pWorkspaceFactory;
2
IRasterWorkspace pRasterWorkspace;
3
4
OpenFileDialog dlg
=
new
OpenFileDialog();
5
dlg.Filter
=
"
Layer File(*.lyr)|*.jpg;*.bmp;*.tiff
"
;
6
dlg.Title
=
"
Open Raster Data File
"
;
7
dlg.ShowDialog();
8
//
获取当前路径和文件名
9
string
strFullPath
=
dlg.FileName;
10
if
(strFullPath
==
""
)
return
;
11
int
Index
=
strFullPath.LastIndexOf(
"
//
"
);
12
string
fileName
=
strFullPath.Substring(Index
+
1
);
13
string
filePath
=
strFullPath.Substring(
0
, Index);
14
15
pWorkspaceFactory
=
new
RasterWorkspaceFactoryClass();
16
pRasterWorkspace
=
(IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath,
0
);
17
IRasterDataset pRasterDataset
=
(IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);
18
IRasterLayer pRasterLayer
=
new
RasterLayerClass();
19
pRasterLayer.CreateFromDataset(pRasterDataset);
20
axMapControl1.Map.AddLayer(pRasterLayer);
21
axMapControl1.ActiveView.Refresh();
IWorkspaceFactory pWorkspaceFactory;2
IRasterWorkspace pRasterWorkspace;3

4
OpenFileDialog dlg
=
new
OpenFileDialog();5
dlg.Filter
=
"
Layer File(*.lyr)|*.jpg;*.bmp;*.tiff
"
;6
dlg.Title
=
"
Open Raster Data File
"
;7
dlg.ShowDialog();8
//
获取当前路径和文件名
9
string
strFullPath
=
dlg.FileName;10
if
(strFullPath
==
""
)
return
;11
int
Index
=
strFullPath.LastIndexOf(
"
//
"
);12
string
fileName
=
strFullPath.Substring(Index
+
1
);13
string
filePath
=
strFullPath.Substring(
0
, Index);14

15
pWorkspaceFactory
=
new
RasterWorkspaceFactoryClass();16
pRasterWorkspace
=
(IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath,
0
);17
IRasterDataset pRasterDataset
=
(IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);18
IRasterLayer pRasterLayer
=
new
RasterLayerClass();19
pRasterLayer.CreateFromDataset(pRasterDataset);20
axMapControl1.Map.AddLayer(pRasterLayer);21
axMapControl1.ActiveView.Refresh();
3.加载CAD数据
1
IWorkspaceFactory pWorkspaceFactory;
2
IFeatureWorkspace pFeatureWorkspace;
3
IFeatureLayer pFeatureLayer;
4
IFeatureDataset pFeatureDataset;
5
//
获取当前路径和文件名
6
OpenFileDialog dlg
=
new
OpenFileDialog();
7
dlg.Filter
=
"
CAD(*.dwg)|*.dwg|All Files(*.*)|*.*
"
;
8
dlg.Title
=
"
Open CAD Data file
"
;
9
dlg.ShowDialog();
10
string
strFullPath
=
dlg.FileName;
11
if
(strFullPath
==
""
)
return
;
12
int
Index
=
strFullPath.LastIndexOf(
"
//
"
);
13
string
filePath
=
strFullPath.Substring(
0
, Index);
14
string
fileName
=
strFullPath.Substring(Index
+
1
);
15
//
打开CAD数据集
16
pWorkspaceFactory
=
new
CadWorkspaceFactoryClass();
17
pFeatureWorkspace
=
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,
0
);
18
//
打开一个要素集
19
pFeatureDataset
=
pFeatureWorkspace.OpenFeatureDataset(fileName);
20
//
IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
21
IFeatureClassContainer pFeatClassContainer
=
(IFeatureClassContainer)pFeatureDataset;
22
//
对CAD文件中的要素进行遍历处理
23
for
(
int
i
=
0
; i
<
pFeatClassContainer.ClassCount
-
1
; i
++
)
24
{
25
IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);
26
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)
27
//如果是注记,则添加注记层
28
pFeatureLayer = new CadAnnotationLayerClass();
29
else//如果是点、线、面,则添加要素层
30
{
31
pFeatureLayer = new FeatureLayerClass();
32
pFeatureLayer.Name = pFeatClass.AliasName;
33
pFeatureLayer.FeatureClass = pFeatClass;
34
axMapControl1.Map.AddLayer(pFeatureLayer);
35
axMapControl1.ActiveView.Refresh();
36
}
37
}
IWorkspaceFactory pWorkspaceFactory;2
IFeatureWorkspace pFeatureWorkspace;3
IFeatureLayer pFeatureLayer;4
IFeatureDataset pFeatureDataset;5
//
获取当前路径和文件名
6
OpenFileDialog dlg
=
new
OpenFileDialog();7
dlg.Filter
=
"
CAD(*.dwg)|*.dwg|All Files(*.*)|*.*
"
;8
dlg.Title
=
"
Open CAD Data file
"
;9
dlg.ShowDialog();10
string
strFullPath
=
dlg.FileName;11
if
(strFullPath
==
""
)
return
;12
int
Index
=
strFullPath.LastIndexOf(
"
//
"
);13
string
filePath
=
strFullPath.Substring(
0
, Index);14
string
fileName
=
strFullPath.Substring(Index
+
1
);15
//
打开CAD数据集
16
pWorkspaceFactory
=
new
CadWorkspaceFactoryClass();17
pFeatureWorkspace
=
(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,
0
);18
//
打开一个要素集
19
pFeatureDataset
=
pFeatureWorkspace.OpenFeatureDataset(fileName);20
//
IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
21
IFeatureClassContainer pFeatClassContainer
=
(IFeatureClassContainer)pFeatureDataset;22
//
对CAD文件中的要素进行遍历处理
23
for
(
int
i
=
0
; i
<
pFeatClassContainer.ClassCount
-
1
; i
++
)24
{25
IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);26
if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)27
//如果是注记,则添加注记层28
pFeatureLayer = new CadAnnotationLayerClass();29
else//如果是点、线、面,则添加要素层30
{31
pFeatureLayer = new FeatureLayerClass();32
pFeatureLayer.Name = pFeatClass.AliasName;33
pFeatureLayer.FeatureClass = pFeatClass;34
axMapControl1.Map.AddLayer(pFeatureLayer);35
axMapControl1.ActiveView.Refresh();36
}37
}
4.加载PersonGeodatabase数据
1
IWorkspaceFactory pAccessWorkspaceFactory;
2
IFeatureWorkspace pFeatureWorkspace;
3
IFeatureLayer pFeatureLayer;
4
IFeatureDataset pFeatureDataset;
5
6
//
获取当前路径和文件名
7
OpenFileDialog dlg
=
new
OpenFileDialog();
8
dlg.Filter
=
"
Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.*
"
;
9
dlg.Title
=
"
Open PersonGeodatabase file
"
;
10
dlg.ShowDialog();
11
string
strFullPath
=
dlg.FileName;
12
if
(strFullPath
==
""
)
return
;
13
14
//
打开personGeodatabase,并添加图层
15
pAccessWorkspaceFactory
=
new
AccessWorkspaceFactoryClass();
16
//
打开工作空间并遍历数据集
17
IWorkspace pWorkspace
=
pAccessWorkspaceFactory.OpenFromFile(strFullPath,
0
);
18
IEnumDataset pEnumDataset
=
pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
19
pEnumDataset.Reset();
20
IDataset pDataset
=
pEnumDataset.Next();
21
//
如果数据集是IFeatureDataset,则遍历它下面的子类
22
if
(pDataset
is
IFeatureDataset)
23
{
24
pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);
25
pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
26
IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
27
pEnumDataset1.Reset();
28
IDataset pDataset1 = pEnumDataset1.Next();
29
//如果子类是FeatureClass,则添加到axMapControl1中
30
if (pDataset1 is IFeatureClass)
31
{
32
pFeatureLayer = new FeatureLayerClass();
33
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
34
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
35
axMapControl1.Map.AddLayer(pFeatureLayer);
36
axMapControl1.ActiveView.Refresh();
37
}
38
else
39
{
40
MessageBox.Show("No FeatureLayer!");
41
}
42
}
43
else
44
{
45
pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
46
pFeatureLayer = new FeatureLayerClass();
47
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("图层名");
48
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
49
axMapControl1.Map.AddLayer(pFeatureLayer);
50
axMapControl1.ActiveView.Refresh();
51
}
IWorkspaceFactory pAccessWorkspaceFactory;2
IFeatureWorkspace pFeatureWorkspace;3
IFeatureLayer pFeatureLayer;4
IFeatureDataset pFeatureDataset;5

6
//
获取当前路径和文件名
7
OpenFileDialog dlg
=
new
OpenFileDialog();8
dlg.Filter
=
"
Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.*
"
;9
dlg.Title
=
"
Open PersonGeodatabase file
"
;10
dlg.ShowDialog();11
string
strFullPath
=
dlg.FileName;12
if
(strFullPath
==
""
)
return
;13

14
//
打开personGeodatabase,并添加图层
15
pAccessWorkspaceFactory
=
new
AccessWorkspaceFactoryClass();16
//
打开工作空间并遍历数据集
17
IWorkspace pWorkspace
=
pAccessWorkspaceFactory.OpenFromFile(strFullPath,
0
);18
IEnumDataset pEnumDataset
=
pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);19
pEnumDataset.Reset();20
IDataset pDataset
=
pEnumDataset.Next();21
//
如果数据集是IFeatureDataset,则遍历它下面的子类
22
if
(pDataset
is
IFeatureDataset)23
{24
pFeatureWorkspace = (IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath, 0);25
pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);26
IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;27
pEnumDataset1.Reset();28
IDataset pDataset1 = pEnumDataset1.Next();29
//如果子类是FeatureClass,则添加到axMapControl1中30
if (pDataset1 is IFeatureClass)31
{32
pFeatureLayer = new FeatureLayerClass();33
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);34
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;35
axMapControl1.Map.AddLayer(pFeatureLayer);36
axMapControl1.ActiveView.Refresh();37
}38
else39
{40
MessageBox.Show("No FeatureLayer!");41
}42
}
43
else
44
{45
pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;46
pFeatureLayer = new FeatureLayerClass();47
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass("图层名");48
pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;49
axMapControl1.Map.AddLayer(pFeatureLayer);50
axMapControl1.ActiveView.Refresh();51
}
5.加载SDE数据库数据
1
public
ESRI.ArcGIS.Geodatabase.IWorkspace arcSDEWorkspaceOpen(String server, String instance, String user, String password, String database, String version)
2
{
3
try
4
{
5
// Create and populate the property set
6
ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();
7
propertySet.SetProperty("SERVER", server);
8
propertySet.SetProperty("INSTANCE", instance);
9
propertySet.SetProperty("DATABASE", database);
10
propertySet.SetProperty("USER", user);
11
propertySet.SetProperty("PASSWORD", password);
12
propertySet.SetProperty("VERSION", version);
13
14
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 workspaceFactory;
15
workspaceFactory = (ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)new SdeWorkspaceFactoryClass();
16
return workspaceFactory.Open(propertySet, 0);
17
}
18
catch (Exception e)
19
{
20
throw new Exception(String.Format("arcSDEWorkspaceOpen: {0}", e.Message), e);
21
}
22
}
23
24
IWorkspace pWorkspace
=
arcSDEWorkspaceOpen(
"
计算机名
"
,
"
5151
"
,
"数据库
用户
"
,
"
密码
"
,
""
,
"
sde.DEFAULT
"
);
25
26
IFeatureWorkspace pFeattureWS
=
(IFeatureWorkspace)pWorkspace;
27
IFeatureClass pFeatureClass
=
pFeattureWS.OpenFeatureClass(
"图层名
"
);
28
IFeatureLayer pFeatureLayer
=
new
FeatureLayerClass();
29
pFeatureLayer.FeatureClass
=
pFeatureClass;
30
31
axMapControl1.AddLayer(pFeatureLayer);
32
axMapControl1.Refresh();
public
ESRI.ArcGIS.Geodatabase.IWorkspace arcSDEWorkspaceOpen(String server, String instance, String user, String password, String database, String version)2
{3
try4
{5
// Create and populate the property set6
ESRI.ArcGIS.esriSystem.IPropertySet propertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();7
propertySet.SetProperty("SERVER", server);8
propertySet.SetProperty("INSTANCE", instance);9
propertySet.SetProperty("DATABASE", database);10
propertySet.SetProperty("USER", user);11
propertySet.SetProperty("PASSWORD", password);12
propertySet.SetProperty("VERSION", version);13

14
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 workspaceFactory;15
workspaceFactory = (ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)new SdeWorkspaceFactoryClass();16
return workspaceFactory.Open(propertySet, 0);17
}18
catch (Exception e)19
{20
throw new Exception(String.Format("arcSDEWorkspaceOpen: {0}", e.Message), e);21
}22
}
23

24
IWorkspace pWorkspace
=
arcSDEWorkspaceOpen(
"
计算机名
"
,
"
5151
"
,
"数据库
用户
"
,
"
密码
"
,
""
,
"
sde.DEFAULT
"
);25

26
IFeatureWorkspace pFeattureWS
=
(IFeatureWorkspace)pWorkspace;27
IFeatureClass pFeatureClass
=
pFeattureWS.OpenFeatureClass(
"图层名
"
);28
IFeatureLayer pFeatureLayer
=
new
FeatureLayerClass();29
pFeatureLayer.FeatureClass
=
pFeatureClass;30

31
axMapControl1.AddLayer(pFeatureLayer);32
axMapControl1.Refresh();
本文详细介绍了如何使用ArcGIS加载不同类型的地理空间数据,包括Shapefile、栅格、CAD和PersonGeodatabase数据,并通过代码示例展示了具体操作过程。

368

被折叠的 条评论
为什么被折叠?



