原文地址

Web地图通常包含底图(提供影像和位置信息)和功能性的专题图层(包含业务信息)。例如提供实时交通信息的在线地图服务,其中街道图是底图,一般情况下不会变化,可以作为其他Web地图应用的底图。交通信息是专题图层,在实时动态更新。本文描述了几种在叠加底图和专题层时常用的模式。

底图和专题层在维护和显示的策略上有很大区别。在创建Web地图时,最好的办法是将二者分开处理。底图不需要经常更新,可以事先缓存成图片存在服务器上,而专题层则需要考虑数据实时更新和加快显示速度。
将底图和专题层分离需要在ArcMap中创建至少两个地图文档(.mxd),并在ArcGIS Server中发布成独立的地图服务,最后在Web地图中成为叠加的两个地图服务层。地图服务层由于是从地图文档发布来的,所以是包含很多图层的容器。

如果你对Web地图比较陌生,可能理解起来有困难。也许你的公司只有一个包含许多许多图层的地图文档要发布,为了性能和灵活性,最好是将其拆分成目的明确的多个地图文档进行发布,然后针对不同的地图服务采用相应的策略。

显示底图的策略

为了追求最快的地图显示速度,底图应该进行缓存,缓存是预先生成好的图片,当用户请求时直接从服务器读取。底图和它的缓存易于维护,因为它们通常不会变化,即使变化了,也可以更新缓存。底图通常包括影像,街道,地形或者其他为专题图层提供背景的图形(示例)。

你的底图可以来自在线的地图服务,也可以是自己的地图文档,在线的地图服务例如ArcGIS Online。通过ESRI提供的Javascript扩展,你也可以在自己的Web地图中使用Google Maps和Microsoft Virtual Earth提供的地图服务。

如果上述地图服务无法满足需求,你可以将自己的高分辨率地图通过ArcMap制作为地图文档,然后用ArcGIS Server发布并建立缓存。建立缓存时,如果选择将所有图层融合,性能将达到最好。但发布后就无法控制单个图层的显示与隐藏了。处理这部分需要隐藏的图层,你应该将它们发布成单独的地图服务作为底图,或者,专题图层。

在建立缓存时,最佳做法是只对需要显示的区域进行缓存。默认设置下,缓存工具会对整个地图文档的全图区域建立缓存。但ArcGIS Server9.3可以通过一个矢量文件指定需要建立缓存的区域,这在地图显示区域是条带状时尤其有用,不需要为大片空白区域浪费系统资源了。

当你的系统资源更加紧张,而要建立缓存的区域非常大时,可以考虑仅在用户请求时建立缓存。更加灵活的策略是对热点区域通过指定矢量文件预先建立缓存,而其他区域在请求时建立缓存,这样只有在第一个用户访问时会感觉到显示的延迟。

当底图的数据被更改时,需要对缓存进行更新,通过只更新修改了数据的区域,可以节省系统资源。这时要注意那些被设置为请求时建立缓存的区域,它们同样需要更新。最简单的办法是删除这些图片,在请求时重新创建缓存。

还可以将建立缓存工作保存为脚本,在半夜或周末,用户访问量较少时进行,减小对网站的影响。

显示专题图层的策略

将专题图层显示为客户端图形

专题图层上的图形是客户端渲染的,服务器端发回的是图形数据。当用户缩放、漫游或点击地图时,可以查看可视区域内的客户端图形,这种方式有几点好处:
保证了只加载用户需要的图形;
对图形的渲染消耗客户端的CPU,而减轻了服务器的负担;
如果数据被修改过,用户能够马上看到最新的数据;
可以将图层渲染的功能交给客户端的JavaScript,从而提供更好的符号和标注功能(示例),并且能够控制图层的隐藏。

这个例子将地块作为客户端图形叠加在底图上,并且只有在放大到一定范围后才显示,这样避免了回传大量的数据,地块没有标注,但点击后可以立即看到相应信息。

你甚至可以选择在用户点击地图前不显示图形,例如这个地图,只有在用户点击影像上的某个位置时才显示该位置的地块形状。

在客户端图形上标注是一个难题,尽管在图形上显示文字很容易实现,但没有很好的客户端标注引擎来决定文字的显示位置,避免标注信息的重叠。由于图形和属性信息都已经加载到客户端,所以响应用户鼠标点击或停放事件,在弹出的信息窗口中显示标注是一个解决之道。更高级的应用是在信息窗口中通过表格、图表或其他方式展示数据。

采用这种客户端图形的显示策略,你需要特别注意避免用户请求过多的图形。这种情况很可能使浏览器抓狂,并且占用大量的带宽。因此,你需要设计你的程序来应对这种问题。

地图服务有一个MaxRecordCount的选项,决定了每次最多请求的图形数量。默认值为500。根据需要你可以调整这个值,或者设定用户在缩放到某个比例尺时才开始请求这些图形,避免超过上限。

ArcGIS Server REST和SOAP Web服务都提供了查询地图服务的功能,通过QueryFeatures、Identify和Find操作实现。Javascript API和Web ADF框架将这些操作封装在QueryTask中。

动态地图服务

展示专题图层的第二种方式是动态地图服务。在动态地图服务中,服务器端根据请求区域绘制好地图,发送给客户端,在浏览器中叠加动态地图和缓存的地图。(译注:由于叠加时动态地图要透明,所以一般是png格式)。

这个例子展示了这种做法。
动态地图服务是处理专题图层的传统做法,这种方式加重了服务器的负担,为了提高性能,对动态地图要尽量减少显示的图层和采用尽可能简单的符号。
动态地图将当前区域内所有可见图层的数据都进行了展示,包括用户不太需要的图层。没有必要将所有这些图层都展示给用户,因此动态地图往往提供用户隐藏某些图层的功能,例如用户只关心电力网络时,对电力节点设施等图层可以隐藏,减轻服务端动态生成地图的压力。
Javascript API通过ArcGISDynamicMapServiceLayer发布动态地图,ADF通过Map Resouce发布动态服务,REST和SOAP Web服务通过ExportMapImage操作提供动态地图。

将专题图层显示为缓存的地图服务

第三种方式是将专题图层也发布为缓存的地图服务,当你的专题数据更新不是很频繁,或者更新只影响很小范围时比较适用。

这个例子是将专题图层进行缓存,然后与缓存的底图进行叠加的效果。但是这个例子同样展示了这种做法的缺点。当你在地图上缩放时,只能在几个级别上看到缓存的专题图层。因为在比例尺较大时,对专题图层的缓存要耗费相当的系统资源,而且频繁的更新数据和缓存会对程序造成较大的影响。
综观以上三种技术,可知缓存可以满足用户最苛刻的性能要求,因为浏览器只需要从服务器获取现成的图片即可。当你浏览一个缓存地图时,不需要等待地图绘制或者数据传输的过程。同时,缓存保证了最佳的制图效果,尽管制图效果在建立缓存时相当耗费服务器资源。
当你为专题图层建立缓存时,选择与底图相同的切图方案是非常必要的。切图方案设定了建立缓存的比例尺和级别,只有在底图和缓存的专题图层比例尺匹配时,才能进行叠加。相同的切图方案还包括相同的投影方式。只需要地图文档的投影相同即可,而单个图层的投影可以不同。
使用PNG 8格式的图片建立缓存是推荐的做法。PNG 24在IE6和之前版本中不能透明化。JPG则根本不提供透明,当考虑相同的切图方案时,图片的格式不必匹配,也可以进行叠加。
与缓存底图相似,对专题图层的缓存也可以脚本化和定期进行,只是比底图的更新频率更高。当第一次建立专题图层的缓存时,建议记录下所需的时间,做到心中有数。如果专题图层在较大比例尺时才进行显示,可以减少建立缓存的级别,并且采用较尽可能简单的渲染方式和标注。
Javascript API通过ArcGISTiledMapServiceLayer发布缓存后的地图服务,Web ADF使用map resource,REST 和SOAP Web 服务也提供了相应接口访问缓存后的地图服务。

转载于:https://www.cnblogs.com/renji/archive/2008/08/09/webmap_design_patterns.html

(译)Web地图设计模式——ArcGIS Server相关推荐

  1. echarts地图文字重叠解决方案_基于Echarts的百度地图叠加arcgis server的WMS图层服务...

    前言 前阵子利用echarts+百度地图做系统的门户首页,遇到一个要地图上叠加产业城影响范围示意图的需求.查阅文档之后,发现百度地图API确实提供了叠加自定义图层的方法,详情请看: 百度地图API的M ...

  2. ArcGIS Server .Net Web ADF体系结构

    ArcGIS Server .Net Web ADF体系结构 ArcGIS Server .net来创建应用有三个层次, 1 使用manager来创建一个web应用 2 使用 .net模板来创建应用 ...

  3. C# 调用ArcGIS server admin api

    一.AGS server admin api 介绍 1.1什么是admin api AGS Server Admin api 官方的称呼是 AGS Server administrator api, ...

  4. ArcGIS Server 部署与配置

    一.ArcGIS Server安装概述 ArcGIS Server安装过程包括两个部分:安装(installation)和安装后(post installation)设置.为了完成ArcGIS Ser ...

  5. ArcGIS Server 简介

    ArcGIS Server ArcGIS Server--企业级GIS服务器 产品概况 关键特征 扩展模块 常见问题 ArcGIS Server--企业级GIS服务器 ArcGIS Server是一个 ...

  6. ArcGIS Server 中AJAX应用系列(3)

    本文部分取自ESRI翻译部分及网络,其他文字版权归小能所有,转载麻烦标明出处,谢谢! 写作过程中也参阅了大量其他网络文档,如果您觉得侵犯版权,请和我联系:chinazhousheng@gmail.co ...

  7. ArcGIS Server 问题

    摘自ESRI公司网站. ------------------------------------------- 内容摘要 本指导描述了如何配置Windows XP SP2防火墙,使得ArcGIS Se ...

  8. ArcGis Server开发Web GIS新手体验(二)

    ArcGis Server开发Web GIS新手体验(二) 接(一) 我们知道,.net adf提供的map组件.toc组件等都是标准的asp.net组件.这些组件在运行时,会生成相应的html代码, ...

  9. ArcGIS Server 10.1发布结果地图服务——与10.0的区别及过程

    之前一直在研究ArcGIS Server插值,以及删格数据在Web端的展示,很多人问了我同一个问题,就是如何在Web端展示插值后的删格数据呢? 我们知道插值很多地方都会用到,它能教准确的预测和模拟事物 ...

最新文章

  1. Dataset之RentListingInquries:RentListingInquries(Kaggle竞赛)数据集的简介、下载、案例应用之详细攻略
  2. Vue 3 —— 当 data 和 ref 相同时 运行时错误 [ReferenceError: xxx is not defined]
  3. 用Python实现冒泡排序
  4. python 异常处理模块_Python Exceptions 异常处理全过程以及异常模块详细解析
  5. php多表条件排除然后输出,php – 从具有多个要求的两个表中选择值,但仅使用其中一个...
  6. java中的saturn_Saturn分布式调度平台系列:高屋建瓴之设计原理简析
  7. HDU 5643 约瑟夫环的应用
  8. 判断 wp 是否是活跃页面
  9. 机器人动力学与控制学习笔记(二)————机器人动力学建模
  10. Jad批量反编译class
  11. 读者推荐 · 一个美观的简历生成器
  12. 机器人的弊议论文_关于练字的作文800字高中(写字机器人的利弊议论文)
  13. SAP中销售订单中的条件类型修改控制问题配置分析
  14. SEO过程中外链的误区
  15. perl下载与环境安装
  16. 全文检索——Lucene
  17. eclipselink 数据库表命名规则 驼峰转下划线/表名转换
  18. 树莓派安装系统及常用软件设置
  19. 今天我们来聊聊防盗链机制
  20. C++Primer之4.6枚举读书笔记

热门文章

  1. python3入门书籍-Python学习路上不可或缺的3本书籍【经验分享】
  2. 没有统计学基础可以学python-想入门数据分析,现在转行还来得及吗?
  3. python 贴吧自动回复机-python实现微信自动回复机器人
  4. python编程从入门到精通pdf-Python编程从入门到精通.pdf
  5. python和java一样吗-三分钟看懂Python和Java的区别
  6. python语言if语句-Python入门教程之if语句的用法
  7. 学python找工作好找吗-前辈经历告诉你Python新手好找工作吗?初级岗位多不多
  8. python读取excelsheet-python实现读取excel文件中所有sheet操作示例
  9. python入门有基础-python入门基础
  10. python一次性读取整个文件-python逐行读取文件内容的三种方法