50字范文,内容丰富有趣,生活中的好帮手!
50字范文 > ArcGIS二次开发基础教程(01):打开mxd文件 添加(.shp) (.lyr) (.mdb) (.tif;.img)等多种类型数据

ArcGIS二次开发基础教程(01):打开mxd文件 添加(.shp) (.lyr) (.mdb) (.tif;.img)等多种类型数据

时间:2018-09-09 05:51:30

相关推荐

ArcGIS二次开发基础教程(01):打开mxd文件 添加(.shp) (.lyr) (.mdb) (.tif;.img)等多种类型数据

ArcGIS二次开发基础教程(01) :打开mxd文件,添加ShapeFiles(.shp),LayerFiles(.lyr),Personal GeoDatabase(.mdb),RasterFiles(.tif;.img)等多种类型的数据

(开发环境:VS+ArcEngine10.2+C#)

打开文件对话框

openFileDialog1.Title = "打开文件";//这里只用了五种类型的文件openFileDailog1.Filter = "ArcMap Document(*.mxd)|*.mxd|ShapeFile(*.shp)|*.shp|Personal GeoDatabase(*.mdb)|*.mdb|LayerFile(*.lyr)|*.lyr|RasterFile(*.tif;*.img)|*.tif;*.img";//设置不能多选openFileDialog1.Multiselect = false;if(openFileDialog.ShowDialog() == DialogResult.OK){//记录文件路径为全局变量 方便后面使用(变量声明未写出)path = openFileDialog1.FileName;//获取文件名string fileName = System.IO.Path.GetFileName(path);//获取文件所在文件夹,打开工作空间需要string directory = Syste.IO.Path.GetDirectory(path);//文件扩展名string extention = System.IO.Path.GetExtention(path).Replace(".","").ToLower();//判断打开为何种类型的文件,调用相应的处理函数switch(extension){case "mxd":OpenMXDFile(path);break;case "shp":OpenShapeFile(fileName,directory);break;case "mdb":OpenPersonalGeoDatabase(path);break;case "lyr":OpenLayerFile(path);break;case "tif":case "img":OpenRasterFile(path);break;default:MessageBox.Show("Error");return;}axMapControl1.Refresh();axTOCControl.Updata();}

打开mxd文件

void OpenMXDFile(path){//直接调用mapcontrol的方法打开文件,当然还有其它方法axMapControl1.LoadMxFile(Path);}

shapeFile文件

void OpenShapeFile(string fileName,string directory){//创建与数据类型相应的工作空间工厂 详情可查阅帮助文档IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();//在数据所在文件夹中打开工作空间IFeatureWorkspace featrueWorkspace = workspaceFactory.OpenFromFile(directory) as IFeatureWorkspace;//以文件名打开要素类IFeatureClass featrueClass = featureWorkspace.OpenFeatrueClass(fileName);//创建要素图层并赋值IFeatureLayer featureLayer = new FeatureLayerClass();featureLayer.FeatureClass = featureClass;featureLayer.Name = featureClass.AliceName;//添加到mapcontrol中axMapControl1.AddLayer(featureLayer);axMapControl1.Refresh();axTOCControl1.Update();}

mdb数据库

void OpenPersonalGeoDatabase(path){//创建与数据类型相应的工作空间工厂IWorkspaceFactory workspaceFactory = new AccessWorkspaceFactory();//直接以数据库文件全名打开数据库 这与打开要素类工作空间不同IWorkSpace workspace = workspaceFactory.OpenFromFile(path);//获取相应类型的数据集IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTFeatureClass);//是什么数据就用什么类型,这里用FeatureClass做示范,也可用esriDTany表示任意类型IFeatureClass featrueClass = enumDataset.Next();//遍历每个要素类创建要素图层并添加到mapcontrol中while(featureClass != null){IFeatureLayer layer = new FeatureLayerClass();layer.FeatureClass = featureClass;layer.Name = featureClass.AliceName;axMapControl1.AddLayer(layer as ILayer);featrueClass = enumDataset.Next();}axMapControl1.Refresh();axTOCControl1.Update();}

img,tif栅格数据

void OpenRasterFile(path){//通过路径直接创建IRasterLayer rasterLayer = new RasterLayerClass();rasterLayer.CreateFromFile(path);axMapControl.AddLayer(rasterLayer as ILayer);}

还有一种最简单的添加数据的方法!!!

//直接使用AddData命令对象 这是我已知的最简单的用代码添加数据的方法//Toolbar也提供了很多集成命令工具,以下代码也就是调用这些命令工具ICommand icc = new ControlsAddDataCommandClass();icc.OnCreate(axMapControl1.Object);//钩子函数icc.OnClick();

历届GIS应用技能大赛开发题答案点这里,尚在不定期更新中

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。