ArcGIS Engine中加载数据

本文详细介绍了如何使用多种方法加载不同类型的地理数据(如Shapefile、栅格、CAD、PersonGeodatabase和SDE数据库数据),并将其集成到地图控制中进行展示。涵盖了从加载数据到地图显示的完整流程。
1.加载Shapefile数据
1IWorkspaceFactorypWorkspaceFactory;
2IFeatureWorkspacepFeatureWorkspace;
3IFeatureLayerpFeatureLayer;
4
5//获取当前路径和文件名
6OpenFileDialogdlg=newOpenFileDialog();
7dlg.Filter="Shape(*.shp)|*.shp|AllFiles(*.*)|*.*";
8dlg.Title="OpenShapefiledata";
9dlg.ShowDialog();
10stringstrFullPath=dlg.FileName;
11if(strFullPath=="")return;
12intIndex=strFullPath.LastIndexOf("\\");
13stringfilePath=strFullPath.Substring(0,Index);
14stringfileName=strFullPath.Substring(Index+1);
15
16//打开工作空间并添加shp文件
17pWorkspaceFactory=newShapefileWorkspaceFactoryClass();
18 pFeatureWorkspace=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);
19pFeatureLayer=newFeatureLayerClass();
20
21pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass(fileName);
22pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
23axMapControl1.Map.AddLayer(pFeatureLayer);
24axMapControl1.ActiveView.Refresh();

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

3.加载CAD数据
1IWorkspaceFactorypWorkspaceFactory;
2IFeatureWorkspacepFeatureWorkspace;
3IFeatureLayerpFeatureLayer;
4IFeatureDatasetpFeatureDataset;
5//获取当前路径和文件名
6OpenFileDialogdlg=newOpenFileDialog();
7dlg.Filter="CAD(*.dwg)|*.dwg|AllFiles(*.*)|*.*";
8dlg.Title="OpenCADDatafile";
9dlg.ShowDialog();
10stringstrFullPath=dlg.FileName;
11if(strFullPath=="")return;
12intIndex=strFullPath.LastIndexOf("\\");
13stringfilePath=strFullPath.Substring(0,Index);
14stringfileName=strFullPath.Substring(Index+1);
15//打开CAD数据集
16pWorkspaceFactory=newCadWorkspaceFactoryClass();
17pFeatureWorkspace=(IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath,0);
18//打开一个要素集
19pFeatureDataset=pFeatureWorkspace.OpenFeatureDataset(fileName);
20//IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
21IFeatureClassContainerpFeatClassContainer=(IFeatureClassContainer)pFeatureDataset;
22//对CAD文件中的要素进行遍历处理
23for(inti=0;i<pFeatClassContainer.ClassCount-1;i++)
24{
25IFeatureClasspFeatClass=pFeatClassContainer.get_Class(i);
26if(pFeatClass.FeatureType==esriFeatureType.esriFTCoverageAnnotation)
27//如果是注记,则添加注记层
28pFeatureLayer=newCadAnnotationLayerClass();
29else//如果是点、线、面,则添加要素层
30{
31pFeatureLayer=newFeatureLayerClass();
32pFeatureLayer.Name=pFeatClass.AliasName;
33pFeatureLayer.FeatureClass=pFeatClass;
34axMapControl1.Map.AddLayer(pFeatureLayer);
35axMapControl1.ActiveView.Refresh();
36}

37}
4.加载PersonGeodatabase数据
1IWorkspaceFactorypAccessWorkspaceFactory;
2IFeatureWorkspacepFeatureWorkspace;
3IFeatureLayerpFeatureLayer;
4IFeatureDatasetpFeatureDataset;
5
6//获取当前路径和文件名
7OpenFileDialogdlg=newOpenFileDialog();
8dlg.Filter="PersonalGeodatabase(*.mdb)|*.mdb|AllFiles(*.*)|*.*";
9dlg.Title="OpenPersonGeodatabasefile";
10dlg.ShowDialog();
11stringstrFullPath=dlg.FileName;
12if(strFullPath=="")return;
13
14//打开personGeodatabase,并添加图层
15pAccessWorkspaceFactory=newAccessWorkspaceFactoryClass();
16//打开工作空间并遍历数据集
17IWorkspacepWorkspace=pAccessWorkspaceFactory.OpenFromFile(strFullPath,0);
18IEnumDatasetpEnumDataset=pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
19pEnumDataset.Reset();
20IDatasetpDataset=pEnumDataset.Next();
21//如果数据集是IFeatureDataset,则遍历它下面的子类
22if(pDatasetisIFeatureDataset)
23{
24pFeatureWorkspace=(IFeatureWorkspace)pAccessWorkspaceFactory.OpenFromFile(strFullPath,0);
25pFeatureDataset=pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
26IEnumDatasetpEnumDataset1=pFeatureDataset.Subsets;
27pEnumDataset1.Reset();
28IDatasetpDataset1=pEnumDataset1.Next();
29//如果子类是FeatureClass,则添加到axMapControl1中
30if(pDataset1isIFeatureClass)
31{
32pFeatureLayer=newFeatureLayerClass();
33pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
34pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
35axMapControl1.Map.AddLayer(pFeatureLayer);
36axMapControl1.ActiveView.Refresh();
37}

38else
39{
40MessageBox.Show("NoFeatureLayer!");
41}

42}

43else
44{
45pFeatureWorkspace=(IFeatureWorkspace)pWorkspace;
46pFeatureLayer=newFeatureLayerClass();
47pFeatureLayer.FeatureClass=pFeatureWorkspace.OpenFeatureClass("图层名");
48pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
49axMapControl1.Map.AddLayer(pFeatureLayer);
50axMapControl1.ActiveView.Refresh();
51}
5.加载SDE数据库数据
1publicESRI.ArcGIS.Geodatabase.IWorkspacearcSDEWorkspaceOpen(Stringserver,Stringinstance,Stringuser,Stringpassword,Stringdatabase,Stringversion)
2{
3try
4{
5//Createandpopulatethepropertyset
6ESRI.ArcGIS.esriSystem.IPropertySetpropertySet=newESRI.ArcGIS.esriSystem.PropertySetClass();
7propertySet.SetProperty("SERVER",server);
8propertySet.SetProperty("INSTANCE",instance);
9propertySet.SetProperty("DATABASE",database);
10propertySet.SetProperty("USER",user);
11propertySet.SetProperty("PASSWORD",password);
12propertySet.SetProperty("VERSION",version);
13
14ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2workspaceFactory;
15workspaceFactory=(ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)newSdeWorkspaceFactoryClass();
16returnworkspaceFactory.Open(propertySet,0);
17}

18catch(Exceptione)
19{
20thrownewException(String.Format("arcSDEWorkspaceOpen:{0}",e.Message),e);
21}

22}

23
24IWorkspacepWorkspace=arcSDEWorkspaceOpen("计算机名","5151","数据库用户","密码","","sde.DEFAULT");
25
26IFeatureWorkspacepFeattureWS=(IFeatureWorkspace)pWorkspace;
27IFeatureClasspFeatureClass=pFeattureWS.OpenFeatureClass("图层名");
28IFeatureLayerpFeatureLayer=newFeatureLayerClass();
29pFeatureLayer.FeatureClass=pFeatureClass;
30
31axMapControl1.AddLayer(pFeatureLayer);
32axMapControl1.Refresh();
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值