教程:创建缓存的地图服务

复杂性:中级 数据要求:使用自备的数据

创建快速地图服务的最佳方式就是对其进行缓存。对地图服务进行缓存时,服务器会以您定义和保存图像的一组比例级别来绘制地图。当服务器接收到对地图的请求时,与重新绘制地图相比,返回已缓存图像中的地图会更加快捷。

缓存适用于不经常更改的底图和地图。对于偶尔更改的地图,可通过工具来更新缓存。要获得最佳性能,应当缓存尽可能多的图层。制作两张地图并将适合缓存的图层与不能进行缓存的图层分开,您会发现这非常有用。例如,可以从底图图层创建缓存的地图服务,并可以从实时更新的图层或者因分析或建模而更改的图层创建非缓存地图服务。

构建缓存之前,您需要执行仔细的设计和创作工作,从而创建有效的地图缓存。本教程引导您完成规划及创作要缓存地图的过程。然后,您将创建地图服务并对其进行缓存。最后,在多个客户端应用程序中测试缓存。

使用本教程时,请选择一些覆盖较小区域的简单数据集,例如一个城市或县。本教程是一次练习,目的在于帮助您为组织中将来的缓存工作做好准备。请特别注意论述和说明部分,但无需第一次就追求完美。需要一些练习才能设计出满意的缓存。

本教程有四个主要部分:

创作地图

对地图进行缓存时,服务器会以您选择的一组比例来绘制地图。绘制完成地图后,除非重建或更新缓存,否则无法更改它显示的方式。这意味着需要特别注意以下两点:

您的组织可能已经确定缓存时使用的切片方案。切片方案确定了缓存的某些属性,包括创建哪种比例级别。

选择比例

在本教程中,假设您正在创建自己的切片方案,而您需要选取一些比例。要开始为地图确定合适的比例,请遵循以下步骤:

步骤:
  1. 打开地图文档并添加数据集。设置一些初始符号系统以使地图看起来美观,但请勿在这一点上过度追求细节。保存地图。
  2. 现在花几分钟来导航数据。平移和缩放用户通常会查看的区域。导航时,集中精力注意您正在查看的比例。
  3. 放大到您认为用户查看地图需要使用的最接近比例。对此比例四舍五入一位并记下结果。
  4. 采用您当前查看的比例并将其除以二(切记,比例实际上是一个分数,因此将它除以二时要使分母乘二)。例如,如果您正在查看的比例是 1:40,000,要将其缩放至 1:80,000。最简单的方法是直接在比例下拉列表中输入该比例。记下新的比例并简略地检查地图。
  5. 继续将比例除以二并记下比例,直至达到用户不再需要进一步缩小的程度。现在比例列表已经完成。

注:并非一定要将比例除以二,也可以使用其他数字。但多数情况下,除以二提供了良好的缩放量级。

设置 ArcMap 来使用您的比例

由于您已经选择了一些比例,因此可以开始着手让地图在每个比例都有良好的显示效果。创作地图时,您可能经常需要在这些比例之间后退和前进。要使这项操作更加简单,可以在 ArcMap 中将比例输入到下拉列表中:

步骤:
  1. 在 ArcMap 中,单击比例下拉列表。
  2. 单击自定义此列表。
    比例列表的屏幕截图
  3. 如果只想让您的比例出现在列表中,单击全部删除
  4. 在框中输入您的一个比例,然后单击添加。持续执行这项操作,直至您已添加所有比例,然后单击确定
    比例设置对话框的屏幕截图

制作地图

现在该进行真正的地图设计工作了。缓存地图的一个优点是,在设计阶段,您可以随时使用所有制图工具,而不用担心它们对性能的影响。花点时间来让地图看起来美观一些,因为一旦缓存创建完成,不重新创建或更新缓存就无法进行更改。缓存用户也不能更改符号系统,因为他们仅是在查看存储于服务器上的预先存在的地图图像。

一种很好的做法是,在为缓存所选的每个比例下设计地图。这对栅格数据来说更加简单,因为更改比例时,ArcMap 会对数据进行一些重采样。然而,必须使用相同大小的点和线在每个比例上对矢量数据进行符号化,并且需要更多一点精力来防止地图看起来过于凌乱或过于稀疏。以下步骤介绍,在地图包含矢量数据的情况下,可以使用的一种设计策略。

步骤:
  1. 在 ArcMap 中地图处于打开状态时,缩小至最远(最小)比例。
  2. 为该比例设置图层的符号系统和标注。

    提示:您可能需要设置一个定义查询,以便使较少要素在该比例上可见。例如,如果有一个城市图层,您可以设置一个定义查询,将显示范围限制为人口大于 20,000 的城市。

    图层属性对话框中,位于定义查询选项卡下的查询构建器对话框的屏幕截图
  3. 放大至下一个最接近比例。
  4. 为该比例设置图层的符号系统和标注。

    提示:如果想在已经符号化的图层上,将符号、标注或定义查询更改为不同比例,请向地图添加图层的另一个副本。为此,在 ArcMap 内容列表中右键单击该图层,然后单击复制。然后右键单击数据框名称,并单击粘贴图层

    如果您完成了图层的多个副本,则可以使用图层组来记录这些副本。针对每个比例制作一个图层组是最简便的。这样,只需对组来设置比例可变选项,而不用为每个单独图层进行设置。甚至可以将比例包含在名称中。例如,可能具有这种图层组等级:

    内容列表中,图层组等级的屏幕截图

    您需要在每个图层上设置比例范围,以使在每个已缓存比例下只有一个图层可见。针对每个缓存比例配置带容差的比例范围。例如,上述道路图层将在 1:1,500,000 下进行缓存,您可以将图层设置为仅在缩小比例超过 1:1,000,000 且放大比例超过 1:2,000,000 时才是可见的。

  5. 继续缩放至每个连续比例并适当进行符号化,直至完成列表中的所有比例。
  6. 保存地图并关闭 ArcMap。您已经为发布地图准备就绪。

发布地图服务

要创建缓存,必须首先将地图发布为服务。可以使用 ArcGIS Server 管理器或目录 窗口。下述说明将使用目录 窗口,因为无论如何,您都将使用该窗口来创建缓存。此外,只能在 ArcGIS Desktop 中启动缓存工具。

在管理器与 ArcCatalog 中,均有两种方法来创建服务。发布 GIS 资源 向导以服务启动与运行所需的最少量信息提示您。该向导设置所有其他服务属性的默认值。相比之下,添加新服务 向导允许您在发布服务前设置高级属性。下述说明显示了如何使用添加新服务 向导,以便您可以增加默认的运行实例数。创建缓存时,更多的实例将能够使用更多的处理器资源。

步骤:
  1. 打开 ArcCatalog 并与您的 GIS 服务器建立管理连接。如果您需要关于此步骤的帮助,请参阅在 ArcCatalog 中与 ArcGIS Server 建立管理连接
  2. 右键单击连接,然后单击添加新服务
  3. 输入服务的名称,然后单击下一步
  4. 浏览至您已创建的地图文档,并填充地图文档文本框。ArcGIS Server 对象容器 (SOC) 帐户需要权限才能读取此文档及其引用的任何数据。
  5. 使用服务器缓存目录下拉列表,选择想要创建缓存的目录。如果列表为空,在可以继续之前,需要添加服务器缓存目录。有关帮助,请参阅创建服务器目录
  6. 选择服务器缓存目录后,单击下一步。再次单击下一步,选择服务的默认功能。
  7. 现在,在所在的向导页面上,您可以选择服务的池化模型及实例数。对于已缓存的服务,应该始终选择默认的已池化。但是,可以将实例数更改为大于 2 的数字。

    大多数情况下,进行缓存时,一个 CPU 可以处理至少 3 个实例。功能更强大的计算机,或者配置了多台 SOC 计算机时,甚至可以处理更多实例。如果想要利用服务器的全部能力来创建缓存,或者如果具有超大型 ArcGIS Server 部署,您应该增加实例的默认最大数。

    添加 ArcGIS 服务向导中的池化选项卡的屏幕截图

    您可能想知道是否需要将默认超时值增加到高于默认的某个值,因为创建缓存会需要很长时间。实际上,开始创建切片之前,缓存工具会将超时值重置到非常大的值,因此无需更改此处的默认超时值。

  8. 更改最大实例数之后,单击下一步,然后再次单击下一步,在整个向导中接受默认设置。在最后一页上,选择是,立即启动服务,然后单击完成来创建服务。
  9. 在 ArcCatalog 中,使用预览选项卡来验证服务是否按预期显示。

创建缓存

由于具有正在运行的地图服务,因此可以创建缓存。要开始创建缓存,请执行以下步骤:

步骤:
  1. 在 ArcCatalog 或 ArcMap 的目录窗口中,找到目录树中的服务。右键单击此服务,然后单击服务属性
  2. 单击缓存选项卡。下面列出了可以访问的某些缓存属性的位置。开始创建缓存切片之前,将使用该选项卡来配置切片方案。
  3. 选择使用将在下面定义的缓存中的切片来绘制地图服务。
  4. 比例文本框中输入您的一个比例,然后单击添加。在列表中应该看到该比例。
  5. 继续输入每个比例并单击添加,直至达到列表末端为止。
  6. 将缓存切片格式更改为 JPEG。这种格式可生成小型切片,并会减少存储缓存所需的磁盘空间。客户端也可以更快地加载切片。
    位于地图服务属性对话框中的缓存选项卡的屏幕截图

    注:此步骤假设不会将该缓存叠加到另一个服务上。对于叠加服务(例如道路及边界网络),应该改为选择 PNG8 或 PNG32。如果叠加服务具有超过 256 种颜色,请使用 PNG32。

  7. 现在已经配置完切片方案(对所有其他属性使用默认设置)。应该开始创建切片了。单击创建切片
  8. 管理地图服务器缓存切片工具出现,同时许多需要的信息已经填充其中。这就是要用于创建切片的工具。花些时间来检查工具的参数。
  9. 更新模式设置更改为重新创建所有切片。通常利用该设置创建并更新缓存。
  10. 也可以更改地图服务器实例数设置。此数字可以衡量专用于创建缓存的服务器的计算能力。
    管理地图服务器缓存切片工具中,高亮显示更新模式设置的屏幕截图

    请参阅分配服务器资源以创建地图缓存以了解有关此设置的更多信息。

  11. 您已经填充了工具的必要属性,因此单击确定开始生成缓存。

根据最大的比例、数据的范围以及其他因素,可能需要一些时间来生成缓存。本练习中,如果选取了一些简单的数据集以及很小的地理范围,则缓存可能在一小时内完成。地理处理状态窗口会显示一个进度条,指示已完成多少缓存。

在 Linux/Solaris 中,可以从命令行创建/更新缓存

测试缓存

缓存一旦完成,就可以在 Web 制图应用程序中进行测试,以便确保地图按所需方式显示和执行。这也是验证应用程序能否识别并成功使用切片的好方法。

用于测试的 Web 应用程序可以是单一程序。创建测试应用程序的一个好方法是使用 ArcGIS Server 管理器。

步骤:
  1. 单击管理器的主页选项卡,然后单击创建 Web 应用程序
  2. 输入 Web 应用程序的名称,然后可以选择输入描述。然后,单击下一步
  3. 在面板上,单击添加图层。然后浏览至已缓存的地图服务并将其添加到地图中。如果需要与此步骤相关的帮助,请参阅选择要显示的图层
  4. 您已经完成了向导的最重要部分。单击完成,接受其他应用程序设置的默认项。
  5. 已完成的 Web 应用程序将在新窗口中显示。缩放级别滑块中的级别与缓存中的比例对应。
    缩放级别滑块的屏幕截图
  6. 在地图周围平移并缩放至不同级别。在地图中平移和缩放时,您会注意到地图切片非常快速地显示。

疑难解答

如果没有显示应用程序正在使用缓存,请确保:

  • 补丁包级别是匹配的(如果已经应用补丁包)。
  • 您创建的是融合缓存而不是多图层缓存。默认情况是融合,且如果完全按照上述说明操作,会创建一个融合缓存。
  • SOC 帐户对服务器缓存目录具有读取写入权限。

如果正在使用 Mozilla Firefox 查看 Web 应用程序,则有一种简单方法来判断您的缓存切片是否正在使用。

步骤:
  1. 单击工具,然后单击页面信息
  2. 单击媒体选项卡。
  3. 检查列表中显示的图像。如果能看到服务器缓存目录(或关联的虚拟目录)中的图像,则可以确信缓存正被使用。
    Mozilla Firefox 中,位于页面信息对话框的媒体选项卡的屏幕截图

更多阅读材料


3/7/2012