1.加载Shapefile数据
2.加载栅格数据
3.加载CAD数据
1
IWorkspaceFactorypWorkspaceFactory;
2
IFeatureWorkspacepFeatureWorkspace;
3
IFeatureLayerpFeatureLayer;
4
5
//获取当前路径和文件名
6
OpenFileDialogdlg=newOpenFileDialog();
7
dlg.Filter="Shape(*.shp)|*.shp|AllFiles(*.*)|*.*";
8
dlg.Title="OpenShapefiledata";
9
dlg.ShowDialog();
10
stringstrFullPath=dlg.FileName;
11
if(strFullPath=="")return;
12
intIndex=strFullPath.LastIndexOf("\\");
13
stringfilePath=strFullPath.Substring(0,Index);
14
stringfileName=strFullPath.Substring(Index+1);
15
16
//打开工作空间并添加shp文件
17
pWorkspaceFactory=newShapefileWorkspaceFactoryClass();
18
pFeatureWorkspace=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);
19
pFeatureLayer=newFeatureLayerClass();
20
21
pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass(fileName);
22
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
23
axMapControl1.Map.AddLayer(pFeatureLayer);
24
axMapControl1.ActiveView.Refresh();
IWorkspaceFactorypWorkspaceFactory;2
IFeatureWorkspacepFeatureWorkspace;3
IFeatureLayerpFeatureLayer;4

5
//获取当前路径和文件名6
OpenFileDialogdlg=newOpenFileDialog();7
dlg.Filter="Shape(*.shp)|*.shp|AllFiles(*.*)|*.*";8
dlg.Title="OpenShapefiledata";9
dlg.ShowDialog();10
stringstrFullPath=dlg.FileName;11
if(strFullPath=="")return;12
intIndex=strFullPath.LastIndexOf("\\");13
stringfilePath=strFullPath.Substring(0,Index);14
stringfileName=strFullPath.Substring(Index+1);15

16
//打开工作空间并添加shp文件17
pWorkspaceFactory=newShapefileWorkspaceFactoryClass();18
pFeatureWorkspace=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);19
pFeatureLayer=newFeatureLayerClass();20

21
pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass(fileName);22
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;23
axMapControl1.Map.AddLayer(pFeatureLayer);24
axMapControl1.ActiveView.Refresh();
2.加载栅格数据
1
IWorkspaceFactorypWorkspaceFactory;
2
IRasterWorkspacepRasterWorkspace;
3
4
OpenFileDialogdlg=newOpenFileDialog();
5
dlg.Filter="LayerFile(*.lyr)|*.jpg;*.bmp;*.tiff";
6
dlg.Title="OpenRasterDataFile";
7
dlg.ShowDialog();
8
//获取当前路径和文件名
9
stringstrFullPath=dlg.FileName;
10
if(strFullPath=="")return;
11
intIndex=strFullPath.LastIndexOf("\\");
12
stringfileName=strFullPath.Substring(Index+1);
13
stringfilePath=strFullPath.Substring(0,Index);
14
15
pWorkspaceFactory=newRasterWorkspaceFactoryClass();
16
pRasterWorkspace=(IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);
17
IRasterDatasetpRasterDataset=(IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);
18
IRasterLayerpRasterLayer=newRasterLayerClass();
19
pRasterLayer.CreateFromDataset(pRasterDataset);
20
axMapControl1.Map.AddLayer(pRasterLayer);
21
axMapControl1.ActiveView.Refresh();
IWorkspaceFactorypWorkspaceFactory;2
IRasterWorkspacepRasterWorkspace;3

4
OpenFileDialogdlg=newOpenFileDialog();5
dlg.Filter="LayerFile(*.lyr)|*.jpg;*.bmp;*.tiff";6
dlg.Title="OpenRasterDataFile";7
dlg.ShowDialog();8
//获取当前路径和文件名9
stringstrFullPath=dlg.FileName;10
if(strFullPath=="")return;11
intIndex=strFullPath.LastIndexOf("\\");12
stringfileName=strFullPath.Substring(Index+1);13
stringfilePath=strFullPath.Substring(0,Index);14

15
pWorkspaceFactory=newRasterWorkspaceFactoryClass();16
pRasterWorkspace=(IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);17
IRasterDatasetpRasterDataset=(IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);18
IRasterLayerpRasterLayer=newRasterLayerClass();19
pRasterLayer.CreateFromDataset(pRasterDataset);20
axMapControl1.Map.AddLayer(pRasterLayer);21
axMapControl1.ActiveView.Refresh();
3.加载CAD数据
1
IWorkspaceFactorypWorkspaceFactory;
2
IFeatureWorkspacepFeatureWorkspace;
3
IFeatureLayerpFeatureLayer;
4
IFeatureDatasetpFeatureDataset;
5
//获取当前路径和文件名
6
OpenFileDialogdlg=newOpenFileDialog();
7
dlg.Filter="CAD(*.dwg)|*.dwg|AllFiles(*.*)|*.*";
8
dlg.Title="OpenCADDatafile";
9
dlg.ShowDialog();
10
stringstrFullPath=dlg.FileName;
11
if(strFullPath=="")return;
12
intIndex=strFullPath.LastIndexOf("\\");
13
stringfilePath=strFullPath.Substring(0,Index);
14
stringfileName=strFullPath.Substring(Index+1);
15
//打开CAD数据集
16
pWorkspaceFactory=newCadWorkspaceFactoryClass();
17
pFeatureWorkspace=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);
18
//打开一个要素集
19
pFeatureDataset=pFeatureWorkspace.OpenFeatureDataset(fileName);
20
//IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
21
IFeatureClassContainerpFeatClassContainer=(IFeatureClassContainer)pFeatureDataset;
22
//对CAD文件中的要素进行遍历处理
23
for(inti=0;i<pFeatClassContainer.ClassCount-1;i++)
24
{
25
IFeatureClasspFeatClass=pFeatClassContainer.get_Class(i);
26
if(pFeatClass.FeatureType==esriFeatureType.esriFTCoverageAnnotation)
27
//如果是注记,则添加注记层
28
pFeatureLayer=newCadAnnotationLayerClass();
29
else//如果是点、线、面,则添加要素层
30
{
31
pFeatureLayer=newFeatureLayerClass();
32
pFeatureLayer.Name=pFeatClass.AliasName;
33
pFeatureLayer.FeatureClass=pFeatClass;
34
axMapControl1.Map.AddLayer(pFeatureLayer);
35
axMapControl1.ActiveView.Refresh();
36
}
37
}
4.加载PersonGeodatabase数据
IWorkspaceFactorypWorkspaceFactory;2
IFeatureWorkspacepFeatureWorkspace;3
IFeatureLayerpFeatureLayer;4
IFeatureDatasetpFeatureDataset;5
//获取当前路径和文件名6
OpenFileDialogdlg=newOpenFileDialog();7
dlg.Filter="CAD(*.dwg)|*.dwg|AllFiles(*.*)|*.*";8
dlg.Title="OpenCADDatafile";9
dlg.ShowDialog();10
stringstrFullPath=dlg.FileName;11
if(strFullPath=="")return;12
intIndex=strFullPath.LastIndexOf("\\");13
stringfilePath=strFullPath.Substring(0,Index);14
stringfileName=strFullPath.Substring(Index+1);15
//打开CAD数据集16
pWorkspaceFactory=newCadWorkspaceFactoryClass();17
pFeatureWorkspace=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);18
//打开一个要素集19
pFeatureDataset=pFeatureWorkspace.OpenFeatureDataset(fileName);20
//IFeaturClassContainer可以管理IFeatureDataset中的每个要素类21
IFeatureClassContainerpFeatClassContainer=(IFeatureClassContainer)pFeatureDataset;22
//对CAD文件中的要素进行遍历处理23
for(inti=0;i<pFeatClassContainer.ClassCount-1;i++)24
{25
IFeatureClasspFeatClass=pFeatClassContainer.get_Class(i);26
if(pFeatClass.FeatureType==esriFeatureType.esriFTCoverageAnnotation)27
//如果是注记,则添加注记层28
pFeatureLayer=newCadAnnotationLayerClass();29
else//如果是点、线、面,则添加要素层30
{31
pFeatureLayer=newFeatureLayerClass();32
pFeatureLayer.Name=pFeatClass.AliasName;33
pFeatureLayer.FeatureClass=pFeatClass;34
axMapControl1.Map.AddLayer(pFeatureLayer);35
axMapControl1.ActiveView.Refresh();36
}37
}
1
IWorkspaceFactorypAccessWorkspaceFactory;
2
IFeatureWorkspacepFeatureWorkspace;
3
IFeatureLayerpFeatureLayer;
4
IFeatureDatasetpFeatureDataset;
5
6
//获取当前路径和文件名
7
OpenFileDialogdlg=newOpenFileDialog();
8
dlg.Filter="PersonalGeodatabase(*.mdb)|*.mdb|AllFiles(*.*)|*.*";
9
dlg.Title="OpenPersonGeodatabasefile";
10
dlg.ShowDialog();
11
stringstrFullPath=dlg.FileName;
12
if(strFullPath=="")return;
13
14
//打开personGeodatabase,并添加图层
15
pAccessWorkspaceFactory=newAccessWorkspaceFactoryClass();
16
//打开工作空间并遍历数据集
17
IWorkspacepWorkspace=pAccessWorkspaceFactory.OpenFromFile(strFullPath,0);
18
IEnumDatasetpEnumDataset=pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
19
pEnumDataset.Reset();
20
IDatasetpDataset=pEnumDataset.Next();
21
//如果数据集是IFeatureDataset,则遍历它下面的子类
22
if(pDatasetisIFeatureDataset)
23
{
24
pFeatureWorkspace=(IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath,0);
25
pFeatureDataset=pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
26
IEnumDatasetpEnumDataset1=pFeatureDataset.Subsets;
27
pEnumDataset1.Reset();
28
IDatasetpDataset1=pEnumDataset1.Next();
29
//如果子类是FeatureClass,则添加到axMapControl1中
30
if(pDataset1isIFeatureClass)
31
{
32
pFeatureLayer=newFeatureLayerClass();
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("NoFeatureLayer!");
41
}
42
}
43
else
44
{
45
pFeatureWorkspace=(IFeatureWorkspace)pWorkspace;
46
pFeatureLayer=newFeatureLayerClass();
47
pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass("图层名");
48
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
49
axMapControl1.Map.AddLayer(pFeatureLayer);
50
axMapControl1.ActiveView.Refresh();
51
}
5.加载SDE数据库数据
IWorkspaceFactorypAccessWorkspaceFactory;2
IFeatureWorkspacepFeatureWorkspace;3
IFeatureLayerpFeatureLayer;4
IFeatureDatasetpFeatureDataset;5

6
//获取当前路径和文件名7
OpenFileDialogdlg=newOpenFileDialog();8
dlg.Filter="PersonalGeodatabase(*.mdb)|*.mdb|AllFiles(*.*)|*.*";9
dlg.Title="OpenPersonGeodatabasefile";10
dlg.ShowDialog();11
stringstrFullPath=dlg.FileName;12
if(strFullPath=="")return;13

14
//打开personGeodatabase,并添加图层15
pAccessWorkspaceFactory=newAccessWorkspaceFactoryClass();16
//打开工作空间并遍历数据集17
IWorkspacepWorkspace=pAccessWorkspaceFactory.OpenFromFile(strFullPath,0);18
IEnumDatasetpEnumDataset=pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);19
pEnumDataset.Reset();20
IDatasetpDataset=pEnumDataset.Next();21
//如果数据集是IFeatureDataset,则遍历它下面的子类22
if(pDatasetisIFeatureDataset)23
{24
pFeatureWorkspace=(IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath,0);25
pFeatureDataset=pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);26
IEnumDatasetpEnumDataset1=pFeatureDataset.Subsets;27
pEnumDataset1.Reset();28
IDatasetpDataset1=pEnumDataset1.Next();29
//如果子类是FeatureClass,则添加到axMapControl1中30
if(pDataset1isIFeatureClass)31
{32
pFeatureLayer=newFeatureLayerClass();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("NoFeatureLayer!");41
}42
}43
else44
{45
pFeatureWorkspace=(IFeatureWorkspace)pWorkspace;46
pFeatureLayer=newFeatureLayerClass();47
pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass("图层名");48
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;49
axMapControl1.Map.AddLayer(pFeatureLayer);50
axMapControl1.ActiveView.Refresh();51
}
1
publicESRI.ArcGIS.Geodatabase.IWorkspacearcSDEWorkspaceOpen(Stringserver,Stringinstance,Stringuser,Stringpassword,Stringdatabase,Stringversion)
2
{
3
try
4
{
5
//Createandpopulatethepropertyset
6
ESRI.ArcGIS.esriSystem.IPropertySetpropertySet=newESRI.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.IWorkspaceFactory2workspaceFactory;
15
workspaceFactory=(ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)newSdeWorkspaceFactoryClass();
16
returnworkspaceFactory.Open(propertySet,0);
17
}
18
catch(Exceptione)
19
{
20
thrownewException(String.Format("arcSDEWorkspaceOpen:{0}",e.Message),e);
21
}
22
}
23
24
IWorkspacepWorkspace=arcSDEWorkspaceOpen("计算机名","5151","数据库用户","密码","","sde.DEFAULT");
25
26
IFeatureWorkspacepFeattureWS=(IFeatureWorkspace)pWorkspace;
27
IFeatureClasspFeatureClass=pFeattureWS.OpenFeatureClass("图层名");
28
IFeatureLayerpFeatureLayer=newFeatureLayerClass();
29
pFeatureLayer.FeatureClass=pFeatureClass;
30
31
axMapControl1.AddLayer(pFeatureLayer);
32
axMapControl1.Refresh();
publicESRI.ArcGIS.Geodatabase.IWorkspacearcSDEWorkspaceOpen(Stringserver,Stringinstance,Stringuser,Stringpassword,Stringdatabase,Stringversion)2
{3
try4
{5
//Createandpopulatethepropertyset6
ESRI.ArcGIS.esriSystem.IPropertySetpropertySet=newESRI.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.IWorkspaceFactory2workspaceFactory;15
workspaceFactory=(ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)newSdeWorkspaceFactoryClass();16
returnworkspaceFactory.Open(propertySet,0);17
}18
catch(Exceptione)19
{20
thrownewException(String.Format("arcSDEWorkspaceOpen:{0}",e.Message),e);21
}22
}23

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

26
IFeatureWorkspacepFeattureWS=(IFeatureWorkspace)pWorkspace;27
IFeatureClasspFeatureClass=pFeattureWS.OpenFeatureClass("图层名");28
IFeatureLayerpFeatureLayer=newFeatureLayerClass();29
pFeatureLayer.FeatureClass=pFeatureClass;30

31
axMapControl1.AddLayer(pFeatureLayer);32
axMapControl1.Refresh();
本文详细介绍了如何使用多种方法加载不同类型的地理数据(如Shapefile、栅格、CAD、PersonGeodatabase和SDE数据库数据),并将其集成到地图控制中进行展示。涵盖了从加载数据到地图显示的完整流程。
5627

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



