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. C++ternary search三元搜索的实现算法(附完整源码)
  2. knn实战:如何对手写数字进行识别?
  3. leetcode - 84. 柱状图中最大的矩形
  4. VC++绘图时,利用双缓冲解决屏幕闪烁 转载
  5. LAMP+LNMP视频教程
  6. python实现文件编码转换_Python实现批量转换文件编码的方法
  7. js基础之---slice()
  8. mysql ssh通道_详解如何通过SSH通道来访问MySQL
  9. Android动态加载字节码
  10. 路由器与计算机的ip地址,路由器ip地址与mac地址绑定
  11. 元胞自动机模型01——认识元细胞机模型
  12. 640-802 新版CCNA考试题库下载
  13. 《缠中说禅》炒股经典理论
  14. android按钮添加音效,Android中为按钮设置点击音效
  15. 百度热点排行榜 ---JS
  16. 如何平衡工作与生活?真相在此
  17. WebRTC 音视频同步分析
  18. linux apt 更新软件,apt get 更新软件
  19. MIT 心拍类型注释
  20. 自顶向下的GAMMA显著性——学习搜索复杂场景中的对象

热门文章

  1. 妮可妮可妮 [Hash]
  2. 如何创建unity的菜单栏和窗口
  3. 2048php,Phaser实现2048
  4. 亲自动手搭建微服务框架和测试环境-1-背景
  5. 物联网Wi-Fi,SIP 时代即将来临
  6. SNF快速开发平台--规则引擎在程序当中如何调用
  7. 计算机弹音乐教程远走高飞,计算器弹歌曲远走高飞 | 手游网游页游攻略大全
  8. 初中数学题用计算机能算吗,[转载]初中数学使用科学计算器的利与弊(节选)...
  9. 软件项目管理 6.5.自下而上估算法
  10. 10台堆垛机同时启动的那一刹那!