基于地形瓦片的地形分析快速计算方法研究
2020-09-03赵鹏辉张正雄宋继哲
赵鹏辉,霍 亮,2,朱 杰,张正雄,宋继哲
(1.北京建筑大学 测绘与城市空间信息学院,北京 102616;2.现代城市测绘国家测绘地理信息局重点实验室,北京 102616;3.国家基础地理信息中心,北京 100830)
目前,传统的数字地形分析串行计算模式已经不能充分利用和发挥当前新型硬件构架(单机多核、多机多核、集群等)计算机资源的能力,更是难以满足实际应用的区域规模与计算时效需求[1]。在对地形数据进行分析的并行化处理方面,虽然目前已经有多种多样的技术和系统能够并行的处理海量地形数据,但这些处理地形数据的技术都是依赖于硬件条件来实现的,在常规硬件条件下还没有形成面向数字地形分析的高效、平稳的任务分配机制,尤其是在计算过程中,很少考虑到系统的可靠性和结果的准确性问题。另外,这些技术以及系统的部署比较复杂,其实现的手段大多是基于高耦合的消息传递接口(Message Passing Interface,MPI)等,所以这些技术或者系统并没有得到业界的广泛认可。
网络地理信息系统(WebGIS)是在网络环境下的一种存储、处理和分析地理信息的计算机系统,可将数据量较大的处理工作交由服务器执行,把数据量较小的处理工作交由客户端来执行,这种模式在一定程度上可以实现服务器端和客户端的合理分配[2-3]。本文基于WebGIS环境下对地形数据的计算和分析展开研究,考虑到该环境下服务器端承载了大量的计算任务,会增加网络负载和响应延迟,提出把一部分计算任务放在浏览器端进行,以减轻服务器的压力,提高地形分析效率。
1 地形数据的相关概念
1.1 地形因子
地形因子是为了在数字地形分析中有效地表达与研究地表形态的特征所设定的一系列指标[4]。地形因子在地形分析中起关键作用,如在水文分析、土地资源分析等方面有尤为重要的意义。不同的地形因子能够从不同的角度描述地形特征,可以更详细的表达地形情况。本文按照地形分析的复杂程度,把地形因子分为简单地形因子和复杂地形因子两种类型,简单地形因子主要包括坡度、坡向、等高线等,复杂地形因子主要包括坡度变率、坡向变率、平面曲率、剖面曲率等,如图1所示。简单地形因子偏向于表达确定地貌的地表形态特征;而复杂地形因子则是在简单地形因子的基础上对其进一步表示,可以更细致地表达地形的相关情况[5]。
1.2 自定义地形瓦片
地形瓦片是指将一定范围内的地形数据,以格网的形式对相应范围内的地形数据进行分割,计算并保存每个格网中所包含的地形要素。Web端在调用地形数据时,并没有读取大量的地形数据,而是根据用户视点所在的地图范围,计算出其相对应的地理格网,将它映射成命名规则,组装成地址请求并依一定规则加载地形数据[6]。地形瓦片在纵向上进行分层,有效减少了地形数据的传输量;在横向上进行分块,也在一定程度上降低了地形数据渲染计算的复杂度。地形瓦片按照金字塔的方式进行调度,实现数据的动态加载。现行主流的Cesium以及超图公司的地形数据格式并不包含地形因子,如坡度、等高线、坡度曲率等,在进行地形分析时需要对地形数据进行解析并计算。本文对地形瓦片进行了格式分析,它可以使用扩展数据来补充具有附加信息的量化网格,通过向每个瓦片添加一个JSON对象,可以存储有关瓦片的额外信息。基于地形瓦片金字塔模型提取不同等级地形瓦片的地形因子,把地形因子存入地形瓦片的扩展数据中,形成自定义地形瓦片。
2 基于地形瓦片的地形分析快速计算方法设计
本文提出了一种地形瓦片的地形分析快速计算方法,首先,对所获得的地形数据进行预处理,以便对地形数据进行格网化处理。其次,构建地形瓦片金字塔模型,然后,基于金字塔模型提取不同等级地形瓦片的地形因子,把提取到的地形因子存入地形瓦片的扩展数据中,使不同等级的地形瓦片包含相应等级的地形因子。最后,根据用户所在视点范围内的地形数据动态获取相对应的地形因子,实现地形的快速分析。该方法的技术路线如图2所示。
2.1 构建地形瓦片金字塔模型
目前,地形数据通过金字塔数据组织模型将其空间范围按照规则网格进行划分,并以递归的方式对地形数据进行自上向下的分割。这样的数据组织模型,让地形数据可以通过层层递进的方式显示,能有效地提高数据调度的性能[7]。在具体的实现上,地形金字塔模型按照四叉树方式进行层次划分和管理,将目标区域的数据进行瓦片划分,使每个瓦片块划分大小为N×N(N=2n,n为上一层的瓦片大小)。每一个地形瓦片通过唯一标识码进行索引,地形瓦片唯一标识码由三方面信息组成:(L,(x,y))。L表示LOD的层级;x表示地形瓦片行号;y表示地形瓦片列号[7]。绘制时通过视距范围和LOD层号的映射关系,首先,确定当前需要调度的LOD层的层号,然后,根据当前视点所处的范围和该LOD层级的瓦片的分割跨度计算地形瓦片的行列号,最后,根据得到的LOD层号、瓦片行号、瓦片列号生成需要调度的瓦片ID,从数据库中检索、调度瓦片数据。
利用地形金字塔模型对大区域地形数据进行分层分块处理,不仅降低了原始地形数据存储调度对网络和绘制带来的压力,还细化了调度和绘制的粒度,可以满足网络环境下实时可视化的应用需求[8]。
2.2 基于金字塔模型的地形因子提取
本文采取DEM数据作为地形因子提取的数据源,结合微观和宏观的提取方法来提取地形数据的地形因子。在提取算法的设计上,采用3×3的DEM栅格分析窗口,提取算法中用到了X和Y方向的高程变化率,这种方式已经广泛应用于简单地形因子的提取中。宏观地形因子提取主要描述的是一定区域范围内整体的地形特征,该区域(分析窗口)被看作一个整体进行运算,地形因子宏观提取方法不仅需要考虑它所在点的高程值,同时还要综合考虑分析窗口内所有点的高程信息。分析窗口有多种类型,主要有矩形分析窗口、圆形分析窗口和环形分析窗口,本文采用矩形分析窗口提取地形因子[9]。把提取到的地形因子存入地形瓦片的扩展数据中,使不同等级的地形瓦片包含相应等级的地形因子。
图3 地形瓦片与地形因子对应关系
2.3 地形的快速计算与分析
地形因子以JSON对象的形式包含在自定义的地形瓦片中,客户端可使用特定的HTTP标头请求此扩展,从而实现对地形数据进行分层的计算,达到了地形分析快速计算目的。进行地形的计算与分析时,浏览器端根据视点位置计算只调入视野范围内的自定义地形瓦片,解析读取相关信息。通过对提取地形因子进行计算,节省了对地形数据的解析,缩短了时间,可提高地形分析的效率。在地形漫游过程中动态地对场景进行更新,从而调入新的自定义地形瓦片和释放掉不需要的自定义地形瓦片。另外,为了减少地形数据的计算量,降低地形数据对内存的消耗,对每个自定义地形瓦片分别构建四叉树后利用LOD算法进行地形数据的简化,这样也提高了地形绘制和漫游的速度[10]。
3 实验与分析
为进一步验证地形瓦片快速分析的结果精度,以30 m精度的DEM数据进行实验,引入国家公共服务电子地图瓦片数据规范(GB/T 5634-2017 公共服务电子地图瓦片数据规范)作为约束,建立结果精度、比例尺、地面分辨率的对应关系。表1为公共服务电子地图瓦片数据规范中瓦片分级的描述,可以根据瓦片等级来计算相关分析的结果。本文以坡度分析为例进行实验,图4为坡度分析的结果,通过观察可以发现随着瓦片级别越来越高,分析结果的精度也越来越高。
表1 瓦片数据分级
图4 不同瓦片等级对应的坡度分析结果
在进行地形分析的时候,瓦片等级一般为15或16级,采用16级的坡度分析结果与使用ArcGIS软件得出的坡度分析结果对比,选取指定区域的一些点进行精度评估,误差结果为0.8 cm,在误差范围内。表2展示了不同瓦片等级对应的坡度分析结果的误差,通过观察发现,随着瓦片级别的增大,误差结果越小,可以通过根据瓦片级别来控制分析结果的精度。
表2 指定区域坡度分析结果的精度
4 结 论
本文以地形瓦片为研究对象,提出了一种基于地形瓦片的地形分析快速计算方法。试验结果表明,该方法可以降低地形数据的网络传输量,提高了地形分析效率,在保证精度的前提下可满足地形的快速分析。