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

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

  1. 打开文件对话框

    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();
    }
    
    1. 打开mxd文件

      void OpenMXDFile(path)
      {//直接调用mapcontrol的方法打开文件,当然还有其它方法axMapControl1.LoadMxFile(Path);
      }
    2. 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();
      }
      
    3. 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();
      }
      
    4. 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应用技能大赛开发题答案点这里,尚在不定期更新中

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

  1. ArcGIS二次开发基础教程(11):网络分析之最短路径分析

    ArcGIS二次开发基础教程(11):网络分析之最短路径分析 最短路径分析 这里直接调用了在mdb中建立好的网络数据集 //全局变量 private INetworkDataset my_networ ...

  2. ArcGIS二次开发基础教程(10):三维分析

    ArcGIS二次开发基础教程(10):三维分析 坡度分析 请务必学会使用帮助文档!!! //DEM数据的坡度分析 将分析结果添加到地图上 //首先获取DEM数据,方法有很多例如从个人地理数据库获取,也 ...

  3. ArcGIS二次开发基础教程(13):网络分析之最近设施分析

    ArcGIS二次开发基础教程(13):网络分析之最近设施分析 最近设施分析 /// <summary>/// Geodatabase function: open work space// ...

  4. ArcGIS二次开发基础教程(09):叠加分析

    ArcGIS二次开发基础教程(09):叠加分析 缓冲区分析的概念及原理请查看帮助文档 http://desktop.arcgis.com/zh-cn/arcmap/latest/tools/analy ...

  5. ArcGIS二次开发基础教程(00):基础界面设计

    ArcGIS二次开发基础教程(00) : 基础界面设计 (开发环境:VS2010+ArcEngine10.2+C# :鉴于学习ArcGIS二次开发的同学都有一定的WinForm开发和ArcGIS软件使 ...

  6. ArcGIS二次开发基础教程(03):保存文档和导出地图

    ArcGIS二次开发基础教程(03):保存文档和导出地图 保存文档 保存: //这里的path为全局变量 在打开文件获添加数据时赋值原路径 //判断打开文件是否为mxd文件 是则保存 不是则另存为 i ...

  7. ArcGIS二次开发基础教程(06):有关图层的基本操作

    ArcGIS二次开发基础教程(06):有关图层的基本操作 0. PageLayout和MapControl 的同步 void CopyToPage(){//对象拷贝,把mapcontrol的地图拷贝重 ...

  8. ArcGIS二次开发基础教程(04):有关字段的操作和简单属性及空间查询

    ArcGIS二次开发基础教程(04):有关字段的操作和简单属性及空间查询 属性 字段的添加.删除和查找 IFeatureLayer GetLayerByName(string name) {ILaye ...

  9. ArcGIS二次开发基础教程(08):在MapControl上画图(添加元素)

    ArcGIS二次开发基础教程(08):在MapControl上画图(添加元素) 添加临时元素 0. 点元素 //临时画图的元素将不会保存在地图中 //全局变量 IPoint pt; IElement ...

  10. ArcGIS二次开发基础教程:开发环境配置教程(ArcEngine10.4+VS2019)

    开发环境配置教程 由于ArcGIS.ArcEngine以及承载开发环境的Visual Studio的版本众多,其开发环境的配置也有不小的难度,故写此文章写给新入门ArcGIS二次开发的同学,帮助他们摆 ...

最新文章

  1. VC 中类型转换(转)
  2. Linux I/O多路复用
  3. VMware中安装CentOS Linux release 7.4.1708 (Core)
  4. thinkphp验证是否登录并跳转
  5. thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)
  6. elasticsearch 安装( 阿里云ECS )、远程访问、启动报错处理
  7. mfc 监控文件操作_商务办公好伴侣 兄弟MFC系列多功能一体机
  8. 数据结构与算法系列——排序(10)_归并排序
  9. PHP htmlspecialchars() 函数
  10. web1:http协议简介和用netassist和py程序当http服务器
  11. 项目实战第一讲:如何优雅地记录操作日志
  12. 千人千面算法java实现_推荐算法-recommend_system
  13. SysKey 和 SAM
  14. 汽车研发企业试验数据管理系统建设研究
  15. catdog matlab,猫狗1,猫狗1百度云资源_盘多多如风搜_盘搜搜_哎哟喂啊
  16. 银行磁条卡即将被淘汰
  17. (2020)使用Airtest来爬取某宝评论数据
  18. 2021_01_25
  19. 消防设备电源监控系统在高层民用建筑内的应用
  20. JAVA 基本语法 Scanner类的使用 实现步骤 三步走(Scanner)

热门文章

  1. “我与女明星只差一个毛戈平”,毛戈平与上市又差什么?
  2. Python可视化数据学习
  3. 未来的学习目标-C/C++/Linux服务器开发高级架构
  4. mysql 时间毫秒值_MySQL存储毫秒数据的方法
  5. html在表格输入文字不显示,Word表格中有部分格子内无法输入文字是怎么回事?...
  6. 程序媛必备之日常BGM
  7. top n with ties
  8. 课堂派题库格式转换程序
  9. codeforces每日5题(均1500)-第十七天
  10. ChucK初步(8)