如何更新地图瓦片 |
使用 SuperMap iServer 分布式切图服务时,可以同时生成多个比例尺的地图瓦片,也可以对指定范围生成地图瓦片。生成的地图瓦片可以直接用于服务端,也可以离线使用。但是如果地图服务中的地图数据发生了变更,如地图中的某一个图层的风格变化,或者某个图层的要素有增加/删除/修改,此时就需要更新已有的地图瓦片,以保证地图瓦片的时效性。
如果地图数据发生了变更,使用瓦片数据的时候您不用担心出图效果是旧数据,系统会自判断每个瓦片是否过期,如果过期则会按照新的地图数据动态出图。对于过时的瓦片数据,您可以选择让系统在出图的同时为您自动更新覆盖过时瓦片,也可以选择设置瓦片为只读,而自己使用分布式切图服务手动去更新瓦片。
考虑到地图服务的数据量通常比较大,自动更新瓦片的效率肯定不如分布式并行切图服务的多节点效率,因此推荐您手动更新或使用切片更新工具来更新瓦片。
SuperMap iServer 的分布式切图服务支持对已有的瓦片存储进行更新或追加新的瓦片,如对分布式切片库中已有的切片集进行更新或追加某些比例尺和地图范围的瓦片。支持更新与追加的瓦片格式有:FastDFS(已过时)、MongoDB、SMTiles、MBTiles、UGCV5 格式的栅格瓦片、SVTiles 格式的矢量瓦片和 UTFGrid 格式的属性瓦片(已过时)。
手动更新与追加地图瓦片的具体方法与使用分布式切图服务的流程是一致的,只需要在选择存储位置时,选定需要追加的切片文件位置(如 output 输出路径\sqlite\)或切片库(通过存储 ID 确定)即可。当然,您还需要选择追加的比例尺和地图范围,如果与已有的瓦片有重复,则会自动更新已有的瓦片。
对于分布式存储的瓦片,创建切图任务时会提示“切片已存在,是否增加一个切片版本?”,此时需要选择“否”,并在给出的切片版本中选择一个需要更新或追加瓦片的切片集版本,然后点击“确定”即可。
SuperMap iServer 提供了切片更新工具,支持将 FastDFS(已过时)、MongoDB、SMTiles、UGCV5中存储的地图瓦片互相导入。
通过使用该工具,您可以:
登录服务管理器,依次点击“服务”、“高级”、“切片更新”,就可以开始使用切片更新工具了,使用方法为:
您还可以直接对地图服务组件或服务提供者正在使用的瓦片文件进行更新,通过配置页面点击“更新瓦片”,即可链接到切片更新工具:
为保证瓦片更新后的数据正确性,请您在更新瓦片时考虑以下方面:
如果地理范围内的数据全部发生了变化并需要更新全部缓存,您可以通过 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 资源时,如果指定地理范围,则会清除此地理范围内的所有缓存图片,以及与此地理范围相交的缓存图片。