/

多任务生成地图瓦片

传统的地图瓦片是在单任务(单进程)中执行的,而随着技术的进步,地图数据的数据量已经迈进海量数据的时代,电子地图生成地图瓦片(以下简称切图)都会耗费很长的时间。例如,在普通的工作机上,对中国范围、几十个图层的地图生成数十级比例尺的瓦片,可能需要十几天。

为了提高用户的切图效率,合理的利用了计算机系统资源, 提供了多任务切图功能,多任务切图支持在一台计算机上开启多个进程执行切图任务,也支持在多个计算机分别开启多个进程,获取子任务执行切图任务。多任务的切图方式能充分利用机器的硬件资源,综合利用多个节点并行切图,力图提升切图工作与在线地图服务的效率、稳定性与可靠性。

多任务切图原理

多任务切图是根据地图的比例尺和地理范围等将地图切图任务拆分成多个子任务,然后将拆分后的任务部署在共享目录中从而实现多机同时访问。多机同时开启多条进程,每条进程会到指定的目录获取并执行切图任务,并将切图结果保存到同一个文件夹中。切图结果支持保存为本地瓦片,也支持保存到 MongoDB 数据库。

MultiProcessTilesPrinciple


图:多机多任务切图原理示意

多任务切图要点

在 桌面软件中执行多任务切图,需要注意以下几点:

  • 数据源只读 :多任务切图时每条进程会同时访问地图中图层所在的数据源,此时数据源就会存在被占用的问题,所以在执行多任务切图之前,须通过数据源右键菜单中的“重新只读打开”选项,将数据源设置为只读打开,并保存工作空间。
  • 拆分任务 :需要将预生成的地图拆分为多个切图任务。程序会根据用户设置的瓦片比例尺、瓦片范围等参数生成一个总的地图瓦片配置文件(总 sci文件)。基于总的sci 瓦片配置文件拆分得到的多个子sci文件。便于多个进程获取独立、不重复的任务。
  • 共享工作目录 :拆分任务后会得到一个工作文件目录,该文件用于存储地图瓦片的总 sci 及 拆分后的子sci。若要执行多机多进程切图,需要将该文件设置为共享工作目录,确保其他机器对该共享目录有读写权限,便于其它切图机器上的进程从该目录中获取切图子sci,也方便切图结果的存放和汇总。
  • 执行切图任务 :若要执行多机多进程切图,需检查其他机器是否能连接host主机,如可以通过资源文件夹中输入 \\198.168.1.20(主机ip),进入共享目录。