多进程生成地图瓦片

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

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

多进程切图原理

多进程切图是根据地图的比例尺和地理范围等将地图切图任务拆分成多个子任务,然后将拆分后的任务部署在共享目录中从而实现多进程切图。切图结果支持保存为本地瓦片,也支持保存到 MongoDB 数据库。

多进程切图要点

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

  • 数据源只读:多进程切图时每条进程会同时访问地图中图层所在的数据源,此时数据源就会存在被占用的问题,所以在执行多进程切图之前,须通过数据源右键菜单中的“重新只读打开”选项,将数据源设置为只读打开,并保存工作空间。
  • 拆分任务:需要将预生成的地图拆分为多个切图任务。程序会根据用户设置的瓦片比例尺、瓦片范围等参数生成一个总的地图瓦片配置文件(总 sci文件)。基于总的sci 瓦片配置文件拆分得到的多个子sci文件。便于多个进程获取独立、不重复的任务。
  • 共享工作目录:拆分任务后会得到一个工作文件目录,该文件用于存储地图瓦片的总 sci 及 拆分后的子sci。