使用 SuperMap iServer 分布式切图服务时,可以同时生成多个比例尺的地图瓦片,也可以对指定范围生成地图瓦片。生成的地图瓦片可以直接用于服务端,也可以离线使用。但是如果地图服务中的地图数据发生了变更,如地图中的某一个图层的风格变化,或者某个图层的要素有增加/删除/修改,此时就需要更新已有的地图瓦片,以保证地图瓦片的时效性。
如果地图数据发生了变更,使用瓦片数据的时候您不用担心出图效果是旧数据,系统会自判断每个瓦片是否过期,如果过期则会按照新的地图数据动态出图。对于过时的瓦片数据,您可以选择让系统在出图的同时为您自动更新覆盖过时瓦片,也可以选择设置瓦片为只读,而自己使用分布式切图服务手动去更新瓦片。
考虑到地图服务的数据量通常比较大,自动更新瓦片的效率肯定不如分布式并行切图服务的多节点效率,因此推荐您手动更新或使用瓦片更新工具来更新瓦片。
手动更新与追加瓦片
SuperMap iServer 的分布式切图服务支持对已有的瓦片存储进行更新或追加新的瓦片,如对分布式切片库中已有的切片集进行更新或追加某些比例尺和地图范围的瓦片。支持更新与追加的瓦片格式有:MongoDB、SMTiles、MBTiles、UGCV5 格式的栅格瓦片、SVTiles 格式的矢量瓦片。
手动更新与追加地图瓦片的具体方法与使用分布式切图服务的流程是一致的,只需要在选择存储位置时,选定需要追加的切片文件位置(如 output 输出路径\sqlite\)或切片库(通过存储 ID 确定)即可。当然,您还需要选择追加的比例尺和地图范围,如果与已有的瓦片有重复,则会自动更新已有的瓦片。
使用瓦片更新工具
SuperMap iServer、iEdge 旧版服务管理器提供了瓦片更新工具,支持将 MongoDB、SMTiles、UGCV5中存储的地图瓦片互相导入。
通过使用该工具,您可以:
- 从其他瓦片包更新瓦片
- 将分散在不同存储位置的瓦片合并
- 将分布式瓦片集中存储的指定比例尺、指定范围的瓦片导出成文件格式(如 SMTiles),便于分发
使用方法
以 SuperMap iEdge 为例,如下:
登录服务管理器,通过服务->高级->切片更新进入瓦片更新工具,使用方法为:
- 点击创建切片更新任务,进入任务创建页面
- 设置输入切片集,即更新瓦片数据的来源
- 设置目标切片集,即待更新或修改的瓦片包
- 在系统自动读出的输入切片集比例尺列表中,选择需要更新的比例尺,点击添加
- 设置更新范围,默认为瓦片的最大范围
- 点击开始更新
定向更新
您还可以直接对地图服务组件或服务提供者正在使用的瓦片文件进行更新,通过服务详情页面点击更新切片,即可链接到瓦片更新工具。
注意事项:为保证瓦片更新后的数据正确性,请您在更新瓦片时考虑以下方面:
- 在更新瓦片前,请确保输入切片机与目标切片集中,同名地图的瓦片具有相同的瓦片参数,如瓦片大小、透明度等
- 对于 SMTiles、UGCV5这些非分布式存储的瓦片,除上述图片要求外,输入切片集与目标切片集必须对应同一地图
- 保存瓦片包的文件夹名称与瓦片配置文件(如 .sci文件)中的 CacheName 应保持一致,不能随意更改
- UGCV5 紧凑型缓存不支持更新到 MongoDB 瓦片集
清除指定范围的瓦片
如果地理范围内的数据全部发生了变化并需要更新全部缓存,您可以通过 clearCache 资源,清除此地理范围内的缓存图片,然后重新生成缓存。
例如, 要清除世界地图的经度120°~150°,纬度30°~50°的地图瓦片,输入以下 URI 地址:
http://supermapiserver:8090/iserver/services/map-world/rest/maps/世界地图/clearcache.rjson?bounds={"rightTop":{"y":50,"x":150},"leftBottom":{"y":30,"x":120}}。
清除成功,返回 true。
注意事项:使用 clearCache 资源时,如果指定地理范围,则会清除此地理范围内的所有缓存图片,以及与此地理范围相交的缓存图片。