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

本文详细介绍了如何在VS2010环境下使用ArcEngine10.2和C#进行ArcGIS二次开发,包括打开多种类型的数据文件,如mxd、shp、mdb、lyr、tif和img等,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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应用技能大赛开发题答案点这里,尚在不定期更新中

GIS二次开发添加SHP数据,是指在GIS软件的基础上进行进一步开发,将SHP数据添加到地图中。 首先,需要了解SHP数据的结构和属性。SHP数据由多个文件组成,其中包含着地理空间数据的几何信息和属性信息。通常,SHP文件代表几何要素,DBF文件代表属性表。 其次,可以选择合适的GIS开发平台。常见的GIS开发平台有ArcGIS、QGIS、MapInfo等。根据自己的需求和经验,选择合适的平台进行二次开发。 然后,打开所选择的GIS开发平台,创建一个新的地图项目或打开一个现有的项目。 接下来,选择添加数据的方式。一般而言,可以通过“添加图层”或“导入数据”的选项添加SHP数据。选中对应的SHP文件和DBF文件,点击“确定”按钮即可将数据添加到地图中。 如果需要对SHP数据进行进一步操作,可以通过GIS开发平台提供的工具和功能进行编辑、查询、分析等操作。例如,可以对图层进行符号化设置,添加标注,进行空间查询等。 最后,保存并发布地图。完成对SHP数据二次开发后,可以将地图保存为项目文件,以便日后继续编辑和使用。如果需要发布地图,可以将地图导出为图片或PDF格式,或者发布为Web地图服务。 总之,GIS二次开发添加SHP数据是一种增强GIS软件功能、满足特定需求的方式。通过选择合适的GIS开发平台,添加SHP数据并进行进一步开发,能够更好地利用地理空间数据,提供更丰富、准确的地图信息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值