地图缓存的相关提示和最佳做法
下面的操作提示可帮助您获得最佳的地图缓存效果和性能。这些提示可分为以下几类:
准备地图文档
如果可能,在开始设计地图之前,请先选择要缓存的比例。在 ArcMap 中创建地图时,请仅在这些比例下执行各种操作。为便于参考,您可以将这些比例手动加载到 ArcMap 的比例下拉列表中。
缓存地图之前,请在要缓存的各个比例下检查源地图文档的视觉效果。请确保相应的图层在每个比例下都具有有效的符号系统和标注。如果需要基于比例更改图层的符号系统,您可以复制该图层并将其粘贴到 ArcMap 的内容列表。设置每个图层副本的比例范围,并在此比例范围内进行相应的符号化。
下图显示了一幅已符号化的 ArcMap 文档,该文档分别针对两个比例级别设置了符号系统以方便查看。该地图的作者将 Interstates 和 Cities 图层复制并粘贴到数据框中,然后分别对每个图层的放大和缩小版本进行符号化。
在缩小版本的地图中,作者通过设置定义查询将可见城市限制为人口超过 5 万的城市。同时,作者还使用细线对 Interstates 图层进行了符号化。
在放大版本的地图中,作者移除了定义查询以便所有城市均可见。不过,作者添加了一种使用较大字体符号化较大城市的标注规则。另外,作者还改用较粗的制图线符号对 Interstates 进行符号化。
作者对放大和缩小的图层都设置了比例范围,从而确保在任何给定的比例下仅一个图层可见。Rivers and Lakes、County Boundaries、Parks 及 State Background 图层在放大和缩小时都使用相同的符号,因此作者未创建这些图层的副本。
如果您要创建一个要在多个比例级别下缓存的地图,则需要重复该过程并可能会在地图文档内创建多个图层副本。可使用图层组以确保这些图层副本井然有序。
将文本符号的 X 偏移值和 Y 偏移值分别设置为 0。使用文本符号偏移可能会无意中不时地导致标注截断。可改为使用标注引擎的偏移功能。
明确定义不在地图其他地方使用的数据框背景色(建议使用 RGB 254,255,255)。否则,与背景色恰好相同的任何符号和文本都可能显示为透明。
您可以在 ArcMap 中明确地设置背景色。在支持 PNG 24 和 PNG 32 透明度的环境中,背景将显示为透明。
开始执行大型缓存作业之前,首先针对各个比例级别对小块区域进行缓存测试。您可以通过创建一个覆盖测试区域的小型要素类来实现。创建缓存时,选择基于感兴趣区来创建切片的选项。为该小块区域创建缓存后,请检查切片以确保切片的外观和性能达到预期效果。可通过使用“服务目录”来预览服务进行检查。
创建缓存
-
确保已经创建足够的比例来充分地查看数据。当重采样的缓存切片位于比例范围内时,ArcMap 用户即可查看这些切片。缓存的比例过少会导致更多的重采样操作,并可能造成要素变形。同时,最好避免使用一些不必要的大比例值,以避免在创建切片时浪费大量的时间。
尽量对组织内创建的所有缓存使用同一切片方案。如果要将另一组织或部门的缓存服务添加到您的 Web 应用程序中,那么,当您选择切片方案时,最好选择一种与其所采用的切片方案相匹配的方案或者直接使用双方共有的方案。ArcGIS Online/Google 地图/Bing 地图是一个常见的切片方案示例。
在 Web 应用程序内创建互相叠加的缓存时,请尽可能使用同一切片方案。您不必在所有相同比例级别下创建所有缓存。不过,您应该尽可能地匹配更多的比例。
在下图中,具有不同比例范围的三个缓存尽量使用了相同的比例。用红色圈出的部分即共用的比例:
开始创建切片之前,务必将 ArcGIS Server 日志级别设为严重或警告。这些级别仅报告问题或错误。由于缓存会重复、快速地向服务器发送绘图请求,您会希望避免记录每个请求的详细信息。
创建缓存切片时,请使用感兴趣区选项来避免为不需要的区域创建切片。您可以创建一个新要素类用于明确标示出要预先创建缓存的区域。无论何时创建或更新缓存,都可以将该要素类用作感兴趣区。
避免使用按需缓存来构建整个缓存。较好的做法是为访问频繁的区域预先创建切片,而对访问较少的区域则使用按需缓存。
要改进性能,请考虑使用本地数据而非共享网络驱动器或企业级地理数据库中托管的数据。将相同的文件地理数据库放置在每台 GIS 服务器上通常是访问缓存数据最快捷的方式。请参阅 ArcGIS Server 站点数据存储注意事项,以了解此选项是否适合您的站点。
设置 System/CachingTools 服务的最小和最大实例数,使以 ArcSOC.exe 进程表示的服务实例的利用率不会过低(闲置)或过高(占用所有 CPU 资源)。有关此主题的详细说明,请参阅分配服务器资源以创建缓存。
运行“管理地图服务器缓存切片”后,请检查地理处理工具消息。在创建切片期间,如果任何服务实例发生崩溃,则丢失区域的比例和范围将写入地理处理工具消息。然后,您可以重新运行这些特定范围的缓存来填入丢失的切片。
维护缓存
如果源数据经常变化,您可以使用 Python 脚本定期自动运行管理地图服务器缓存切片地理处理工具。该工具可用于更新缓存的所有区域或所选区域。有关示例,请参阅使用地理处理工具自动执行缓存创建和更新。
创建缓存之后,如果不想继续将所有源数据存储在服务器上,可以将一些图层从源地图文档中移除。在地图文档中要至少保留一个图层(建议使用包含一个要素的简单要素类来覆盖地图范围),并使该地图文档仍使用创建缓存时所采用的坐标系。重新启动服务后,您可以将已移除图层的源数据从服务器中安全移除。只要服务名称和缓存名称保持一致,用户在查看服务时就仍可以看见缓存。
请记住,如果使用此方法,用户在查询服务时将不会得到任何有意义的结果。如果想保留一些可查询的图层,您应将其保留在地图文档中,并将这些图层的源数据保留在服务器上。