ArcGIS Server 10.1新特性系列---动态图层
ArcGIS Server 10.1新特性里面有几个新功能是非常棒的,其中有一个就是动态图层。动态图层不是一种新发明的图层,而是说在arcgis server的web应用中可以动态的配置其渲染和内容功能的图层,动态mapservice中的图层都可以通过相应的配置使其成为动态图层。动态图层的功能的产生是mapservice的核心功能进行增强的结果。
动态图层功能的产生背景:
先提出两个需求:
1 如何做专题图?动态的改变地图服务中的图层显示信息包括符号,渲染方式?
2 如何添加一个图层到地图服务中?数据可能在服务器端的数据库或者文件夹中。
这两个问题在10.1之前的版本也是可以实现的,先说第一个问题,第一个问题的有两种实现途径,一是使用非池化服务加ao编程来制作专题图,二是通过把数据下载到客户端,通过客户端渲染来实现专题图。第一种方法因为使用了非池化服务,所以效率比较低,再加上ao编程相对来说比较复杂,第二种方法对于小数据量是可行的,但是一旦数据量达到一定程度,那么客户端渲染就非常的慢。
第二个问题,采用的方法也是使用非池化服务加ao编程来实现。
正是在10.1之前的版本中实现这两个比较常见的问题有一定的局限性,在10.1就有了新的解决方案—那就是动态图层。
在10.1版本中这两个问题都可以通过动态图层来实现,动态图层的功能是通过rest api方式暴露的,所以通过Esri提供的几种webAPI都可以实现改变图层的符号,渲染方式以及添加删除图层的功能。就说改变图层的符号,在客户端的请求中指定用哪种符号,什么颜色,服务器端就会用指定的符号和颜色进行渲染然后把相应的图片返回给客户端。所以这些改变都是针对每个请求的,不会改变服务本身。
动态图层的应用场景:
1 改变现有图层:符号,渲染方式和版本,这些都可以通过客户端请求的时候给定相应的参数来进行设置,从而来达到轻易改变地图的效果。
2 添加地图服务中没有的图层
添加的数据可以是矢量数据也可以栅格数据,还可以是一个通过sql查询出来的结果,或者是两个表关联的关联结果。矢量的数据可以是shapefile,filegdb,或者sde中的数据。栅格数据可以是esri能直接识别的栅格数据格式。
动态图层功能的服务器端配置:
动态图层在配置上非常简单,如果你只是需要把mapservice中的图层变为动态图层的话,只需要打一个勾就可以。如果是要动态添加一个数据到地图服务中,就需要在地图服务中设置要添加的数据的工作空间,步骤如下:
1 在服务属性对话框中,如下图,在Parameters选项中把右下角allow per request modification of layer order and symbology 前面的选项框中打钩,如果只是要改变现有图层的信息,就此一步就可以了,如果要动态添加数据,点击旁边的Manage按钮。

2 点击manage对话框之后弹出下面的对话框,就是对你要添加的数据的工作空间进行管理,你可以在这里添加多个工作空间,这些工作空间中的数据就都可以实现动态的添加了。如下图:
3 点击Add按钮,可以添加workspace,选择workspace的类型,输入workspaceID和连接信息,如果是shapesfiles的话就是文件目录。这些信息都会在添加数据的时候用到的。如下图:

动态图层功能的Rest API和具体使用
获得动态图层的URL为:http://<mapservice-url>/dynamicLayer
参数设置说明如下:

Layer参数里面的内容是我们使用动态图层功能的关键内容。关键的有source和drawinginfo两项,source是指定图层,drawinginfo是指定绘制方式,比如渲染和符号,比如要改变某一个图层的符号,就在参数里面设置id,source, drawinginfo,指定了这些内容也就是告诉了后台服务器如何来绘制地图。看到这些设置项,我们也就能很好的理解动态图层的原理了,客户端告诉服务器绘制哪些图层,可以是指定工作空间的,也可以是已经发布好的图层,告诉服务器如何绘制这些图层,用什么样的渲染方式,什么样的符号,一切都是客户端告诉服务器端的,服务器端只是按照客户端的要求去生成地图而已。
下面是一个例子,指定了地图服务中的maplayerid为3的图层的符号和渲染信息: { "id": 501,
"source": { "type": "mapLayer", "mapLayerId": 3 }, "drawingInfo": { "renderer": { "type": "simple", "symbol": { "type" : "esriSFS", "style" : "esriSFSSolid", "color" : [166,36,100,255], "outline" : { "type" : "esriSLS", "style" : "esriSLSSolid", "color" : [110,110,110,255], "width" : 1.0 } }, "label": "TaxLots", "description": "" }, "transparency": 60 } }
下面的这个例子是添加一个指定工作空间下的名称为usstates的featureclass,并给它指定了相应的渲染方式和符号,刚才在服务器端设定的工作空间的名称就在这里用到了。
{ "id": 502, "source": { "type": "dataLayer", "dataSource": { "type": "table", "workspaceId": "MyDatabaseWorkspaceID", "dataSourceName": "SDE.usstates", "version": "" } }, "drawingInfo": { "renderer": { "type": "simple", "symbol": { "type" : "esriSFS", "style" : "esriSFSSolid", "color" : [166,36,100,255], "outline" : { "type" : "esriSLS", "style" : "esriSLSSolid", "color" : [110,110,110,255], "width" : 1.0 } }, "label": "TaxLots", "description": "" }, "transparency": 60 } }
上面是动态图层的参数例子,在具体使用的时候,就把上面的内容作为一个dynamiclayers的参数内容来使用就可以,比如在mapservice的exportmap操作中使用:
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/cityservices/MapServer/export?bbox=-244.41198409251106,-41.12263057731275,-0.7748853058572536,131.45364772990035&bboxSR=&layers=&layerDefs=&size=&imageSR=&format=png&transparent=false&dpi=&time=&layerTimeOptions=&dynamicLayers=[{"id":503,"source":{"type":"dataLayer","dataSource"{"type":"table","workspaceId":"MAP","dataSourceName":"MAP.user1.Taxlots"}},"drawingInfo":{"renderer":{"type":"simple","symbol"{"type":"esriSFS","style":"esriSFSSolid","color":[166,36,0,255],"outline":{"type":"esriSLS","style":"esriSLSSolid","color":[110,110,110,255],"width":1}},"label":"TaxLots","description":""},"transparency":60},"definitionExpression":"neighborhood='FrenchQuarter'"}]&f=html
不仅export map操作可以跟dynamiclayers参数,query操作也可以跟dynamiclayers参数,也就是说可以对动态图层进行查询。
ArcGIS Server 10.1新特性系列---动态图层的更多相关文章
- ArcGIS Server 10.2 实战(三)图层标注及图例中文显示乱码的解决
发布的图层中不可避免的使用到中文来标注,默认设置下,ArcGIS Server不支持中文的,中文标注显示成乱码,主要是编码的问题,需要把手动把编码改为UTF-8. ArcGIS Server 10.2 ...
- 【ArcGIS 10.2新特性】ArcGIS 10.2 for Desktop 新特性(二)
4 三维 4.1 共享三维场景 用户能够将ArcScene文档导出为3D web场景,能够被加载到ArcGIS Online.Portal或本地Web服务器上并进行分享.这样,用户可以 ...
- ArcGIS Server 10.2 实战(二)动态修改要素数据的地理处理服务
上一篇<ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层>介绍了如何用JSON转要素的地理处理服务,实现了动态创建点要素并加载到 ...
- 【ArcGIS 10.2新特性】ArcGIS Online新特性(上)
概述 7月,ArcGIS Online发布了很多更新.主要内容有:新的网站设计,增强了Web制图,数据分析,应用程序创建,以及机构管理等功能. 更新的大致内容总结如下: 地图查看器:新的分析工具.获取 ...
- 【转】ArcGIS Server 10.1 动态图层—添加栅格
本文将介绍如何通过arcgisserver10.1动态图层添加栅格影像.与添加矢量数据不同的是,天际栅格用到了RasterDataSource接口,如下所示 <esri:DynamicLayer ...
- fir.im Weekly - 从 iOS 10 SDK 新特性说起
从 iOS 7 翻天覆地的全新设计,iOS 8 中 Size Classes 的出现,应用扩展,以及 Cloud Kit 的加入,iOS 9 的分屏多任务特性,今年的 WWDC iOS 10 SDK ...
- arcgis server 10.2安装后,忘记Manager的用户名和密码
arcgis server 10.2安装完毕后,需要创建站点,创建站点时,填写管理站点的用户名和密码.自己不小心,创建完毕后,给忘记了用户名和密码.求助Esri,解决方法如下: (1)找到arcgis ...
- 【数据库】 SQL SERVER 2012 实用新特性
[数据库] SQL SERVER 2012 实用新特性 官方链接 一. ALWAYS ON - 灾难恢复 二. 列存储索引 - 比非聚集索引效率高,但有索引表不允许修改数据(插入,更新,删除),用于读 ...
- Arcgis Server 10.4.1 搭建集群环境
1.准备工作 Arcgis Server 10.4.1 以及许可一枚 共享存储(通过UNC路径访问,如"\\server1\arcgisserver\") 服务器两台(虚拟机也可 ...
随机推荐
- Echarts Map地图下钻至县级
**准备工作:**1.首先使用vue-cli的脚手架生成vue项目. 2.然后使用npm安装echartsnpm install echarts -S 3.安装完后再mian.js中挂载到vue的实例 ...
- mysql-python安装
操作系统:ubuntu16.04-gnome 首先要安装mysql数据 sudo apt install mysql-server 我们使用pip进行安装第三方模块 系统python版本为2.7.12 ...
- codeforces1217-edu
C The Number Of Good Substrings 我原来的基本思路也是这样,但是写的不够好 注意算前缀和的时候,字符串起始最好从1开始. #include<cstdio> # ...
- java 文件拷贝
需求:源和目标! 那么我们需要源文件和目标文件! 构建管道的时候就需要两个:输出流和输入流管道! Eg: package july7file; //java7开始的自动关闭资源 import java ...
- H3C DNS域名解析完整过程
- CF140CNew Year Snowmen
CF140C 题目大意:堆雪人,需要三个大小不同的雪球,现有\(n\)个给定大小的雪球,问最多堆多少个雪人 一个很明显的思路是把每种雪球出现的个数记录下来,然后直接扔到大根堆里面,每次选择剩下出现次数 ...
- 网上做题随笔--MySql
网上写写题 提高下自己的能力. Mysql平时写的是真的很少,所以训练一下下. 1.查找重复的电子邮箱 https://leetcode-cn.com/problems/duplicate-email ...
- dotnet 通过 WMI 获取系统信息
本文告诉大家如何通过 WMI 获取系统信息 通过 Win32_OperatingSystem 可以获取系统信息 var mc = "Win32_OperatingSystem"; ...
- codeforces 677D(分层图dp)
Codeforces 677D 传送门:https://codeforces.com/contest/677/problem/D 题意: 给你一个n*m的方格图,每个点有一个权值val,现在要求你从坐 ...
- Asp.net全局资源文件( App_GlobalResources)和本地资源文件(App_LocalResources)
今天项目中需要加入对不同语言的支持. 找了半天的资料,关于GlobalResources和LocalResource都说的模棱两可的. 只能自己边找资料边试. 全局资源文件 样例(Demo中有 ...