Skip To Content

高效缓存

为地图及影像服务缓存生成和存储缓存可能会占用服务器上的资源。 以下是可用于更加高效地进行缓存的常见策略。

估算缓存大小

通过确定切片方案的缓存大小,您可以为缓存生成分配适当数量的资源。 缓存大小越大,则生成缓存内容时将使用的 CPU、内存、时间和磁盘空间越多。

借助 ArcGIS Pro 共享窗格,您可以根据缓存配置来估算缓存的大小。 您可以使用此估算来了解由于选择不同的图像格式或比例级别而导致缓存大小发生变化。

有关详细信息,请参阅配置 Web 切片图层

使用感兴趣区域缓存详细级别

默认情况下,将为地图的全图创建缓存内容。 如果针对非矩形的大型地理实体创建切片,则可交互定义要缓存的感兴趣区域,从而节省时间和资源。

感兴趣区域是用户最常查看的区域和要素。 例如,主要城市、地标和高速公路是用户会频繁缩放到的感兴趣的公共区域。 这些区域可以是相邻的,也可以是分散的,它们被用户不太可能缩放到的区域(如沙漠或海洋)分隔。

通过按感兴趣区域或要素类进行缓存,您可以仅在所需位置创建和维护切片,避免出现空的或不感兴趣的区域。 这样做,即请求服务器工具仅创建覆盖那些感兴趣区域的切片。 其余区域则可以根据客户端的请求按需进行缓存。 这样就无需为用户不会访问的区域创建不必要的切片,因此可以节省时间和磁盘空间。

感兴趣的区域可以是单个或多个部分,并且其形状可以规则或不规则。

指定此要素类的方式有两种:

  • 发布服务或首次初始化缓存时,设置服务编辑器中的缓存 > 高级设置选项卡上的要缓存的感兴趣区域参数。 从下拉列表中,选择从要素类导入。 此感兴趣区域只有当您在发布过程中选择了自动构建缓存才适用。
  • 打开“管理地图服务器缓存切片”工具并设置感兴趣区域参数。 此设置会覆盖您可能已在服务编辑器器中设置的任何感兴趣区域。
注:

如果您在 ArcGIS Pro 中运行“管理地图服务器缓存切片”工具,您也可以在屏幕上草绘感兴趣区域。 这在您尝试修补缓存中已知区域缺失的切片或为确保覆盖指定区域而仅运行一次此工具时会很有帮助。 然而,对于大多数有组织的缓存作业或更新内容而言,建议您提供一个要素类。

下图显示的是当要素类只包含加利福尼亚时将创建的切片的理论格网。 此要素类有助于避免创建海洋和相邻州区域内的不必要切片。 如果使用了默认的矩形范围,则将包含这些不必要的切片。

基于要素边界创建切片插图

如果要基于点或面要素类构建或更新缓存,您必须首先缓冲少量要素以获得一个面要素类。 也建议您在使用缓冲区作为感兴趣区域之前进行融合及概化。

在世界和国家比例下,您创建的切片也相对较少,因此是否按要素类缓存影响不大。

避免动态投影

建议您将源数据投影到与地图和切片方案相同的坐标系中,以避免动态投影。

如果您选择不更改工作数据库的投影,则建议您准备生产数据库的单向副本,该副本仅用于创建缓存和满足用户查询。

优化标注

标注是自动生成和放置地图和场景要素的描述性文本的过程。 标注是地图上动态放置的一段文本,它源自一个或多个要素属性。 计算地图标注最佳位置的过程可能非常耗时,而且会减慢切片创建速度。

默认情况下,会使用标准标注引擎来决定每个标注的放置位置。 该过程的持续时间随着生成的标签数量的增多而增加。

在缓存作业期间,ArcGIS 将一次绘制大型区域以帮助减少同名标注。 然后将这些大型区域(超级切片)分成更小的单个切片。 超级切片大小为 2048x2048 像素(带抗锯齿)或 4096x4096 像素(无抗锯齿)。

在超级切片内部不应看到任何标注重复项,但重复项可能出现在超级切片边界处。 这是因为当一个超级切片被标注时,标注放置引擎不了解相邻超级切片上的标注。 事实上,您的标注引擎可能正在努力在超级切片中包含尽可能多的标注,因此一些标注将被放置在边缘附近。 它可能会在相邻的超级切片上进行相同的操作,导致超级切片边界附近出现重复项。

注记图层

注记图层提供了一种避免缓存中出现重复标注的方法。 注记为特殊图层,其中每个标注都被视为具有属性的要素。 属性包括在地图上为每个标注指定的位置。 您可以编辑注记图层以移除同名标注。

注记是缓存时绘制标注的最快方式,因为它不需要标注放置决策。 每个注记都具有作为标注属性的预先确定的坐标。 有关详细信息,请参阅注记

为地图缓存创建注记图层

注记图层可能非常大,而为地图的各种不同比例创建注记似乎是一项艰巨的任务。 “注记”工具集中的两个工具位于制图工具下方,旨在帮助您为地图缓存创建注记。

第一个工具是地图服务器缓存切片方案转换为面。 此工具读取地图缓存切片方案并创建表示切片方案每个比例的超级切片边界的格网。 这些格网有助于将注记创建工作分解为可管理的部分。

另一个工具是切片标注转注记。 您将提供创建的超级切片格网、地图文档和输出工作空间,此工具会为缓存中的每个比例创建注记。 为地图文档中启用标注的所有图层创建注记。

此工具生成的注记将提供与创建缓存时相同的标注放置。 然后,您可以检查或查询图层中的同名标注,并在构建缓存之前将其删除。 或者,您可以在发现冲突时手动清理缓存更新之间的注记图层。

在大型区域上运行上述工具之前,最好使用小范围的简单地图进行练习。 创建超级切片格网和绘制注记任务非常耗时,需要确保在对大型地图使用这些工具时提供了正确的参数。 您的练习还有助于估计这些工具可能需要的时间及其创建的注记数量。

Maplex 标注

与标准标注引擎相比,Maplex 提供更多选项,计算能力更强,并且可以放置更多标注。 虽然 Maplex 可以提供良好的结果,但它也会消耗大量内存,并且会降低地图缓存的速度。

警告:

在使用 Maplex 构建完整缓存之前,建议构建一个测试缓存并在创建切片时检查系统的内存使用情况。 如果在此过程中内存使用量接近计算机限制,请考虑禁用 Maplex。 如果您选择不禁用 Maplex,则可能遇到系统不稳定问题,并可能在创建切片时发生系统崩溃。

要在良好的标注放置和性能之间取得最佳平衡,建议使用 Maplex 标注引擎在地图文档中绘制标注,并将这些标注转换为注记以在地图服务中使用该注记。

在独立缓存中维护标注

矢量要素及其关联标注通常包含在同一个缓存中。 通常情况下,您不会允许用户关闭标注,但是可以根据需要将标注隔离至独立于要素的缓存。

标注通常不应包含在影像缓存中。 通过将它们独立存储,可以单独使用影像,也可以将其重复用于其他应用程序。 与具有多个标注叠加缓存的一个影像缓存相比,具有不同标注集的多个影像缓存在磁盘上累积占用的空间更多。

优化符号系统、字体和抗锯齿

在某些情况下,您可能选择为地图内容添加自定义文本符号或字体。 有关详细信息,请参阅文本符号

要在 Web 图层中使用字体,字体必须位于构成服务器站点的计算机上,或者,如果字体不在服务器上,则其必须能够嵌入 GIS 资源。 要确认字体是否可以嵌入,请在 Microsoft Windows 中查看字体的属性。

注:

无法将 Type 1 字体嵌入以用于 Web 图层。 Type 1 字体可以安装在服务器上或与 TrueType 或 OpenType 字体交换。 服务器计算机上字体缺失会导致在确定符号系统时需要进行不必要的字体替换查找操作,并且会降低缓存生成的性能。 要确保缓存生成过程采用新安装的字体,请重新启动参与服务器站点的所有计算机。

抗锯齿是平滑线和标注边缘以防止出现像素化外观的过程。 文本抗锯齿处理基本不会影响性能,但是,要素抗锯齿处理过程的运算量高得多,可能会降低缓存速度。

应用某种级别的要素抗锯齿可以改进矢量底图的外观。 但是,必须考虑到抗锯齿质量的每一次提高都会显著延长创建缓存所需的时间。 最快设施适用于大多数缓存。 除非您的测试缓存显示有必要实现更高级别的质量,否则建议避免更高的质量设置。

缓存时监控系统资源

为了最快地创建切片,切片创建过程中的 CPU 的使用率应接近 100%,而不达到该值。 由于每个地图都是不同的,实现此级别的 CPU 使用率可能需要对缓存设置进行多次试验。 有关详细信息,请参阅缓存工具和用于缓存的服务器资源

系统内存是控制缓存生成性能的另一个因素。 参与缓存生成过程的服务器计算机上的内存资源应为 60%。 缓存生成的内存使用强度取决于地图或影像服务中的符号系统、标注以及要素和栅格的数量。 如果内存使用接近计算机的限制,则可能随机发生系统崩溃,服务器可能变为未响应状态。

源数据和 arcgiscache 目录的网络带宽是另一个应该监控的指标。 缓存进程会发出数千个读取源数据的请求。 如果待缓存地图文档的源数据具备足够的读取带宽,则可以确保缓存创建过程更快。

在缓存创建过程中,每个缓存实例将包写入为地图或影像服务定义的缓存目录。 在托管 arcgisjobs 或 arcgisoutput 目录的文件系统上保留 arcgiscache 目录可能会因超出带宽而导致速度变慢。

对于 GIS 服务器站点缓存,您可以指定使用存储区域网络 (SAN) 或高可用性网络附加存储 (NAS) 的高可用性文件服务器中的目录。 这项设置可在信息技术人员的帮助下配置,以确保更快的读写速度。

多机站点中的缓存生成

可以将独立服务器、托管服务器或联合服务器配置为多机站点,并使用服务器站点中所有参与计算机的资源来更快地生成缓存。

本地缓存目录

如果 ArcGIS Server 站点包含多台计算机,且这些计算机同时尝试向一个共享缓存目录写入切片,则应用程序的可扩展性会下降。 因此,该服务器使用本地缓存目录将切片临时写入每台 ArcGIS Server 计算机。

当缓存位于网络共享或云对象存储中时,ArcGIS Server 默认使用本地缓存目录。 每个缓存服务实例会将一个包文件(16,34 个切片的集合)写入本地缓存目录。 完成后,包将移动至文件系统或云对象存储的共享缓存目录中。 相对于让所有机器直接将包写入共享缓存目录中,在本地写入包然后将其移动到共享缓存目录的可扩展性更强。

使用文件地理数据库的本地副本

缓存过程需要多次读取源内容。 如果多台计算机同时访问源数据,则将输入源数据保存在网络位置可能会导致速度变慢。 如果这些请求不需要离开其计算机,则切片绘制速度会更快。 因此,在服务器上放置源 GIS 数据集的副本将在缓存创建过程中获得更快的速度和更高的稳定性。

场景服务缓存和本地缓存目录

为场景服务构建场景切片缓存时,也会使用本地缓存目录。 在将场景缓存移动到切片缓存数据存储以作为最终缓存切片存储之前,将在本地缓存目录中构建场景缓存。 这些临时文件的大小可能是最终缓存大小的三到五倍,并且将在缓存构建完成时删除。

设置本地缓存目录位置

默认本地缓存目录是 ArcGIS Server 账户的临时文件夹。 您可以使用 ArcGIS Server 管理员目录来更改此项。

建议在此位置为 CachingTools 地理处理服务的每个正在运行的实例提供的可用空间至少为:0.5 GB 乘以 ArcGIS Server 站点中的计算机数量。 使用高压缩比的 JPEG 或混合格式缓存或者具有高位深度的详细 PNG 缓存可能需要更多空间。

如前一部分所述,如果您正在发布场景服务,则本地缓存目录必须有足够的可用空间才能容纳创建场景服务缓存时生成的临时文件。

  1. 在每个 ArcGIS Server 站点的计算机上使用完全相同的路径创建目录。 确保 ArcGIS Server 账户拥有对这些目录的写入权限。
  2. 打开 Web 浏览器浏览到 ArcGIS Server 管理员目录。 URL 地址格式为 http://gisserver.domain.com:6080/arcgis/admin
  3. 如有必要,使用具有 ArcGIS Server 管理权限的用户名和密码登录。
  4. 单击系统 > 属性 > 更新
  5. 在文本框内,添加指向您文件夹的 localTempFolder 属性。 例如:{"localTempFolder":"/data/temp"}
  6. 单击更新按钮。
  7. 使用 ArcGIS Server Manager目录窗口导航至名为 SystemArcGIS Server 文件夹并停止,然后启动以下服务:
    • 用于地图和影像服务的 CachingTools 地理处理服务
    • 用于场景服务的 SceneCachingTools 地理处理服务