1 前言

1.1 简介

ArcGIS Server将GIS资源以服务的方式发布,能够让更多的人在Web上浏览、使用。不过,诸如气象、环保等方面的信息是实时变化的,按照之前常规的方法,我们先要将最新获得的信息组织成地图文档后再对外发布服务,这样一来只要有更新的信息就要重复前面的工作,不仅地图服务维护的工作量比较大,而且无法让公众在第一时间了解这些信息。

动态图层并不是在Server端直接添shape、raster、filegdb、database等资源,它需要依附于一个开启动态图层的地图服务。然后,把数据资源所在位置注册为这个地图服务的动态工作空间。最后,在Web端调用时指定图层关联的数据源以图层符号化等。

1.2 适用场景

根据需要选择是否允许服务器的客户端动态更改地图服务中的图层外观和行为。要确定哪些图层显示在地图中、图层符号系统、图层顺序和位置以及标注等,可通过使用动态图层在服务器端实现。因此,适用于以下两种情况:

1)改变现有图层:符号,渲染方式和版本,这些都可以通过客户端请求的时候给定相应的参数来进行设置,从而来达到轻易改变地图的效果。 2) 添加地图服务中没有的图层:添加的数据可以是矢量数据也可以栅格数据,还可以是一个通过sql查询出来的结果,或者是两个表关联的关联结果。矢量的数据可以是shapefile,filegdb,或者sde中的数据。栅格数据可以是esri能直接识别的栅格数据格式。

2 动态图层

2.1 共享地图服务




arcgis添加basemap没有图_图层


arcgis添加basemap没有图_数据_02


arcgis添加basemap没有图_图层_03


arcgis添加basemap没有图_数据_04


2.2 动态工作空间添加


arcgis添加basemap没有图_数据_05


arcgis添加basemap没有图_数据_06


2.2.1 企业级数据库

选择了数据库,则可以指定想要使用的数据库连接并单击导入 > 浏览。可以选择锁定用户可以访问的数据库版本。为此,选择锁定版本。


arcgis添加basemap没有图_图层_07


arcgis添加basemap没有图_工作空间_08


2.2.2 shapefile文件夹

选择了 Shapefile,则输入包含想要使用的 Shapefile 的文件夹的路径。


arcgis添加basemap没有图_数据_09


arcgis添加basemap没有图_图层_10


2.2.3 栅格文件夹

选择了栅格,则输入包含想要使用的栅格的文件夹的路径。


arcgis添加basemap没有图_数据_11


arcgis添加basemap没有图_图层_12


2.2.4 文件地理数据库

选择了文件地理数据库,则输入想要使用的文件地理数据库的路径。请记住,稍后需要将图层添加到该地理数据库。


arcgis添加basemap没有图_图层_13


arcgis添加basemap没有图_图层_14


2.3 发布服务


arcgis添加basemap没有图_工作空间_15


arcgis添加basemap没有图_图层_16


2.4 Server端设置

1)登陆ArcGIS Server Manager,并打开已发布的地图


arcgis添加basemap没有图_工作空间_17


2)添加动态工作空间,并点击REST URL链接


arcgis添加basemap没有图_数据_18


3)验证动态工作空间是否发布


arcgis添加basemap没有图_数据_19


4)验证动态图层是否可以成功发布


{
 //id自设
 "id": 1,
 "source": {
  "dataSource": {
  //工作空间id
   "workspaceId": "Test00",
   //源数据名
   "dataSourceName": "ltest.sde.test",
   //栅格raster,矢量table
   "type": "raster / table"
  },
  //mapLayer对已有图层动态修改,dataLayer向动态工作空间叠加服务图层
  "type": "mapLayer / dataLayer"
 }
}


arcgis添加basemap没有图_图层_20


5)点击“导出地图”(续2.4第三步)


arcgis添加basemap没有图_工作空间_21


6)导出动态地图


arcgis添加basemap没有图_工作空间_22


2.5 效果展示

2.5.1 企业级数据库

1)准备数据 2)发布地图服务,参见本文2.1-2.3 3)向动态工作空间新增数据并测试

矢量数据


arcgis添加basemap没有图_数据_23


arcgis添加basemap没有图_数据_24


栅格数据


arcgis添加basemap没有图_工作空间_25


arcgis添加basemap没有图_数据_26


2.5.2 shapefile文件夹

1)准备数据


arcgis添加basemap没有图_图层_27


2)发布地图服务


arcgis添加basemap没有图_数据_28


3)向动态工作空间新增数据并测试


arcgis添加basemap没有图_工作空间_29


arcgis添加basemap没有图_图层_30


arcgis添加basemap没有图_图层_31


2.5.3 栅格文件夹

1)准备数据


arcgis添加basemap没有图_数据_32


2)发布地图服务


arcgis添加basemap没有图_图层_33


3)向动态工作空间新增数据并测试


arcgis添加basemap没有图_数据_34


arcgis添加basemap没有图_工作空间_35


arcgis添加basemap没有图_工作空间_36


2.5.4 文件地理数据库

与企业级数据库类似。

2.6 服务调用

3.x与4.x版本源码迥异,参考API指南进行编辑

2.6.1 本地服务

前往ArcGIS API for JavaScript下载页获取需要的API版本,并将其解压到本地项目中。

2.6.2 托管服务

托管服务直接引用ArcGIS在线js类库,优点为不用下载API文件,缺点为偶尔可能加载较慢。

2.6.3 图层渲染

渲染器可以为特征图层或者图形图层定义一组符号,ArcGIS API For JS中有五种不同的渲染器,SimpleRenderer、ClassBreaksRenderer、UniqueValueRenderer、DotDensityRenderer和TemporalRenderer五种,无论那种渲染都要创建渲染示例,定义渲染符号,最后将渲染器添加到图层,详细内容参见ArcGIS API For JS 之render(符号渲染)。

2.6.4 测试案例

感谢网友无私的分享,大家记得一定star哈! https://github.com/xinligis/AGS-JSAPI-Samples/tree/master/%E5%8A%A8%E6%80%81%E5%9B%BE%E5%B1%82

2.7 故障排查

1)发布地图服务时,提示“无法注册文件夹到server上”

解决方案:


arcgis添加basemap没有图_图层_37


2)动态图层工作空间为企业级数据库,新增动态图层验证错误


arcgis添加basemap没有图_数据_38


解决方案:


arcgis添加basemap没有图_图层_39


3)动态空间栅格图层,前端显示配色不正确


arcgis添加basemap没有图_数据_40


解决方案:


arcgis添加basemap没有图_数据_41


arcgis添加basemap没有图_工作空间_42


3 参考资料

  1. 关于动态图层
  2. 使用动态图层在服务器端渲染
  3. arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤
  4. ArcGIS Server10.1 动态图层服务
  5. 【转】ArcGIS Server 10.1 动态图层
  6. 【转】ArcGIS Server 10.1 动态图层—添加栅格
  7. ArcGIS Server 10.1动态图层 以及Windows Phone/Silverlight客户端实现
  8. 下载并部署 ArcGIS API for JavaScript 4.10
  9. 初识:ArcGIS API for JavaScrip
  10. ArcGIS_api_for_js_添加动态图层
  11. ArcGIS API For Javascript之动态图层
  12. arcgis server for javacript 动态创建矢量、栅格图层