前面已经介绍了在没有云的时代,并行瓦片地图的生产方式。
那么在有云平台的时候,地图的快速渲染技术又如何?归根结底其原理还是分而治之。
以Hadoop数据存储为例。在HDFS中,数据的存储是以块为单位。一般情况下,默认设置为64M为一块。面对地理信息的数据,结合网格索引/R-Tree索引等,以块+空间位置对数据进行分割,HDFS会将块数据均匀的分布到服务器节点上。
使用传统GIS软件进行瓦片生产的童鞋都知道,其实一般来说瓦片生产中越往后,生产的速度越慢。例如,在级别1的时候,生产需要1分钟,在级别2的时候就可能需要2-3分钟,一般来说咱们的地图数据最少需要生产到18级,所需要的时间也是倍数的增长。(时间做了夸张,但是确实是倍数增长)
因此在云平台环境下(Spark+Hadoop),前十级的切片数据采用并行的方式生产好,自十级以后,根据前端的请求,请求到哪个范围便生产哪个范围的瓦片数据。此处说的十级是需要打引号,需要根据实际的数据情况进行核算,一般来说会计算一个阈值,这个阈值是以一个瓦片数据的范围小于一个块的范围为基准。
前“十级”的数据是在数据进行发布的时候就生产好的,而后十级的数据是边浏览边生产。 如此用户能感知每次地图数据的更新都可以很快的在BS端浏览到最新的数据。