欢迎来到天天文库
浏览记录
ID:58294302
大小:31.50 KB
页数:8页
时间:2020-04-13
《简析开源Boost库在网络的应用论文 .doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、简析开源Boost库在网络的应用论文简析开源Boost库在网络的应用论文简析开源Boost库在网络的应用论文简析开源Boost库在网络的应用论文简析开源Boost库在网络的应用论文简析开源Boost库在网络的应用论文 随着地理信息产业的建立和数字化信息产品的普及,地理信息系统(GIS)已经深入到各行各业,成为人们生产、生活、学习和工作中不可缺少的工具和助手。GIS技术的发展,离不开信息技术的革新。随着信息技术的发展,很多新概念、新理念提出并得到应用后,很快就会被GIS软件吸纳进去。 地理网络
2、分析是地理信息系统的核心功能,也是地理信息系统与其他计算机系统的根本区别。数学上的网络图在地理网络建模以及网络分析运算中仍具有重要的作用。同时,其相对的独立性更容易形成独立的模块化、组件化的软件包。目前,已经有很多这样的软件包或独立的类库存在,既有商业版本的,也有开源性质的,也包括基于不同操作平台和利用各种程序语言开发的,这其中开源的BoostC++类库就是其中优秀的代表之一。 1GIS系统开发语言与BoostC++库 在地理信息系统(GIS)的开发过程中,程序语言的选择具有重要的意义。虽然
3、随着软件开发平台和编译技术的不断发展,程序语言有着相互借鉴和融合的趋势,但不同的程序语言在软件成果的运行效率、可移植性、可复用性以及与软件设计平台的结合等方面存在很大的差异。C++作为GIS软件开发的主要程序语言,是专门为扩展性而设计的,语言为泛型构造提供的便利极为强大,目前仍然具有不可或缺的作用。随着C++语言的高级工具和技术不断涌现,开发复杂应用软件正变得更简单、更高效。同时,开放源代码软件运动的兴起和发展,不但推动了C++语言自身的不断完善,也推动了GIS开发技术的快速发展和GIS应用领域
4、的不断拓宽。Boost库是一个可移植、开放源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。Boost是由C++标准委员会库工作组成员发起的一个C++准标准库,相当于C++标准模板库(Standertemlatelibrary,STL)的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化,对比STL,Boost更加实用。STL主要集中在算法部分,而Boost包含了不少工具类,可以完成比较具体的工作。Boost库覆盖了广泛的应用领域,从数学应用库到智能指针,从
5、模板元编程库到预处理器库,从线程到lambda表达式等。Boost可以在目前存在的绝大多数操作系统(Windows,Unix,Linux,Solaris,MacOSX等)平台上使用,同时可以应用目前使用的各种C++程序开发平台进行编译和连接,还为很多目前流行的程序语言(Java,Python,Basic,C#等)提供相对统一的接口,方便了其他语言的应用。基于Boost库进行程序设计和开发,使得利用C++语言进行GIS开发更为优雅、有活力、高效。 2Boost在地理网络分析中的作用 地理网络分
6、析是空间分析的一个重要方面,是依据地理网络拓扑关系,并通过考察地理网络元素的空间、属性数据,对网络的性能特征进行多方面的分析计算。地理网络分析主要包括路径分析、服务中心范围的确定、可达性分析等,其核心是对最短路径的求解。地理网络分析作为GIS应用最主要的功能之一,其主要目的是对地理网络(如交通网络)、城市基础设施网络(如各种网线、电力线、电话线、供排水管线等)进行地理分析和模型化。 按照数学意义上的看法,可以把地理网络看作图,因而可以按照图论的理论基础来描述地理网络,并可以利用图论的研究成果来
7、解决地理网络中的网络分析问题,图论中的网络概念和一些分析算法在地理网络的表示和网络分析中具有重要的意义。BGL作为Boost的工具类之一,是一个处理图数据结构的库,可以应用于地理网络分析的很多领域。1)BGL的设计受到STL的重要影响,包括多个不同的泛型图数据结构:邻接链表、邻接矩阵和边列表等,作为网络表示和存贮的基础。同时BGL提供了一个标准化的用来访问图数据结构的通用接口和遵照这套接口的通用类。这套接口不但隐藏了繁杂的内部实现,同时作为一套开放的规范化的接口,一些用其它图库实现的接口也能够使
8、用BGL中的各种通用算法。 2)BGL提出了基于泛型的图算法,其算法由一组核心算法模型(用泛型算法实现)和一组较大的图算法组成。核心算法模型包括广度优先搜索、深度优先搜索、均匀开销搜索。BGL中的图算法被写成了一种把具体数据结构细节抽象出来的接口,本身并不进行任何有意义的计算,仅仅是为了构建图算法而已。每一个算法都是用数据结构无关的方法写出的,允许一个单独的函数模版处理多种不同的容器类。同时BGL中的图算法是可扩展的,用户能够通过函数对象改写和定制算法,以处理特定领域的问题。BGL中的图算法当
此文档下载收益归作者所有