关于业务图层
每个 Web GIS 应用程序都需要一组供特定用户组使用的业务图层。通常,业务图层数据受到几个焦点图层的限制,只在用户缩放到特定等级时才可显示。数据流入客户端,然后由客户端进行渲染和管理。
采用这种模式的原因有多个。首先,业务图层通常是动态的,因此通常无法预先缓存。其次,用户希望业务图层能够做出响应、快速绘制、通过鼠标单击报告详细信息,并能显示特定功能的链接。第三,业务图层必须与底图服务在同一个坐标系中。这一点尤为重要,因为坐标系偏差可导致叠加问题、性能较差、以及 Web GIS 应用程序中出错。
可使用浏览器 API 实施在客户端执行的动态渲染和用户交互,浏览器 API 包括 ArcGIS Web Mapping API for JavaScript、ArcGIS Web Mapping API for Flex 和 ArcGIS Web Mapping API for Silverlight。但是,业务图层数据可能偶尔过大,从而导致浏览器无法有效进行渲染。在这种情况下,业务图层数据应由服务器渲染。
业务地图图层的三种发布方法
要将业务地图图层发布到服务器,有以下几个选项可供选择:
- 使用查询来选择满足特定条件要素的子集,然后使用地图图形和文本显示查询结果
- 作为动态地图服务
- 作为缓存地图服务
以地图图形和文本的形式显示查询结果
显示业务信息的一个最有效机制是使用查询结果。对 GIS 服务器进行查询将以一个较小的记录集形式返回一组要素结果。从服务器返回的查询结果包括一组要素及其坐标,以及由每个要素的属性组成的属性集。这些结果以交互式图形和描述性信息的形式显示在地图上,您可以对这些图形和信息进行操作、绘图和汇总,并可以将其作为超链接(单击即可访问关于每个要素的更详细信息)。
此方法需要利用应用程序编程来创建结果的地图图层。每个 ArcGIS Web 制图 API 都包含有关在地图上查询并以客户端图形的形式显示结果的帮助。
作为动态地图服务
可发布的一种地图服务类型是动态地图服务。顾名思义,该地图图层显示是动态生成的。换言之,客户每次向服务器发出请求以显示地图服务时,都会计算和提供显示画面。由此得到的地图图像将发送到请求方应用程序并叠加到底图上。
要创建动态地图服务,您需要首先创建一个包含单个或多个焦点图层的 ArcMap 文档。然后即可将其发布为地图服务。由此得到的地图服务将在 Web GIS 应用程序中使用,用户可通过其来处理业务信息。
动态地图服务的优点是能够提供业务图层的最新准确状态。但是,动态地图图层通常是 Web 地图绘制方法中最慢的一种方法。
作为缓存地图服务
提供业务地图图层的另一种备选方法是使用缓存地图服务,其中地图显示是预先算出的,并且提前存储在地图缓存中。在这种情况下,不必在客户端每次从服务器请求获取地图时都重新计算业务地图图层的显示。此时将从服务器检索相应的地图切片,这将大大提高性能和可扩展性。
某些情况下,业务地图图层的静态性较强,很少发生更改。这意味着您可以通过预先计算地图来定期更新这些图层,而不是在每次从服务器请求获取地图时都计算一个新地图。这样,每个人对于要使用的地图服务都可以实现更快速、更高效的访问。
缓存地图服务的扩展能力非常强,这意味着它们可对服务器上的很多并发命中项做出快速的响应。如果您预期用户流量会非常大,则对图层进行缓存处理是值得的,即使您需要对缓存进行频繁地更新。
如果您没有时间或足够的磁盘空间来为缓存创建所有切片,则可以预先创建一些切片,然后在需要时创建其余切片。当第一个客户端访问 Web GIS 应用程序时,会为请求的区域(一组地图切片)计算地图缓存,从而构建缓存。其他所有用户中无论是谁访问这些地图切片,都只需要使用新地图缓存即可。每次用户发出请求时,都会对该缓存地图切片(如果存在)进行检索。否则,将计算切片并将其缓存在磁盘上。只有第一个用户需要计算地图显示,然后其他用户才能访问业务图层的缓存地图。
有关如何创建缓存地图服务的详细信息,请参阅主题什么是地图缓存?。