查看原文
其他

快速生产地图瓦片解决方案:多任务切图

超图集团 2020-02-04

· 本文刊登于2018年6月第57期《超图通讯》

地图瓦片是一种改善地图浏览用户体验的优化策略。目前流行的在线地图服务,例如天地图、百度地图等,对地图浏览速度和并发性要求都比较高,均使用地图瓦片技术的方式满足快速访问地图的需求。地图瓦片是包含了一系列比例尺、一定地图范围内的地图切片文件。地图瓦片按照金字塔结构组织,每张瓦片都可通过级别、行列号唯一标记。在平移、缩放地图时,浏览器根据金字塔规则,计算出所需的瓦片,从瓦片服务器获取并拼接。


随着测绘技术的发展,地图数据的体量越来越大,更新越来越频繁。一般情况下,矢量电子地图生成地图瓦片少则几天,多则需要一个月乃至更长时间,远不能满足实际应用需求。如何才能快速地生成地图瓦片?


多任务生成地图瓦片,简称多任务切图,是SuperMap GIS 9D桌面产品基于多任务并发技术提出的一种快速生产地图瓦片的解决方案。

多任务切图原理


多任务切图是将一个“巨大”的切图任务拆分成多个子任务,并开启多个切图进程,每个进程自动领取切图子任务并执行(如图1)。瓦片成果支持保存到本地,也支持保存到MongoDB数据库。


图1 多任务切图原理示意


多任务切图支持在一台计算机上开启多个进程执行切图任务(即单机多任务),也支持在多个计算机分别开启多个进程执行切图任务(即多机多任务)。

多任务切图的优势


• 稳定、快速

相比传统的单任务切图,多任务切图最显著的优势就是切图更稳定、更快速。如图2所示,同一份矢量地图数据,同时开启8个进程切图的效率,是只有1个进程切图的4倍以上。

图2 随着进程数增加切图效率的增长情况示意(单机多任务)


注:测试数据China矢量地图,比例尺1:18055,拆分得到100个子任务,共生成1638400张256*256像素的瓦片。使用软件:SuperMap iDesktop 9D SP1。


• 自动拆分切图任务,拆分过程无需人工参与

多任务切图在执行时,桌面产品会根据已设置的切图比例尺、进程数等参数,自动在后台拆分切图任务,拆分过程无需人工参与。桌面产品自动拆分切图任务时,会在磁盘生成一系列的、带有标识性名称的文件夹,用来存放切图产生的临时文件,为后续的瓦片检查做准备。


• 动态调整进程数,合理利用计算机资源

在多任务切图过程中,支持动态调整进程数,有闲置机器资源,可以再增加进程数;反之,如果机器资源紧张,则可以减少进程数,做到最大限度、合理有效地利用计算机资源。需要注意的是,在切图过程中,减少进程数会中断当前的切图任务,需根据新设定的进程数重新执行切图任务。


• 地图瓦片生成进度随时掌握

多任务切图时,每一级比例尺下的地图瓦片生成进度都能随时掌握。桌面产品定时刷新每一级切图比例尺的进度,也支持手动刷新。


• 跨平台,不仅Windows能用,Linux也能用

SuperMap GIS 9D桌面产品中的多任务切图基于SuperMap iObjects Java开发,由于iObjects Java的跨平台特性,所以多任务切图不仅能在Windows系统中执行,也能在Linux系统中执行。经过反复测试验证得出,在相同的数据、参数配置等前提下,多任务切图在Linux系统中的性能要优于Windows系统,同时两个系统下的瓦片效果一致。

多任务瓦片结果检查


地图切图任务完成后,对瓦片进行结果检查是必不可少的步骤。SuperMap GIS 9D桌面产品中的瓦片结果检查,可以检查纯色瓦片、检查白线,并且可以补切错误瓦片,保存错误数据到数据源中,支持同时开启多个任务进行瓦片结果检查,提升地图瓦片结果检查的效率。


经过桌面测试团队反复测试验证表明,输出时瓦片存储类型不同,瓦片存储位置不同,还要求有效提高切图效率,则适用的切图方式也不同。下表1中给出了一些推荐设置。


表1 多任务切图方式推荐


注:测试使用软件SuperMap iDesktop 9D SP1。

多任务切图要点


在SuperMap GIS 9D桌面产品中执行多任务切图,需要注意以下几点:


1、数据源只读:多任务切图时每个切图任务会同时访问地图中图层所在的数据源,所以数据源需要设置为只读打开,并保存工作空间。


2、切图进程数:根据计算机的CPU个数来设置多任务切图的进程数,推荐进程数在2~CPU个数×2的范围内。


3、多机切图:执行多机多任务切图,需要确保多台机器均能连接到Host主机,并进入共享目录。


4、共享目录:输出瓦片存储类型为原始或紧凑时,多机多任务切图需要在主机中设置一个共享目录,确保其他机器对该共享目录有读写权限,并且无密码。


最后,再来一张简单的流程图,让我们“一张图”看懂使用SuperMap GIS 9D桌面产品进行多任务切图的过程。(注:图3流程中的进程1、进程2……进程N等多个进程执行切图任务,在计算机后台进行,无需人工参与。)


图3 多任务切图流程示意


作者 | 端产品研发中心 刘晓妮

责编 | 王宇卫


【近期回顾】


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存