三维服务的缓存机制 |
为提高三维数据应用的整体性能,在使用前需要先对数据进行预处理,即创建分层缓存。例如:对影像数据进行预处理,即将影像数据简化成不同分辨率图像的集合,通过重采样方法,建立一系列不同分辨率的图层,每个图层分割存储,并建立相应的空间索引机制,从而提高缩放浏览影像时的显示效率。因此,加载在三维场景中的数据推荐使用三维缓存数据而不是原始数据。
对于 SuperMap iServer 的 三维服务来说,三维场景浏览时服务端向客户端传输的数据量更大,因此同样需要缓存机制来提升客户端访问效率。
SuperMap iServer 的三维服务支持服务器端提供的通用的缓存机制,如HTTP 缓存、请求缓存,还支持其特有的三维缓存,包括动态缓存和手动的预缓存。
SuperMap iServer 提供了动态缓存来提高用户浏览访问三维场景的速度。
三维服务发布后,用户第一次访问服务浏览数据的时候,服务器端会动态的生成相应图层的三维缓存,而用户下次请求时不需再生成缓存。也就是说,除用户第一次访问时服务器端需要一边加载数据一边生成缓存外,以后用户再访问时,服务器端都直接调用缓存在客户端的缓存数据,从而实现了用户访问三维服务时服务器端响应速度的提升。
SuperMap iServer 的三维服务默认开启动态缓存,无需手动设置。关于 SuperMap 三维服务自动生成的缓存类型及格式,请参考:存储格式。
三维服务的预缓存是指将预先生成的缓存文件或整个场景的缓存放入 SuperMap iServer 对应的缓存目录,即将缓存文件复制到【SuperMap iServer 安装目录】\webapps\iserver\output\{scene} 目录下。
预先将切好的缓存文件存放在上述缓存目录下后,客户端浏览三维服务的场景时将直接使用缓存数据,而不再生成动态缓存。关于 SuperMap 三维服务支持的预缓存的数据类型及文件格式,请参考:存储格式。使用三维服务的预缓存功能时,请注意保持路径、缓存名称的一致性。使用整个三维场景缓存的好处是在 SuperMap iDesktop 中采取一次操作即可对场景中的所有数据切缓存,且将整个场景的缓存保存到三维服务缓存路径时也更容易保证各个数据缓存文件名称、目录的一致性,因此推荐使用这种对整个场景进行预缓存的方式。
注意:
SuperMap iServer 三维服务支持的缓存格式有:影像缓存、地形缓存、矢量缓存、矢量模型缓存、二三维地图缓存,以及整个三维场景的缓存。
缓存类型 | 缓存格式 |
说明 |
矢量 | *.scv | 缓存名称:数据集名@数据源名 |
影像 | *.sci3d | 缓存名称:数据集名@数据源名_MIX |
地形 | *.sct | 缓存名称:数据集名@数据源名_Terrain_ZIP |
模型 | *.scm、*.scv、*.scp | |
地图 | *.sci(地图缓存) | 缓存名称:地图名 |
场景缓存 | 缓存名称:三维场景名
场景缓存是一组文件,即将上述各个类型数据分别创建相应的三维缓存。 |
原始型——当缓存储存类型为原始型,即 StorageType.Original 时,缓存文件为原始图片格式,缓存数据表现为多个文件夹下的图片格式,对于地形缓存,缓存文件为 *bil 格式,对于影像缓存则为 *. png 格式。
紧凑型——当缓存储存类型为 StorageType.Compact 时,缓存文件为大文件缓存格式,缓存数据表现为紧凑文件格式,缓存文件非原始缓存图片,而是将列文件夹中的所有缓存图片进行紧凑、加密处理,存储到一组文件中。该组文件分为三个部分:索引文件、一组数据文件以及锁文件,索引文件为*.sc(SuperMap Cache File)格式;数据文件为*.scXX(SuperMap Cache File Data)格式,这里的 XX 不是两个字母,是两个16进制数字(00~FF)。这里只支持两位16进制数,所以最多支持256个数据文件。数据文件的个数由缓存数据的大小决定,一个数据文件最大为2G。此外,Windows 下可能会存在一个锁文件(为*.~格式),实现多线程或多进程同时读写缓存。与原始型相比,紧凑型存储方式具有以下优势:
(1) 有利于大量的缓存文件的传输与拷贝;
(2) 缩短缓存创建的时间耗费;
(3) 提高客户端缓存文件获取性能;
(4) 数据支持加密。