内容源自:ArcGIS Engine+C#入门经典

方法二:使用axMapControl1对象的AddLayer方法加载ShapeFile文件

添加ShapeFile文件需要用到Map、Dataset、FeatureLayer和FeatureClass等对象。

这些对象一般用到的主要接口有IMap、IActiveView、IDataset、IFeatureLayer和IFeatureClass等。

Map组件类主要是地图图层数据显示和操作的一个平台。一个Map对象可以包含多个各种图层。该组件类主要实现了IMap接口,主要用于控制地图数据和相关元素,通过该接口可以添加、删除图层,访问各种数据源和Map的各种特性,以及通过各种方式选择要素。例如,ActiveGraphicsLayer用于获取Map中处于激活状态的图层,Layer用于获取索引指定的图层,LayerCount 用于获取Map中的图层数量,AddLayer用于向Map中添加图层,ClearSelection用于清除所选择集中的所有对象(如果选择集中已经选中对象)。

Dataset抽象类表示数据集,是Workspace中数据的集合。一个Workspace可以包含一个或者多个Dataset,一个Dataset可以包含其他的Dataset。该抽象类不能创建对象,可以通过该类的派生类:GeoDataset、Table、FeatureDataset、RasterDataset等来创建具体类型的数据集。该抽象类主要实现了IDataset接口,主要用来管理数据集和提供数据集本身的相关属性信息,该接口同时也被Workspace类、Featurelayer组件类实现。该接口提供了对数据集操作的属性和方法,如Name用于获取数据集的名称,Category用于获取数据集的类型,Workspace 用于获取数据集所在的工作空间,CanCopy用于检测数据集是否可以被复制,CanDelete用于检测数据集是否可以被删除,CanRename 用于检测数据集是否可以被重命名。

FeatureLayer组件是要素图层,是要素Feature的集合及其可视化表达。该类主要实现了ILayer、IFeatureLayer接口

ILayer接口提供了方法和属性,来确定图层的范围、最大和最小显示比例尺、空间参考、图层名以及显示方案等,如Name用来设置或获取图层名,SpatialReference用来设置空间参考,MaximumScale用来设置最大比例尺。

IFeatureLayer接口是从ILayer接口继承下来的,该接口继承了ILayer接口所有的属性和方法,同时还提供了一些自己的属性和方法,如数据源的类型,显示的字段、符号是否随比例尺变化,以及搜索等功能。例如,DataSourcesType用于获取或设置数据源的类型;FeatureClass用于获取图层的要素类;ScaleSymbols用于获取或设置要素层中的符号是否随比例尺的变化而变化;Search是通过指定的查询过滤器在要素层中搜索符合给定查询条件的要素。

FeatureClass要素类是Feature的集合。该要素类中所有的要素具有相同的属性字段,另外还有一个Shape字段专门存放几何图形该类主要实现IFeatureClass接口,提供了用于获取和设置要素类的属性,如CreateFeature用于创建一个新的要素,DeleteField用于删除要素类的字段。

使用AddLayer方法加载shp文件中使用的Map、Dataset等对象详解的更多相关文章

  1. 利用“反射”动态加载R文件中的资源

    前几天做一个Android下面数据库相关的应用.用ListVIew展示表中数据的时候我希望能给表中每一条记录,加一个展示的图片.但是用数据库保存图片是比较难搞的.于是就把所需图片都保存到res下的dr ...

  2. MFC使用LoadBitmap方法加载位图文件失败解决方案(转)

    用如下方法在原项目中使用LoadBitmap方法加载已有的位图资源作为背景没有问题,但放在别的项目中总是加载不出来,该函数返回NULL HBITMAP hBitmap=LoadBitmap((HINS ...

  3. easyui datagrid 加载静态文件中的json数据

    本文主要介绍easyui datagrid 怎么加载静态文件里的json数据,开发环境vs2012, 一.json文件所处的位置 二.json文件内容 {"total":28,&q ...

  4. java类生命周期,类的“加载,连接,初始化,使用,卸载过程”详解

    “ 如果说核心类库的 API 比做数学公式的话,那么 Java 虚拟机的知识就好比公式的推导过程” 每本Java入门书籍在介绍Java这门语言的时候都会提到Java跨平台,“一次解释,到处运行的特点“ ...

  5. spring加载资源文件中classpath*与classpath的区别

    在spring和MyBatis继承的时候,配置mapperLocations.一开始配置是这样的. 需要加载路径为com/thomas/base/mapper和com/thomas/bu/mapper ...

  6. 浏览器加载模式:window.onload和$(document).ready()的区别(详解)

    jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: wind ...

  7. JavaScript中的Function(函数)对象详解

    JavaScript中的Function对象是函数,函数的用途分为3类: 作为普通逻辑代码容器: 作为对象方法: 作为构造函数. 1.作为普通逻辑代码容器 function multiply(x, y ...

  8. 在三维场景中加载shp(skyline)

    在场景中添加shp图层有两个方法: (1)直接调用Command命令,SGWorld.Command.Execute(1013,5);这样的话,和在场景中的工程树中右键添加特征图层的过程是一样的.有个 ...

  9. java加载properties文件的六中基本方式实现

    java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过impo ...

随机推荐

  1. 爬取凤凰网站财经类的新闻,函数时编程,可全部实现,由于内容量大,需要时间太长,服务器会禁止,为了防止,可以将time.sleep()设置的时间长点

    import requests from selenium import webdriver import time def grasp(urlT): driver = webdriver.Chrom ...

  2. 通过js获取tinymce4.x的值

    问题的引出: 在使用过程中,用传统的js的方法判断tinymce所选textarea(下面直接称textarea)的值是会出现这样的问题的: 在已有输入内容时,首次提交的时候,依然会弹出js写的警告提 ...

  3. 第二次作业:使用Packet Tracer分析应用层协议(DNS、FTP、DHCP、SMTP、POP3)

    0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 熟练使用Packet Tracer工具.分析抓到的应用层协议数据包,深入理解应用层协议,包括语法.语义.时序. 2 实验内容 ...

  4. [CUDA] 00 - GPU Driver Installation & Concurrency Programming

    前言 对,这是一个高大上的技术,终于要做老崔当年做过的事情了,生活很传奇. 一.主流 GPU 编程接口 1. CUDA 是英伟达公司推出的,专门针对 N 卡进行 GPU 编程的接口.文档资料很齐全,几 ...

  5. Python3.7.4入门-2流程控制工具

    2 流程控制工具 记得在语句后加冒号 2.1 while # Fibonacci series: # the sum of two elements defines the next a, b = 0 ...

  6. 【linux】【NodeJs】Centos7安装node-v10.16.3环境

    前言 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. https://node ...

  7. Java基础系列-深入理解==和equals的区别(一)

    一.前言 说到==和equals的问题,面试的时候可能经常被问题到,有时候如果你真的没有搞清楚里边的原因,被面试官一顿绕就懵了,所以今天我们也来彻底了解一下这个知识点. 二.==和equals的作用 ...

  8. windows环境下搭建python虚拟环境及离线移植

    以python3.6为例 ①安装virtualenv: #pip安装之后在D:\Python36\Scripts目录下可以看到多了一个virtualenv.exe可执行文件pip install vi ...

  9. MySQL在Linux系统环境的安装和无主机登录配置

           将mysql 安装在单个Linux系统主机,并配置本地或远程(此处可仅单指局域状态下的环境)的无主机登录.谨记的是:操作完mysql 设置时,需以flush privileges进行权限 ...

  10. 阿里云服务器CentOS6.9安装Mysql

    上篇讲了CentOS6.9安装tomcat,这篇来讲mysql的安装 1.查看CentOS是否安装了MySQL yum list installed | grep mysql //查看CentOS是否 ...