龙空技术网

高性能GIS研究进展及评述

测绘联盟 329

前言:

此刻我们对“gis算法原理与开发”都比较关注,同学们都想要了解一些“gis算法原理与开发”的相关文章。那么小编同时在网上收集了一些关于“gis算法原理与开发””的相关文章,希望小伙伴们能喜欢,看官们一起来学习一下吧!

1 、引言

互联网时代来临,使地理信息技术得到前所未有的应用、推广和发展,地理信息计算呈现出计算速度快、运行效率高、应用多样化的发展特征。随着计算机技术的发展,以分布式、并行化为代表的高性能计算技术正逐渐融入到地理信息领域,如何利用高性能计算的新型硬件体系结构带来的计算性能提升,解决现有时空数据密集、计算密集和通讯密集问题成为GIS领域的热点问题[1-4]。为此,基于并行集群计算技术等的高性能计算[5-9],研究新一代高性能GIS系统十分重要。它可以有效地为时空大数据集存储、可视化、空间分析和数据服务带来新的解决方案。

高性能计算是基于一组或几组计算机系统组成的集群,通过网络连接组成超级计算系统以加强数据处理、分析计算性能的一种技术[10-12]。而高性能GIS则利用高性能计算的理论体系、技术架构和数据模型等对GIS已有的性能进行扩充和增强,从而方便、快捷地实现海量空间数据的高性能读写,使GIS系统更高效地为地理空间信息科学领域中的计算、数据、通信密集型的科学问题的解决提供技术支撑[13-17]。其高性能表现在:更庞杂的地理空间数据计算,更复杂、多类型的GIS模型与算法,处理时间更短[18-21]。

目前,主流的3大分布式计算系统包括Hadoop,Spark和Storm[22-25]。Hadoop基于MapReduce分布式计算框架,其核心技术在于通过分布式架构实现性能提升。而GIS空间分析常常需要对研究区进行空间划分,进一步细划为地貌特征更加统一的计算单元,利用Hadoop的分布式特性及MapReduce分布式存储,可极大地提高GIS空间分析性 能[26-27]。但由于存储硬件条件的限制,在处理更新快速的GIS模型时,则稍显不足。Spark是另一种重要的分布式计算系统,它基于分布式存储集(RDD)的概念,利用计算机内存来存储数据,因而具有更快速的数据读写功能[28]。相比于Hadoop,Spark的优势在于仅需导入一次数据即可实现多次迭代运算,具有更快的运行效率;缺点在于不适合处理需要长时间保存的数据,如果计算环境发生电力中断故障,即会造成数据丢失。Storm并不直接收集数据,而是通过网络节点实现数据传输、处理。其优势在于处理流式数据时,无需进行数据收集和作业调度,而可以直接进行分析,更适应在线的实时GIS大数据处理[29-30]。

2 、研究现状

当前GIS发展的重要趋势是服务化、云端一体化,亟待研发高效的高性能GIS关键技术[31-32]。其中,分布式并行技术的应用显著提高了GIS空间分析效率,随着内存计算、高性能算法等先进技术的不断进步,大大加速了高性能GIS技术体系的发 展[33-34]。此外,二三维一体化也是当前GIS发展的一大趋势。随着硬件成本降低,显卡性能提升,众核技术的应用加速了三维GIS的发展[35-36]。因此,本研究将主要从高性能GIS算法、并行GIS计算、内存计算和众核计算4个方面对高性能GIS的发展进行总结和归纳(图1)。

图1 高性能GIS研究内容

2.1 高性能GIS算法

高性能技术出现不久,就开始应用于地理信息领域[37-39]。作为高性能并行GIS系统中的一个重要的组成部分,高性能GIS算法基于利用向量机和并行计算技术形成的高性能计算系统,对海量地理空间数据进行实时处理的空间算法,使原本难以计算的全球尺度、长时间尺度的地理空间现象分析模拟得以实现。已有许多学者开始了相关技术研究,如Turton等[40]研究了职工上下班交通数据分析,原本在工作站需要运行91 h的双约束地理计算模型,在内存共享模型中执行并行计算后仅需3 min,极大地提高了效率。

随着IT技术的不断进步,高性能GIS算法的研究主要分为2个方面:① 对已存在的高密度计算进行并行化处理,利用高性能GIS技术对全局性的海量时空数据进行地学分析和推演,探索构建新的空间模型等;② 探索新的空间分析方法,并不断赋予新的内涵。具有代表性的空间分析算法有:神经网络模型、遗传算法模型、元胞自动机模型等[41-45]。这2个方面各有侧重,前者侧重于从技术层级提供计算行的优化处理,提升运行效率;后者则通过模型、算法,进一步寻找更加高效、便捷的空间分析方法,通过专业地理信息领域模型达到提高分析效率的目的。

以往,高性能计算常常需要一台高CPU、大容量的计算机完成大量计算,这样势必繁琐。近年来,研究人员开始基于一组或几组计算机组成的高性能计算机集群,计算机之间通过网络进行连接,对海量GIS数据进行并行处理和高性能计算,增加了部署的灵活性。基于MapReduce计算架构的Hadoop有简洁的并行计算模型,可对原本串行算法进行快速改造,以适应并行计算等高性能算法[46-47]。目前,这方面研究主要集中在GIS空间分析算法上。例如,Cary等[48]基于MapReduce实现了部分GIS算法,并构建了R树;Chen等[49]基于Hadoop研究设计实现了高性能地理计算框架。这些研究方法为进一步开展高性能算法研究提供了参考。

在并行空间数据结构组织方面,高效的空间数据划分策略有助于合理的空间数据组织存储,可大大提升空间分析的性能。

(1)栅格数据并行计算

栅格数据具有独特的“块状”数据结构,栅格运算常常基于矩阵运算,这样的运算往往具有很好的局部独立性,有利于高性能GIS并行化处理[50]。基于栅格数据空间特征对其在空间上进行划分,并行空间处理,可显著提高栅格运算效率[51-52]。

目前,大多数研究集中于空间范围划分和非均匀划分算法研究[53-55]。综合来看,主要分为静态和动态2种划分策略,基于空间数据位置特征,而对GIS数据在空间上进行划分、切割。但当待处理栅格数据的空间特征比较复杂多种,仅仅通过简单的划分并不能满足精细化处理需求。已有的一些研究方法对这种复杂地形划分进行了研究:程果等[56]通过逐步动态分析算法对复杂栅格数据分组计算,构建了动态推进划分算法;欧阳柳[57]研究了基于空间填充曲线模型的数据划分方法,在考虑了空间数据特征的基础上较好地进行负载均衡。尽管这些研究和方法没有达到十分理想的负载均衡效果,但都较好地为栅格数据多种划分策略提供了参考。

(2)矢量数据并行计算

作为地理空间对象的另一种重要的存储格式,矢量数据结构存在空间数据明显、属性数据隐藏的特征。由于数据结构的特殊性以及地理实体的条带化、拓扑等特性,并非所有的矢量数据都适合进行并行处理[58]。而且,由于矢量数据耦合度高、数据连续,这些都加大了矢量数据并行处理的难度[59]。

同样,矢量数据的划分策略包括动态和静态2种。静态划分策略,是基于一定数据属性规则进行一定规律的划分,而动态划分策略则通过调用空闲进程实时分配来实现负载平衡[60]。通过进一步考虑空间位置、邻近性等方面,实现最佳的均衡存储。目前主要还是采用传统静态方法,如田光[60]从并行空间运算的需求出发,放弃了传统的数目均衡,分别研究了基于空间聚集的和基于统计聚类的划分策略。

空间索引方面,早期大多研究采用串行空间索引机制,如四叉树索引[61-62]、格网索引[63]等。随着时空数据的种类和数量不断增加,并行的空间索引机制逐渐发展起来,主要,有基于共享存储模型和消息传递模型的2种并行索引机制。它们均通过采用适用的优化策略来提高数据处理效率,且针对特定的硬件环境的空间数据处理及流处理器模型使 用[64]。例如,Papadias等[65]研究了适用于共享虚拟内存的并行空间连接算法;邓亚丹等[66]基于多核处理器技术实现了数据库的优化查询技术。其中,关键技术有地图匹配技术,讲轨迹数据与地图数据进行关联,从而具有实际的地理意义,目前较为成熟的算法有ST-Matching等。

此外,大数据的一个重要组成部分是位置大数据,包括各种地理数据、车辆轨迹数据、时空多媒体数据等,其处理流程包括数据采集、数据分析、计算等。降维分析通过对大量的道路交通数据进行降维,提取更加有意义的数据。其主要包括空间上和时间上的降维:空间降维指的是提取更加关键的节点和线要素;时间降维指的是对时间的离散化,提取关键时段数据。在运行计算方法时,同样需要利用Hadoop、Spark等高性能计算框架,建议轨迹数据的高效时空索引模型和分布式计算,以及高效的数据存储技术。位置大数据不仅指交通数据分析,还包括人类活动规律、地理国情和智慧城市等,需要打开思路进行分析,提供更有价值的信息。

2.2 并行GIS计算

并行计算是一种运行于高性能并行计算机上的超级计算方式。并行计算中的计算节点通过网络连接,从而实现数据传输及计算效率的并行加 速[67]。而并行GIS技术将并行计算技术应用于海量空间数据的并行存储、查询、检索及处理等,为建立响应速度快、运行效率高的软件系统来提供海量空间地理数据的处理能力。以高性能并行集群计算技术和算法相结合的新一代多核并行高性能已经成为了研究的热点[68-70]。

在地理计算模型/框架方面,作为地理现象分析与过程模拟的一个模型运行环境,它使用统一的数据接口、模型标准以及通用工具,从而提高模型运算效率、模型间的互操作性、模拟性能等。目前,较流行的并行计算模型有高性能计算MPI、Map/Reduce、Dryad等。国内目前尚无成熟的地理计算系统或框架,且很少用于地理计算。从硬件架构来分,可以大致分为3种典型的模型:共享存储模型(如OpenMP、Pthread、X3H5)、消息传递模型(如MPI、OpenMPI)和流处理器模型(如CUDA、Brook+、OpenCL)。

(1)共享存储模型

共享存储模型通过分享同一片存储地址进行数据存取,对分散于多个线程中的子任务进行同时计算[32]。典型的编程工具包括OpenMP、TBB和Cilk等。例如,基于OpenMP可实现对并行算法的抽象描述,通过在源码中加入pragma编译器即可实现,适合处理轻量的并行计算任务。

(2)消息传递模型

不同于共享存储模型,在消息传递模型中,并行计算任务被划分到多个相互独立的进程节点中,进程节点通过消息传递的方式实现数据通信[71],如MPI(Message Passing InterFace)、OpenMPI等,其中典型代表的是MPI。消息传递模型适合处理海量数据和计算量比较大的并行计算任务[61]。

(3)流处理器模型

流处理器模型是针对现代显卡工作模式提出的一种抽象表达。由于单个处理器的计算能力较低,通过增加处理器的数量并优化计算,可明显提高GPU的处理效率[72]。目前,最流行的是CUDA,由NVIDIA编写,可看成是一个并行编程模型,直接于GPU上进行计算。

综合来看,3种模型各有优缺点:共享存储模型通过共享存储地址实现多任务的并行计算;消息传递模型则通过进程节点间的相互通信实现并行计算;流处理模型则通过增加处理器数量实现计算优化。

2.3 高性能内存计算

近年来,内存计算技术的发展为高性能地理计算问题带来了解决方案,并在大数据分析和数据挖掘领域成为研究热点。高性能内存计算利用各个计算节点上的存储空间形成一体的分布式内存空间,并将访问次数较多的文件缓存至该区域,通过规范的文件接口进行访问,从而降低计算任务的读写开销和延时,加强负载均衡,提高运行效率[5]。与传统数据仓储技术相比,内存计算技术在即时分析方面有更高的灵活性和更强的运算性能[14]。当处理海量数据时,高效的内存计算可以大大地提升系统的数据处理能力和运算效率。此外,64位GIS高性能计算拥有更大的带宽,而且突破了内存容量的限制,带来了更大的性能提升。目前,国内已有的SuperMap系列软件采用64位高性能计算,充分发挥云计算中心高配置服务器计算资源,在多边形拓扑的同一项测试中比32位技术速度快了一倍[73]。

高性能内存技术发展至今,综合来看,主要分为3类:分布式缓存计算、计算网络、分布式内存数据库系统。分布式缓存计算通过将访问频率较高的数据存放于内存之中,从而提高访问效率。多数技术基于内存键值存储,支持get和set方法。同时,分布式缓存计算还具有高动态扩展性,通过增减内存节点数获取最佳性能[52,54]。常见的分布式缓存计算系统有Memcached、Redis,此外还有一些新的技术,如ACID事务处理、eviction策略[68,70]。计算网络技术则将数据发送至本地执行,并不适合处理不断增长的海量数据。分布式内存数据库系统的出现大大增强了基于MapReduce的海量数据并行处理的能力,而且利用分布式SQL等工具,可以较好地处理较复杂的数据。

2.4 众核计算

众核计算是指在处理器中集成成百上千个计算引擎内核,它们可以独立运行计算机命令,并基于并行计算执行多任务处理操作,从而使性能大幅提升。随着技术的发展,统一计算设备架构CUDA技术的出现,使GPU计算用于通用计算。由于GPU在带宽和访问频率方面均很高,因此其访问显存效率明显高于CPU访问内存的速率。在处理像元重复访问较多的遥感影像数据时,基于GPU技术可快速实现影像的可视化和分析处理。

在存储器组织方面,GPU采用多级访问策略。在使用CUDA处理海量空间数据时,可以从全局和局部2个方面出发,运算较为复杂时,可不采用共享存储而是在全局存储进行运算分析;而对于简单计算,从局部计算出发则更便捷,将一个块存储数据组织到共享存储中,然后再进行访问。

此外,GPU计算还可用于组织空间索引策略。近年来,国内外学者在利用GPU加速数据索引方面开展了大量研究。Zhang等[68]基于GPU计算对大规模点数据进行并行处理,并提出了CSPT-P 树索引结构。Luo等[74]利用GPU加速实现R树批量加载操作。此外,针对R树接近根结点时检索并行度低等问题,Kim[75]通过SMP算法并行执行搜索子树实现了查询策略优化。

3 、评述与讨论

目前,基于并行计算、分布式存储和内存计算等高性能理论与技术形成的高性能GIS系统,对已有GIS系统的性能进行了扩展和加强,实现了海量空间数据的高性能读写,为地理空间现象分析、地理科学应用提供了帮助[64]。

高性能算法研究方面,已经实现了在普通计算机系统中研究实现海量数据的并行处理框架系统和高性能计算,降低了高性能计算成本,而且提出了简洁的并行计算模型,大大简化了运行过程。然而,空间计算任务调度应用研究大多集中于矢量数据并行研究。在未来,应当针对地理空间栅格数据的处理算法,在构建计算强度估计方程时,考虑科学的栅格数据的矩阵结构和栅格处理类算法的遍历方程,减轻计算强度消耗时间所带来的负担。

索引机制方面,随着分布式计算系统的发展,应当进一步研发更高效的分布式索引方法。当前主流的分布式算法是在传统的索引算法的基础上改进的并行算法,如SR-树索引生成算法、基于索引节点拷贝的Fat-B树、DPB+Tree等[17-20]。这些算法大多集中于数据的安全性实现,如数据节点之间的数据拷贝防止数据的丢失[21]。在未来,应当更加关注分布式索引算法的开销、冗余控制等,以及对于平台的独立性,将算法的主要功能集中于提高数据索引性能的提高方面。

并行计算方面,并行GIS技术已经广泛应用于海量空间数据的并行存储、查询、检索及处理等方面。服务器集群系统通过网络连接节点而组成分布式系统进行集群计算。较为流行的Hadoop分布式系统,是基于MapReduce分布式计算框架、HDFS分布式文件系统和HBase数据存储系统。而Spark在系统架构设计方面进行了一些改进,通过内存来存储数据可提供更快的运算速度。Storm用于处理高速、大型数据流,它在Hadoop的基础上添加了实时数据处理功能,是一种分布式实时计算系统,可直接通过网络节点实时读写数据。针对具体不同的GIS应用,应当选择合适的分布式计算系统。

内存计算方面,随着技术的发展,主要包括基于单独内存计算和分布式内存计算等,分布式内存代表包括Spark等计算方式。大多数技术基于内存键值存储,具有高动态扩展性,可通过改变内存节点的数量获取最佳性能。计算网络计算方式则在处理不断增长的海量数据方面处于劣势。分布式内存数据库系统在数据处理复杂度不断增加的情况下,仍有较好的表现[10-12,19]。

空间数据存储方面,目前空间数据的存储主要包括:传统的关系型数据库、非关系型数据库,以及分布式文件系统。面对新型海量数据,传统的关系型数据库往往计算性能低下,且拓展困难[67],而新一代存储系统(如Ceph、Swift、 MongoDB等)为空间数据的组织、管理提供了新的思路。科研、科技界均作了许多探索,陈崇成,林剑峰等[41]通过引入分布式图数据库和并行图计算框架,基于矢量、栅格数据一体化系统,实现海量空间数据的分布式管理与访问。Google提出了一种采用灵活自由、高可用、结构松散的分布式数据库管理系统,结合GFS和MapReduce实现了海量栅格数据的云存储、管理[5,67]。

4 、展望

纵观国内外高性能GIS研究现状及其进展不难发现,并行GIS计算、高性能计算模式和分布式存储仍然是GIS技术领域发展的重要方向。面对海量时空GIS大数据,以高性能GIS算法、并行GIS计算、高性能内存计算和众核计算为代表的高性能GIS在解决时空数据密集、计算密集和网络通讯密集等问题方面提供了解决方案,提升了GIS地理分析的效率。

目前,在空间信息科学领域中,并行计算技术和方法的研究主要包括矢量、栅格数据的并行处理、高性能和高可用GIS研究等。研究重点仍集中于影像数据的并行处理上,而针对矢量数据并行存取和处理的研究成果相对较少。在计算模式方面已经涌现了较为新颖的GIScript等[73],可支持Hadoop、Spark和Storm等分布式计算系统。

在数据存储方面,并行空间数据库的引入将突破文件系统的限制,为并行GIS提供功能更强大的数据管理平台。众所周知,空间数据存储是GIS系统的基础,现有的GIS系统大多基于文件型的空间数据存储系统。今后应当进一步思考将并行GIS中关键算法同并行空间数据库的设计有机地融合在一起,面向新的应用领域(网络分布式空间信息服务)和新的计算 框架(CyberGIS)形成较为完备的高性能并行GIS研究体系[31,76-78],从而为解决新的问题提供支持和帮助。

硬件方面,计算机性能计算从单核发展到多核,由单处理器发展到多处理器,并且成本越来越低,提供了强大的计算能力,未来多核CPU计算将是一个重要的发展趋势。此外,GPU技术的发展为高性能计算带来了新的进步[74-75,79],但目前的问题是软件技术并不能很好地适应硬件的发展,未来随着GPU技术的进一步发展,软件开发环境的发展必须加大研发力度,实现软硬件结合的高性能计算。

随着近年来互联网、云计算、移动技术和物联网的迅猛发展,GIS云计算和大数据技术逐渐成为热门。在云计算方面,国内外GIS平台厂商纷纷推出了自有的云GIS平台,如ESRI推出的ArcGIS 10.4版本采用云+端的方式,国内SuperMap开发的SuperMap 8C,支持虚拟化的GIS等。云GIS技术,并非只是将现有的GIS平台移植到云平台而已,还需要具备支持跨平台、并行计算、64位计算、分布式系统等技术[80-82]。此外,数据中心的虚拟化逐渐成为研究热点,具体包括网络、服务器、存储等的虚拟化技术[83]。时空大数据处理技术方面,面对日益增长的时空大数据,传统的数据处理技术已经捉襟见肘,一些新技术的出现带来了新的发展,如分布式缓存、基于MPP的分布式数据库、分布式文件系统、各种NoSQL分布式存储方案等[84-89]。

开源GIS技术,由于不用过分考虑数据兼容性、易用性等问题,开发者可集中精力于软件功能研发,因此开源GIS往往拥有强劲的性能和功能,并涌现出大量各平台各类型的开源GIS软件。例如,开源桌面GIS方面,有QGIS、GRASS GIS、SuperMap iDesktop Cross等;开源技术和工具,有GIS Tools for Hadoop、SpatialHadoop、PySAL、GeoWave和GeoSpark等。开源和互操作是高性能GIS重要的发展方向之一,开源GIS必然集开放、标准与互操作于一体,提供高性能GIS软件服务。

标签: #gis算法原理与开发