在GIS应用中,空间数据通常比较复杂且数据体量庞大,这导致了地图绘制耗时长、读取数据占用内存高等问题。因此,为了提升服务访问效率,SuperMap iServer 支持了多种缓存机制。本文将为您介绍 SuperMap iServer 支持的缓存机制,以及这些缓存的生产方式和使用方法。此外,还为您提供了一些具体场景下的缓存选择建议。
SuperMap iServer支持的服务缓存类型
SuperMap iServer 对地图服务、数据服务、三维服务都提供缓存支持,这几类服务支持开启的缓存方式如下图所示:
Web请求缓存、地图缓存、三维缓存这几类缓存方式的缓存机制如下图所示:
地图缓存包括地图瓦片、矢量瓦片、属性瓦片三类,各类地图瓦片的存储格式及默认存储位置下图所示:
注:【Output 输出路径】指【SuperMap iServer安装目录】/webapps/iserver/output。
如何选择缓存
1
地图服务缓存选择策略
单机环境下地图服务应该如何选择缓存?
在单机环境下,地图服务可以开启Web请求缓存。Web请求缓存开启方式为:
启动iServer,进入 服务>高级->HTTP缓存 页面,设置开启HTTP缓存。
此外,如数据更新频率低,建议同时开启地图缓存,具体如下:
如数据源是工作空间,建议开启UGCV5地图缓存。
如数据源是SuperMap REST服务、在线地图服务、ArcGIS REST 地图服务或OGC地图服务则建议开启SMTiles地图缓存。
在开启地图缓存时您可以选择动态缓存或预缓存的使用方式。动态缓存是在访问服务的同时动态地生成缓存。而预缓存是预先将地图缓存文件放入缓存目录,首次浏览服务时直接使用预置的缓存文件而不动态生成地图缓存。地图服务数据量较大时建议使用预缓存,可有效提高出图的效率。
UGCV5、SMTiles的动态缓存方式:
开启UGCV5动态缓存:启动iServer,进入 服务->服务提供者页面,打开服务提供者的详情页,在高级设置中将“是否禁用缓存”项取消勾选,缓存版本选择 5.0,然后保存当前配置。
开启SMTiles动态缓存:启动iServer,进入 服务->服务管理页面,打开服务的服务详情页。在缓存项勾选“是否启用地图瓦片缓存”,选择缓存类型为SMTiles,然后保存当前配置。
UGCV5、SMTiles的预缓存开启方式:
配置UGCV5预缓存:设置开启UGCV5缓存后,将已生成的UGCV5缓存拷贝至【SuperMap iServer 安装目录】\webapps\iserver\output\cache_t目录。
配置SMTiles预缓存:设置开启SMTiles缓存后,将SMTiles缓存的存储位置设置为预先生成的SMTiles缓存文件的存储路径。
注意:要使用预缓存,须保证缓存目录名(UGCV5)、缓存文件名(SMTiles)与地图名一致。
多机环境下地图服务应该如何选择缓存?
多机环境包括集群环境和基于数据库的多节点服务配置信息自动同步的环境。在多机环境下,地图服务可以开启Web请求缓存。Web请求缓存开启方式为:
启动SuperMap iServer,进入 服务>高级->HTTP缓存 页面,设置开启HTTP缓存。
此外,对SuperMap工作空间,SuperMap REST地图服务、OGC地图服务、在线地图服务、ArcGIS REST 地图服务发布的地图服务,如数据变更频率低,建议同时开启MongoDB地图缓存。MongoDB的动态缓存、预缓存开启方式如下:
开启MongoDB动态缓存:启动iServer,进入 服务->服务管理页面,打开服务的服务详情页。在缓存项勾选“是否启用地图瓦片缓存”,选择缓存类型为MongoDB,点击“导入存储位置”->“添加存储位置”,输入存储ID、服务地址、数据库、用户名、密码等信息,然后保存当前配置。
开启MongoDB预缓存:启动iServer,进入 服务->服务管理页面,打开服务的服务详情页。在缓存项勾选“是否启用地图瓦片缓存”,选择缓存类型为MongoDB,然后将缓存的存储位置设置为已存有缓存文件的MongoDB数据库。
2
数据服务缓存选择
对数据服务,SuperMap iServer默认开启Web请求缓存,您无需进行选择,也无需进行额外的启动配置。
3
三维服务缓存选择策略
对三维服务,可以开启Web请求缓存。此外,由SuperMap工作空间发布的三维服务,如数据源变更频率低,建议再开启三维缓存。开启方式如下:
开启Web请求缓存:启动iServer,进入 服务>高级->HTTP缓存 页面,设置开启HTTP缓存。
开启三维缓存:通过SuperMap iDesktop生成三维缓存后,将已切好的三维缓存文件复制到【SuperMap iServer 安装目录】\webapps\iserver\output\{scene} 目录下。
如何生产缓存
缓存生产方式有两种,动态缓存和预缓存。动态缓存是在访问服务的同时动态地生成缓存。而预缓存是提前生成缓存,访问服务时直接使用已生成的缓存文件。地图服务既可以动态生成缓存又支持预缓存,而数据服务仅支持动态生成缓存。
1
动态生成缓存
开启Web请求缓存后,在访问数据、地图、三维服务时,将动态生成缓存。
开启地图缓存后,在地图服务出图时将自动在对应的缓存存储路径中动态生成缓存文件。
2
预缓存
地图服务
您可以通过SuperMap iServer、SuperMap iDesktop为地图服务生成预缓存。
通过iServer分布式切图服务生成预缓存:
iServer分布式切图服务支持生成的预缓存瓦片格式有:MongoDB、SMTiles、MBTiles、UGCV5 格式的地图瓦片、SVTiles 格式的矢量瓦片和 UTFGrid 格式的属性瓦片。此处以生成SMTiles预缓存为例介绍预缓存生成步骤。
在iServer页面上依次点击 集群->分布式切图服务->创建切图任务,然后设置以下参数。
“服务组件”选择期望生成预缓存的地图服务组件
“地图”选择期望生成预缓存的地图
“切片类型”选择地图瓦片
“存储类型”选择SMTiles
“存储路径”设置为启用SMTiles缓存时配置的缓存储存路径
设置“比例尺方案”和“缓存比例尺”
以上设置完成后点击“创建切图任务”,即开始生成预缓存。更详细的步骤请参考iServer帮助文档中的创建切图任务。
通过SuperMap iDesktop切图功能生成地图预缓存:
在SuperMap iDesktop中提供“单任务切图”、“多任务切图”两种地图缓存生成方式,生成缓存的具体步骤请参考SuperMap iDesktop帮助文档中的 单任务切图、多任务切图。SuperMap iDesktop支持生成预缓存瓦片格式有:MongoDB、UGCV5格式的地图瓦片。在预缓存生成完成后,需要将生成的缓存文件拷贝到iServer地图服务的地图缓存存储路径下。
需要注意,SuperMap iDesktop切图功能生成的栅格瓦片能作为SuperMap iServer地图服务的预缓存,但SuperMap iDesktop切图功能生成的矢量瓦片不能作为iServer地图服务的预缓存。
三维服务
通过SuperMap iDesktop生成三维缓存:
在SuperMap iDesktop中可以通过 “生成场景缓存” 功能生成影像缓存、地形缓存、矢量缓存、二三维地图缓存,以及整个三维场景的缓存,这里以生成三维矢量缓存为例介绍三维缓存的生成流程:
在矢量(点、线、面)数据集右键菜单中选择“生成缓存...”,弹出“生成场景缓存”对话框。
在对话框中选择缓存名称、缓存路径、属性存储类型等基本设置以及高度模式、底部高程、拉伸高度等风格设置。需要了解如何设置这些参数,请参考SuperMap iDesktop帮助的生成场景缓存。
设置完成后,单击“生成”按钮,执行缓存生成操作。缓存生成后需要将生成的三维缓存文件拷贝到【SuperMap iServer 安装目录】\webapps\iserver\output\{scene} 目录下。完成以上配置后在浏览iServer三维服务时即可直接使用三维预缓存。更多类型三维缓存的生产流程请参考iDesktop帮助的生成场景缓存。
如何更新缓存
地图服务
地图服务通常数据量较大,为提高出图的效率,推荐您通过SuperMap iServer分布式切图服务或SuperMap iDesktop切图功能手动更新缓存。更新缓存的方式与生成预缓存的方式相同,详情请参见上一章节“如何生产缓存”。
在通过SuperMap iServer分布式切图或SuperMap iDesktop切图功能更新缓存时均支持整体更新或局部更新,以SuperMap iServer分布式切图为例进行说明:
整体更新:在通过分布式切图服务更新缓存时,设置更新范围为原有缓存的全幅范围、设置比例尺层级为原有缓存的所有比例尺层级。
局部更新:在通过分布式切图服务更新缓存时,在“高级设置”中设置缓存范围为您期望更新的部分区域,或在“缓存比例尺”中设置仅更新原有地图缓存的部分比例尺。当然,您也可以同时进行以上两个设置,即仅更新部分子区域的部分比例尺层级的缓存文件。
三维服务
三维服务的数据量通常较大,为提高三维服务的效率,推荐您通过SuperMap iDesktop的生成场景缓存功能手动更新缓存,更新缓存的方式与生成缓存的方式相同。在更新三维缓存时您也可以整体或局部地对缓存进行更新。具体流程请参考SuperMap iDesktop帮助的生成场景缓存。
FAQ
如何开启UGC地图瓦片缓存:
进入 服务->服务提供者页面,打开服务提供者的详情页,在高级设置中将“是否禁用缓存”项取消勾选,选择缓存版本,然后保存当前配置。
如何开启其他地图瓦片缓存:
以开启MongoDB缓存为例:进入 服务->服务管理页面,打开服务的服务详情页。在缓存项勾选“是否启用地图瓦片缓存”,选择缓存类型为MongoDB,点击“导入存储位置”->“添加存储位置”,输入存储ID、服务地址、数据库、用户名、密码等信息,然后保存当前配置。
如何开启属性瓦片缓存:
进入 服务->服务管理页面,打开服务的服务详情页。在缓存项勾选“是否启用属性瓦片缓存”,然后保存当前配置。
如何开启矢量瓦片缓存:
以开启MongoDB(MVT)为例:进入 服务->服务管理页面,打开服务的服务详情页。在缓存项勾选“是否启用矢量瓦片缓存”,在下拉列表中选择缓存类型为MongoDB,点击“导入存储位置”->“添加存储位置”,输入存储ID、服务地址、数据库、用户名、密码等信息,然后保存当前配置,如下图所示:
如何开启Web请求缓存:
地图、三维服务开启Web请求缓存的流程:启动iServer,进入 服务>高级->HTTP缓存 页面,设置开启HTTP缓存。
数据服务开启Web请求缓存的流程:SuperMap iServer默认为数据服务开启请求缓存,不需要单独设置。
如何开启三维缓存:
仅需要将预先生成的缓存文件或整个场景的缓存放入 SuperMap iServer 对应的缓存目录,即将缓存文件复制到【SuperMap iServer 安装目录】\webapps\iserver\output\{scene} 目录下。
关注我们
长按关注,了解更多知识!
微信公众号 | 917书院GIS学堂
917书院GIS学堂
撰文:云产品研发中心 周婧

