zoukankan      html  css  js  c++  java
  • ArcEngine加载地图

      对于ArcEngine开发者来说,万事第一步,就是要先加载地图数据,不过我们下面要讲的加载地图的方法不是用ArcEngine自带的控件或命令来实现的,而是以代码方式实现的。加载地图的方式主要分为两种:加载地图文档(.mxd/.pmf)和加载图层,下面主要以加载图层为重点来讲述。

    1.加载地图文档

    1.1实现原理

            通过IMapReader打开一个地图文档,然后获取IMap,最后将IMap加载到MapControl控件中。

    1.2涉及接口

            IMapReader,IMap

    1.3具体实现

     1 OpenFileDialog dlg = new OpenFileDialog();
     2 dlg.Filter = "地图文档(*.mxd)|*.mxd|地图发布文档(*.pmf)|*.pmf";
     3 var ret = dlg.ShowDialog();
     4 
     5 if (ret == System.Windows.Forms.DialogResult.OK)
     6 {
     7     IMapReader pMapReader = new MapReaderClass();
     8     pMapReader.Open(dlg.FileName);
     9     IMap pMap = pMapReader.get_Map(0);
    10     this.axMapControl1.Map = pMap;
    11 }

     PS:除了上述方法外还可以直接使用地图控件提供的方法

     1 this.axMapControl1.LoadMxFile(dlg.FileName); 

    2.加载图层

    2.1实现原理

            通过图形数据的工作空间工厂(WorkspaceFactory)建立一个工作空间(Workspace),在这个工作空间中打开图形数据,图像数据将以要素类(FeatureClass)的形式创建,然后将要素类包装成要素图层(FeatureLayer),最后加载到MapControl控件中。

    2.2涉及接口

            IWorkspaceFactory,IWorkspace,IFeatureClass,IFeatureLayer,ILayer,IDataset

    2.3具体实现

     1 // 创建工作工厂,根据不同数据类型创建不同的工厂
     2 IWorkspaceFactory factory = new ShapefileWorkspaceFactory();
     3 // 打开工作空间
     4 IWorkspace workspace = factory.OpenFromFile(fileFolder, 0);
     5 // QI到要素工作空间
     6 IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
     7 // 打开要素类
     8 IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(fileName);
     9 // 封装图层
    10 IFeatureLayer featureLayer = new FeatureLayerClass();
    11 featureLayer.FeatureClass = featureClass;
    12 featureLayer.Name = ((IDataset)featureClass).Name; // 或featureClass.AliasName
    13 // 将图层添加到地图
    14 this.axMapControl1.AddLayer(featureLayer);

    PS:如果图形数据是存在文件夹中的,则可采用直接添加ShapeFile的方式

     1 this.axMapControl1.AddShapeFile(fileFolder, fileName); 

  • 相关阅读:
    手持设备开发项目实例二(盘点扫描系统)
    通过Netty通信,采集设备现场GPS数据,并存放在redis服务器。
    自动立体车库控制应用系统
    Miscorsoft AnalysisServices 开发
    日志分析常用命令
    MVC中 @ResponseBody、@RequestMapping
    spring与redis集成之aop整合方案
    工业控制系统之葡萄酒保温发酵控制系统
    JS闭包分享
    架构之美—数据库架构
  • 原文地址:https://www.cnblogs.com/HelsingWang/p/8944947.html
Copyright © 2011-2022 走看看