什么是图层

图层是用来在 ArcGIS 产品套件中显示地理数据集的机制。每个图层代表一种数据集(可以是地图服务、图形或是矢量数据),并指定该数据集是如何描绘使用一组属性的。

包含一个地图控件的每个应用程序是通过添加一系列图层组装的。图层以特定的顺序显示在地图上,列在最底部的图层在地图的最上面显示,也就是先添加的图层在下面显示(原理类似于“栈”)。比如,在XAML代码中,最靠上的图层在显示时会出现在Map控件的最底端,如图:

图层介绍

第一个图层的空间坐标系SpatialReference决定了地图的空间坐标系,图层只能在UI线程上进行实例化。以下是所有的图层类:

所有的图层都是从Layer类型继承而来的,可以参考下载的API中的对象模型图。

Layer
  |–TiledMapServiceLayer
  |       |–ArcGISTiledMapServiceLayer
  |–DynamicLayer
  |       |–DynamicMapServiceLayer
  |                 |–ArcGISDynamicMapServiceLayer
  |                 |–ArcGISImageServiceLayer
  |                 |–GPResultImageLayer
  |–GraphicsLayer
  |       |–FeatureLayer
  |–ElementLayer

Layer是最基本的基类,常用的几种图层类型已经用红色标记出来了。

(1)Layer:继承自DependencyObject,并实现了INotifyPropertyChanged接口,是其他图层的基类。

(2)TiledMapServiceLayer:继承自Layer,是所有使用了缓存的地图服务的基类。通过它可以在程序中加入经过缓存的,来自 不同数据源的地图服务。比如ArcGIS Server的地图服务,Google Map的地图,Virtual Earth的地图等。

(3)ArcGISTiledMapServiceLayer:继承自TiledMapServiceLayer。这个图层扩展了TiledMapServiceLayer,支持由ArcGIS Server发布的经过缓存的地图服务。

(4)DynamicLayer:继承自Layer,是动态地图服务的基类。

(5)DynamicMapServiceLayer:继承自DynamicLayer,对应于TiledMapServiceLayer,要使用未经过缓存的动态地图服务,就得通过扩展这个图层来实现。

(6)ArcGISDynamicMapServiceLayer:继承自DynamicMapServiceLayer,针对ArcGIS Server 9.3版本发布的动态地图服务。同理,如果要在客户端API中使用其他动态地图服务,比如OGC的WMS服务,则也需要像这个图层一样,扩展上面的 DynamicMapServiceLayer来实现。

(7)ArcGISImageServiceLayer:继承自DynamicMapServiceLayer,针对ArcGIS Server 9.3版本发布的Image Service,因为影像服务也属于动态的地图服务。在客户端API中,可以通过ArcGISImageServiceLayer的一些属性,方便通过浏 览器来展示服务器端的影像数据,比如通过BandIds属性,可以快速调整影像数据显示波段的组合(RGB通道),提供不同结果供用户查看。点击这里,查看一个实例。

(8)GPResultImageLayer:继承自DynamicMapServiceLayer,针对Geoprocessing服务所产生的 结果。可以请求服务器端的GP服务将结果动态生成一张图片,将此图片作为GPResultImageLayer图层直接添加到Map控件中。

(9)GraphicsLayer:继承自Layer,是图形数据集中展现的地方。GraphicsLayer是保留在内存中的一种图层(与 ArcMap、ArcGIS Engine、ArcGIS Server ADF程序中的相应概念类似),顾名思义是很多Graphic的集合,而所有与用户交互的内容通常都用Graphic来显示。比如多边形查询中用户画出的 多边形,属性/空间查询结果中的所有要素(Feature)等内容,都是Graphic。可以说,除了地图本身,基本上看到的所有与地理位置有关的东西都 可以用Graphic来表示。Graphic对象有3个重要的属性:Geometry,Symbol和Attributes。Geometry代表了一个 Graphic的几何形状(可疑是点、线、面任意一种)或地理位置,而Symbol则表示Graphic的呈现样子,比如颜色、效果,同时有了这两个属性 (缺一不可),Graphic就可以显示到地图上了。而Attributes是键值对集合,可在里面存储任意类型的对象,比如一个要素的属性信息。

(10)FeatureLayer:继承自GraphicsLayer,这也是ArcGIS API for Silverlight/WPF 中的亮点之一,通过它可以完成一些比较炫的功能。FeatureLayer继承自GraphicsLayer,它与后者的区别 是,GraphicsLayer中的Graphic都是人为创建出来的,而FeatureLayer中的Graphic都是从ArcGIS Server发布的服务中读取出来的,因此FeatureLayer比GraphicsLayer多了一个URL属性。这个URL通常指向一个 ArcGIS Server发布的MapService或FeatureService的子图层(对应一个FeatureClass)。FeatureLayer有了这 个URL后,就可以读取出该服务对应子图层里的所有要素内容,因此FeatureLayer里Graphic的Geometry属性会自动被 FeatureClass的Shape字段填充,而Graphic的Attributes字段则会根据要求,被FeatureClass中的属性信息所填 充。如果发布服务的服务器是ArcGIS Server 10版本,则Graphic的Symbol属性会自动被服务的DrawingInfo信息填充。另外,FeatureLayer是客户端API中对 FeatureService的唯一载体,这是它另一个非常重要的作用(也是主要作用)。

(11)ElementLayer:继承自Layer,它可以用来专门呈现Silverlight/WPF中原生的 FrameworkElement,比如视频,音频等。虽然在FillSymbol的Fill属性中也能利用Brush类来展现一段视频,但毕竟有些“小 气”,在ElementLayer中可以大大方方的放置Silverlight/WPF元素。虽然在Map控件之外,Grid等布局元素中也能放置 Silverlight的东西,但是ElementLayer的优势在于:当一些非地理数据元素随着地图范围的变化(放大,缩小,平移)的时候,无须在地 图Extent变化后重新计算客户端坐标,再改变这些元素的位置。

ArcGISTiledMapServiceLayer和ArcGISDynamicMapServiceLayer分别用于加载ArcGIS Server发布的缓存地图服务和动态地图服务。GraphicsLayer和FeatureLayer,可以说这是API中最常用的两种图层,大部分的 程序功能都要基于它们来完成

arcgis图层 GraphicsLayer与FeatureLayer的更多相关文章

  1. 关于ArcGis for javascrept之FeatureLayer类与GraphicsLayer类

    FeatureLayer: ArcGIS for Server发布的要素服务或者地图服务中的图层 构造方法: myFeatureLayer = new esri.layers.FeatureLayer ...

  2. ArcGIS图层介绍

    什么是图层 图层是用来在 ArcGIS 产品套件中显示地理数据集的机制.每个图层代表一种数据集(可以是地图服务.图形或是矢量数据),并指定该数据集是如何描绘使用一组属性的. 包含一个地图控件的每个应用 ...

  3. ArcGIS 图层旋转工具-arcgis案例实习教程

    ArcGIS 图层旋转工具-arcgis案例实习教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:对输入图层执行坐标旋转 使用方法:输入图层,旋转中心,旋转 ...

  4. arcgis for javascript 添加featurelayer,设置地图最大最小等级

    转自原文arcgis for javascript 添加featurelayer,设置地图最大最小等级 var map; var livingCenter; var livingCenterUrl = ...

  5. Arcgis for Javascript之featureLayer图和属性互操作性

    说明:主要实现加载FeatureLayer并显示属性表,而要实现联动属性表与地图,首先,看看实施后的效果: 显示效果 如上图所看到的,本文章主要实现了下面几个功能:1.FeatureLayer属性表的 ...

  6. ArcGis for flex查询FeatureLayer数据

    1. 首先实例化一个FeatureLayer对象 private var featureLayer:FeatureLayer=new FeatureLayer(); 2.指定FeatureLayer对 ...

  7. Arcgis for Js之featurelayer实现空间查询和属性查询

    空间查询和属性查询是常用的两种对数据的检索与查询方式,在本节,将讲述Arcgis for Js下如何实现featurelayer的这两种查询方式,先贴图给大家看看: 实现界面 属性查询 空间查询 看完 ...

  8. Arcgis for Javascript之featureLayer图和属性的互操作

    说明:主要实现加载FeatureLayer与显示属性表,并实现属性表与地图的联动,首先,看看实现后的效果: 显示效果 如上图所示,本文章主要实现了以下几个功能:1.FeatureLayer属性表的分页 ...

  9. ArcGIS图层和要素的过滤显示

    ArcGIS可以设置动态地图服务(ArcGISDynamicMapServiceLayer)显示哪些图层,也可以设置每个图层根据某个属性字段的某些条件来进行过滤显示. 1.设置显示的图层 主要是通过A ...

随机推荐

  1. python之创建文件写入内容

    https://www.cnblogs.com/evablogs/p/7096686.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  2. C#二维码与条形码的生成

    二维码 using Gma.QrCodeNet.Encoding;using Gma.QrCodeNet.Encoding.Windows.Render; string str = "Htt ...

  3. 菜鸟学IT之第一次作业

    作业的要求来自于:https://www.cnblogs.com/greyzeng/p/9581624.html 反思· 为何要来上课并且认真参与? 在大学中的师生关系? 自我简述题目 心得· 学习态 ...

  4. H(X|Y)的推到过程

  5. 禁止Cnario Player启动后自动开始播放

    Cnario Player安装激活后, 默认开机后自动启动, 启动加载内容完成后进入10秒倒计时, 10秒后即开始播放关机前播放的内容. 如果不想让其自动开始播放, 可按照如下办法设置其不自动播放. ...

  6. MySQL--7种join连接

    一,定义: 1)LEFT JOIN / LEFT OUTER JOIN:左外连接 左向外连接的结果集包括:LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行.如果左表的某行在右表 ...

  7. 01——Solr学习之全文检索服务系统的基础认识

    一.为什么要用Solr,Solr是个什么东西? 1.1.Solr是个开源的搜索服务器 1.2.我们用Solr主要实现搜索功能,一般的网站首页都会有一个大大的搜索框,用来搜索此网站上的商品啊什么的,如下 ...

  8. 图解从 URL 到网页通信原理

    前言 一.文本对话--从请求到响应 二.TCP/IP 协议族介绍 三.基于TCP/IP通信过程 四.TCP建立连接及断开(重点补充) 小结 前言 互联网的原始目的,就是为了传输文本(文本对话).那我们 ...

  9. 2019-04-28 Mybatis generator逆向工程生成的Example代码分析

    今天主要对Mybatis generator生成的DAO层等进行分析,讲解Example类的使用和扩展 1.先在数据库建表 CREATE TABLE `department` ( `fid` ) NO ...

  10. Codeforces1153F Serval and Bonus Problem 【组合数】

    题目分析: 我们思考正好被k个区间覆盖的情况,那么当前这个子段是不是把所有的点分成了两个部分,那么在两个部分之间相互连k条线,再对于剩下的分别连线就很好了?这个东西不难用组合数写出来. 然后我们要证明 ...