赵芊 何枫 张舒 王晓玲
【 摘 要 】 论文以建立野外环境的数字路网为目的,提出了一种将多个对全地形或特种车辆的地表通行能力产生影响的地理图层进行叠加,从而得到地表通过率图层,并在此基础上生成野外矢量路网的方法。利用ArcGIS Engine实现了多个地理图层的数据采集及处理、图层叠加以及矢量路网的生成并可以渲染展示。最终的野外道路地图数据结构可以用来为野外作业的全地形或特种车辆进行路径规划和导航。
【 关键词 】 全地形;矢量路网;图层;ArcGIS Engine
【 Abstract 】 Aim to build a digital road network of the wild area, in this paper, a method by using a surface traffic capacity layer, which is generated by the overlap of multiple geographic layers that have influence on the surface traffic capacity of all-terrain vehicles or special vehicles, is proposed. With the use of ArcGIS Engine, the data collection and processing of multiple layers, the overlap of multiple layers, and the generation and rendering of vector road network, are realized. A data structure, which represents the road of wild area, is finally generated, and can be used for the route planning of the all-terrain vehicles or the special vehicles.
【 Keywords 】 all-terrain; vector road network; layer; arcgis engine
1 引言
近年来,全地形车辆以其良好的环境适应能力和功能的多样性,在军事作战、农林作业、公安消防等领域正在被广泛应用。鉴于全地形车辆的应用环境大多在野外复杂条件下,所处地形多变,地质种类多样,为了保证全地形车辆的有效工作,需要对车辆行驶路径进行规划。而导航路径的选取可以由陆地表面特征、道路可通行状况等车辆所处环境信息所决定。
随着我国智慧城市发展进程的加快,各大中型城市已经建成了用于反映城市道路和建筑信息的数字化地图。而在诸如野外等恶劣环境下,也应当形成比较明确的数字化的道路路网信息。由此,当全地形车辆或者其他特种车辆在野外行驶时,可以依靠此路网提供的导航信息,沿规划路径行驶。因此本文针对野外复杂地形,依托ArcGIS平台,基于地理数据模型,将多个反映了地理空间信息,并且对车辆的通行情况产生影响的地理信息图层进行了叠加,从而生成车辆的通过率(代表地面的可通行性)图层,并基于通过率图层最终生成野外矢量路网,为野外路径规划和导航提供基础支撑。
2 基于通过率信息的矢量路网生成方法
2.1 通过率图层生成
2.1.1图层通过率值估计
在GIS系统中,不同种类的地理信息是由不同图层来保存的。其中,地表和地质信息一般以矢量图的方式。如水井、桥梁等等多以点(Point)这种矢量要素的形式存储在矢量图层中;另外一些如道路、水网等多以线(Polyline)这种矢量要素的形式存储在矢量图层中;而如地质信息,植被覆盖信息等多以多边形(Polygon)这种矢量要素的形式存储在矢量图层中。其他一些信息则保存在栅格图层中,如高程信息。
矢量图层在保存某一类地理信息的同时又包含许多属性。例如道路图层,它的属性包括道路等级、道路宽度、道路长度等,以此来存储某条道路的全部信息。而对于某一属性,会用不同的数值来描述其含义。如道路图层中的道路等级属性分别有1、2、3、4这四个取值,则道路等级,即道路质量也由1~4来表示从高到低。
而为了得到某一图层的通过率值,需要结合该矢量图层的各属性值并进行估计,然后通过图层的矢量向栅格转化,来得到保存了通过率值的栅格图层,以便用于后续进行多栅格图层的叠加。而对于某些类型的图层,如反应地形高程值的地理信息图层等,其本身就是栅格图层,因此可直接用于后续叠加计算,而不需要进行图层类型转换。
本文中根据某一矢量图层的不同属性,对该图层所反映的地面可通过率进行了估计。也就是说,对于一个含有m个属性的图层,其通过率为这m个属性分别在其值域范围内取得某一值后进行组合的结果。这个结果,也就是通过率的估计值可以采用一个表的形式来描述。例如地质图层中的地质类型属性有1、2、3、4、5五个取值(分别表示石灰岩地、耕地、沙地、细粒土壤及水沼),渗水性能属性有1、10两个取值(分别表示强和弱),则地质图层的通过率信息值将有10个取值。具体情况如图1所示。
2.1.2栅格图层叠加
为了使通过率图层能够全面反映各方面的地理因素,我们需要将多个图层进行叠加,从而将多个图层的地面可通行能力进行统一考虑。
在多个栅格图层叠加为通过率图层的过程中,可能出现通过率图层某一格网中只存在一个栅格图层的可通过率值的情况,则该格网的通过率值即为这一个栅格图层的可通过率值。即通过率,其中为格网处某一栅格图层的通过率值。而在很多情况下,会出现通过率图层某一格网中包含了多个栅格图层的可通过率值的情况,因此需要对该格网的通过率值进行估计。
本文中对出现这一情况时的通过率值的估计提出了两种方法。其一是对于叠加了m个栅格图层得到的通过率图层中的某一格网,其通过率值取m个图层通过率值中的最小值,即通过率,其中为格网处某一栅格图层的通过率值。其二是对于叠加了m个栅格图层得到的通过率图层中的某一格网,令其通过率值为m个图层通过率值加权后的总和,即通过率,其中为格网处某一栅格图层的通过率值,而为权值。通常情况下,权值为格网中第j个图层所占面积的比重,即其中为格网中第j个图层的面积,为整个格网的面积。若图层所占面积发生重合的情况,则还需根据具体情况分配图层所占比重。此外,选取还需要根据车辆自身属性,如引擎、载重、轮胎等,视具体情况而定。
2.2 矢量路网生成
2.2.1栅格数据二值化
为了以通过率信息为基础生成矢量路网,首先需要将通过率信息栅格图层中的数据提取出来并进行二值化。
由于通过率图层包含了地图上每一个格网的通过率信息,即用一个浮点数值来表示每个格网对于车辆的可通过程度,但这不能够直观的反映是否可作为行驶路径,因此,采用二值化的方式,限定格网的通过率数值在大于0.1时为可通过状态,置为1;限定格网的通过率数值在小于等于0.1时为不可通过状态,置为0。由此得到一个可以用来进行矢量路网生成的二值化的栅格图层。而在精简之前的通过率图层同样要保存下来,其中的通过率值可以作为本文最终生成的路网地图数据结构中边的权值。
2.2.2基于通过率图层的路网生成
将上一步得到的二值化后的栅格数据提取出来,并将这些数据以像素集为单位扫入数组中。像素集是指在二值化的栅格矩阵中,依次扫描数据的每一行,在扫描过程中,若遇到有若干个相邻的值为1(假设可通过点值为1,不可通过点值为0)的像素,则将这若干个像素视为一个像素集(即像素的集合)。则水平方向的像素集用集合的形式可表示为:S={(x0,x1,y) | x0 ≤x≤x1,p(x,y)=1且p(x0 -1,y)=p(x1 +1,y)=0},其中为像素的值。如图2所示。
接下来对包含了全部像素集的数组进行操作,以生成全体图形要素数组。图形要素是指根据上一阶段得到的各像素集,以及它们之间的连通关系,从而将相邻像素集连接起来形成的图形(即像素集的集合)。方法是在二维栅格矩阵中以像素集为单位沿垂直方向搜索,寻找与当前像素集相连接的其他像素集,像素集相连接的定义为:,或,或,或,其中,和,分别为1、2两个像素集起始和终止坐标的横坐标值。如图3所示。如果搜索到某一像素集,沿其垂直方向任意一侧有一个以上的相邻像素集时,即停止搜索。
然后是扫描全体图形要素数组,将其中保存的图形要素区分为直线、交点以及水平直线。依据的原则是首先在扫描某一图形要素时,如果图形要素所包含的某一像素集的宽度与相邻像素集的宽度差值发生剧烈变化,那么可以认为接下来的像素集将属于水平直线,并将这样的图形要素标记为水平直线。其次要区别出交点。首先交点一定不是水平直线,且如果该图形要素的头部或尾部有一个以上的相邻像素集,可以认为该图形要素是交点。而剩下的图形要素则为直线。如图4所示。
最后,还需要提取这些直线、交点和水平直线,将其识别为基本的路网地图数据结构。若路网地图,V表示路网中的节点集合,它包括所有的交点图形要素,直线图形要素中无邻接图形的一端,以及水平直线要素与其相邻图形的邻接部分。E表示路网中的道路集合,它包括直线图形要素以及水平直线图形要素。如图5所示。其中道路的权值,由通过率图层中保存的道路各像素点通过率值求和得到。
3 算法验证
基于上述算法,利用ArcGIS Engine为平台对算法进行了实现和验证。通过调用ArcGIS Engine提供的接口和用于空间分析的Spatial Analyst组件,采用模拟数据集,实现一个通过多图层叠加,以生成反映地面可通行性的通过率信息图层,并对此图层进行数据精简、提取、处理,最终得到全地形矢量路网的系统。
该系统的主要功能包括:(1)模拟地理数据信息的读取并显示;(2)实现地图浏览、缩放、空间查询、缓冲区分析、图层渲染、矢量图层转换为栅格图层等基本功能;(3)栅格图层叠加;(4)实现栅格图层数据的提取及处理,并生成矢量路网。
3.1 矢量图层属性融合
由于本文的目的是说明一种由各类地理信息图层叠加从而生成路网信息的方法,因此反映地理信息的各图层数据,为同一地理坐标系下的模拟数据。实验中选取了两个矢量图层,简单道路图层和地质图层;以及一个栅格图层,高程图层。
使用ArcGIS Engine提供的IFeatureClass、IFeature、IFieds、IFieldEdit、IClass等接口。首先使用IClass的AddField方法为矢量图层添加通过率值作为新的属性,其次使用IFeature的getValue方法读取出原属性的值,并根据如图1所示的取值情况找到相应的通过率值,最后使用IFieldEdit的setValue方法将值填写进矢量图层属性中。写入矢量图层后的结果如图6所示。
3.2 栅格图层叠加
使用ArcGIS中提供的RasterMathOps和RasterMapAlgebraOp对象,将栅格图层进行叠加。叠加过程如图7、图8所示。实验中对图层左上角部分进行了叠加,得到的结果如图9所示,且不同的颜色表示不同的通过率值,颜色越深可通行性越高。
3.3 栅格图层数据提取
栅格化的通过率图层的通过率信息直接存储于栅格格网中,读取栅格格网值主要是通过IRaster接口的Read方法,在栅格上读取指定位置的像素块PixelBlock,然后再通过IPixelBlock接口的GetVal方法获取该位置的像素值。
3.4 矢量路网生成
将提取出的栅格数据进行二值化,并采用上文提出的路网生成方法,将路网以图数据结构存储,并在主界面中显示出来。如图10所示,红线圈出部分为矢量化后的结果。
4 结束语
本文提出了一种野外复杂地形环境下的矢量路网生成方法,通过综合多个地理信息图层形成通过率图层,在此基础上生成栅格路网,进一步转化为矢量路网。
实验结果显示通过率图层的叠加可以反映出实际的情况,一副地图可通行和不可通行的地方被用不同的颜色渲染。基于通过率图层得到的矢量路网也可以在地图中显示出来,全地形车辆的路径规划可以在此基础上进行。
参考文献
[1] 刘南,刘仁义.地理信息系统[M].北京:高等教育出版社,2002.
[2] Won-Ik Park,Do-Jong Kim,Ho-Joo Lee. Terrain Trafficability Analysis for Autonomous Navigation: A GIS-based Approach[J].International Journal of Control, Automation, and Systems,2013,11(2):354-361.
[3] 石畅.道路矢量地图的生成及在WAP上的应用[D].天津:南开大学,2000:1-37.
[4] 芮小平,于雪涛.基于C#语言的ArcGIS Engine开发基础与技巧[M].北京:电子工业出版社,2015.
作者简介:
赵芊(1991-),男,硕士研究生;主要研究方向和关注领域:平台软件开发。
何枫(1984-),男,工程师;主要研究方向和关注领域:云计算、大数据技术。
张舒(1989-),男,工程师;主要研究方向和关注领域:平台软件开发。
王晓玲(1970-),女,研究员;主要研究方向和关注领域:软件工程。