ArcGIS 中包含两个可将切片集从一个缓存转移到另一个缓存的工具:导出地图服务器缓存和导入地图服务器缓存,这两个工具都位于服务器工具工具箱中。对于不同的组织向某个主缓存提供切片的协同性的缓存工作,这些工具十分有用。这两个工具还可将切片子集移动到计算机以供离线使用。
导出/导入功能有什么作用
以下情景可以帮助您了解导出和导入工具的用途。
最佳缓存
假设您是一名负责维护您所在州的影像缓存的工作人员。州中的某个县有了新的高分辨率影像,您希望将它添加到缓存中。您请求该县将缓存导出到外部硬盘驱动器或某一可访问的网络位置,以便您能够从该位置获取导出的文件。您随后将切片导入到缓存中。
协同缓存
最佳缓存这一思路可以扩展到多个提供者。假设您正在为所处地区多个政府联合部门协调一个 Web 地图项目。各地方政府都有自己的 GIS 数据库和地图应用程序,但他们都同意采用统一的制图样式和缓存切片方案。
这种情况下,您决定构建一个由各地方政府机构提供的切片所构成的协同缓存。各地方政府导出其区域范围内的切片。然后将这些切片导入到 Web 地图的某个主缓存中。在 Internet 上查看地图的普通民众可能不会发现数据来自不同的来源。
离线缓存
ArcMap 可以像读取栅格数据集那样从磁盘中读取切片缓存。对于所支持的地图服务没有任何其他需求。这便形成了导出和导入工具的第三种使用方案,即用户将切片的子集移动到其他计算机以供离线使用。
假设您为一个大城市工作并且设置了一个包含影像的缓存地图服务。您的雇员喜欢在 ArcMap 中使用该服务以便为他们的工作提供相关信息。然而,有些员工有时必须将便携式计算机带到无法访问 Internet 的外业工作现场。
因此您决定将缓存的副本导出到网络上的某一共享位置。之后,您的雇员可从该共享位置将切片导入到他们的便携式计算机。为了避免导入不需要的切片,雇员创建了一个感兴趣区域的要素类并使用该要素类定义导入区域。雇员在便携式计算机上运行 ArcMap 时,即可浏览到导入的缓存并像添加其他栅格数据集那样将该缓存添加到地图中。
导出/导入的基础知识
导出/导入的操作流程包括以下步骤:
1. 导出一组切片
第一步是使用导出地图服务器缓存从源缓存中导出切片。还可以定义一个感兴趣区域来限制导出的范围。从这种意义上说,导出/导入工具要优于对切片执行复制和粘贴操作。如果使用简单的复制和粘贴操作,则很难在空间上隔离感兴趣区域的切片子集。
而基于要素类边界进行导出时,导出的区域实质上会裁剪到要素类的边界。周围切片上要素类边界之外的区域将变为透明(如果源缓存为 PNG 或混合缓存),或填充为背景色(如果源缓存为 JPEG)。
源文件夹可以是网络上的共享位置、启用 Web 功能的文件夹、偶尔断开连接的便携式计算机或硬盘介质。如果 ArcGIS Server 帐户对目标位置没有写入权限(此情况可能在云计算方案中发生),可以选中从服务器复制数据框。这会将切片放入服务器输出目录,客户端可从中下载这些切片。此选项较慢,但可使导出面向更广泛的客户端。
切片方案和基本缓存尺寸信息分别存储在 conf.xml 文件和 conf.cdi 文件中并随切片一同导出。客户端(如 ArcMap)检索有关缓存的基本信息时需要使用这些文件。
最后,“导出地图服务器缓存”还可用于转换缓存的存储格式(紧凑和松散)。这种转换十分必要,因为不允许在一个缓存中混合使用两种存储格式。对于要复制到离线环境中的大型切片集,建议导出为“紧凑”格式。与“松散”格式相比,“紧凑”格式占用的磁盘空间更少因此复制速度更快。
2. 可以将切片作为断开连接的栅格数据集来使用
导出切片之后,可以选择在 ArcMap 中直接从磁盘中将导出的切片作为栅格数据集来使用。只需单击添加数据并浏览到切片的导出位置。许多导出/导入工作流不需要此步骤,它只是一种可选做法。如果需要,可以在此步骤停止,并且不将切片导入到其他位置。
3. 可以选择将切片导入到另一缓存
导入地图服务器缓存工具可将导出的一组切片导入到现有缓存中。缓存的切片方案必须匹配。缓存的图像格式必须相匹配,或者接收缓存必须使用“混合”图像格式。
您可以选择性地定义要导入的感兴趣区。如果其他用户导出了整个缓存而您只希望获取其中的某一特定部分,这种方法十分有用。
如果 ArcGIS Server 帐户对源缓存没有读取权限,可以选中将数据上传到服务器。这会将切片放入服务器系统目录。随后,服务器会自动将切片移入服务器缓存目录。
图像格式的重要性
当将切片从一个缓存导入到另一个缓存中时,缓存图像格式必须匹配。
应尽量在导出/导入时使用 PNG 或“混合”缓存。JPEG 缓存不能将切片的背景色标识为透明。如果必须使用包含背景色的 JPEG 切片,请记住一点:这些切片的背景色将被引入到接收缓存。如果目标缓存的初始背景色与此不同,则导入操作将导致目标缓存有两个背景色。
提示:
要避免将这部分背景引入到缓存中,请为要参与导出/导入操作的缓存使用 PNG 或“混合”格式。
选择要合并还是要覆盖切片
将切片导出或导入到缓存后,默认情况下将忽略原始缓存中的透明像素。将导致接收缓存中的图像合并或混合。例如,您可以在不覆盖底图影像的情况下,将带有点和线要素的切片导入到底图缓存中。
在某些情况下,混合影像并不适用,您可能想强制进行导入或导出以替换感兴趣区域中的所有像素。要执行此操作,在运行导出或导入工具时,选中覆盖切片复选框。请注意,如果原始缓存包含透明像素,则在接收缓存中,此区域也会变透明。
该选择与 JPEG 缓存无关,因为 JPEG 缓存并不支持透明像素。
基于要素类边界进行导出时处理标注
基于要素类边界导出切片时,请记住一点:落在要素类边界之外的所有标注或标注段在导出的缓存中都不可见。在标注密度较高的区域,标注经常横跨要素类边界或位于边界之外,这为用户带来了问题。
如果知道地图标注将很可能根据特定的地理区域导出,可设置禁止标注与这些地理区域边界重叠的 Maplex 加权规则。单击标注工具条上的标注权重等级来设置这些权重。
下图说明了如何通过加权规则禁止标注与表示州的面要素的边界发生重叠。此类规则将确保没有任何标注会因沿州边界执行的导出操作而被裁剪为一半。
权重 1000 意味着要素无法与标注叠置。请注意,权重作用于面要素的边界,而非面本身。如果权重作用于面,则不会在州中看到任何标注。如果关注放在州边界之外的标注(例如沿海岸线),可创建一个表示州边界反方向的面并禁止在该面中放置标注。
您可能无法始终控制客户端用于导入切片的要素类。然而,使用 Maplex 标注权重,即可以极大地确保在切片导出过程中正确处理标注。
允许客户端导出缓存切片
ArcGIS 客户端 API 允许应用程序从服务器下载地图切片以供离线使用。在 ArcGIS for Desktop 的服务编辑器高级缓存页面中选中允许客户端导出缓存切片复选框时,便会启用可授权这些下载的 REST API 中的一系列操作。要了解有关这些操作的详细信息,请参阅导出切片。
大型切片下载会对服务器性能产生负面影响,并会超出客户端设备上存储的负荷。使用将导出缓存限制为设置可定义客户端一次请求的最大切片数量。
提示:
如果您要尝试确定允许下载的最大切片数量,那么您可能会发现确定客户端想要下载的平均区域然后检查该区域内的切片总数十分有用。请参阅查看缓存完成状态。
导出的切片放置在服务器输出目录中。在允许客户端导出切片时,您可能想增加服务器输出目录中允许的文件最长保留期限。默认的保留期限 10 分钟可能不足以供客户端在切片遭到清理之前完成检索。有关如何进行此编辑的步骤,请参阅在管理器中编辑服务器目录。
导出性能
使用 REST 导出切片操作由缓存控制器服务执行。分配给 CachingTools、地图服务或影像服务的实例数不影响性能。要增加在任何给定时间内均受支持的并行 exportTiles 操作数,应增加缓存控制器服务的实例数。请使用公式 3*N,其中 N 表示站点内单个 GIS 服务器计算机上的内核数。