基于QGIS的开源GIS二次开发技术探究

来源 :科学与财富 | 被引量 : 0次 | 上传用户:nathan_zk
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:由于以往的各种商业地理信息系统软件平台定义了不同的数据格式和数据组织方式,且其开发模式各不相同又相互独立与封闭,以及常规商业GIS软件的高费用在一定程度上限制了地理信息系统开发的大众化发展。本文介绍基于开源软件QGIS源码在WINDOWS系统下编译并进行二次开发的基本过程与方法,并给出地图浏览与查询系统开发实例,希望对相关的GIS系统开发者有一定的指导和借鉴作用。
  关键词:GIS QGIS 源码编译 二次开發
  中图分类号:P208
  一、QGIS概述
  GIS是目前IT领域的热门话题,随着Google earth等GIS系统的流行逐渐被越来越多的人所熟知。地理信息系统(GIS)是一个用于采集、存储、处理、管理、分析、显示和应用地理空间信息及其属性数据的计算机系统,现已广泛地应用于环境监测、灾害分析预警与监测、国土资源及人口调查、城市规划等诸多领域。在计算机技术和全球信息网络技术飞速发展的大环境下,GIS软件技术体系迅猛发展。除了传统的商业GIS软件平台外,众多开源GIS也在为地理信息系统默默贡献自己的力量。QGIS是基于跨平台的QT软件,采用C++语言开发的桌面地理信息系统,因而其具有良好的跨平台性,广泛支持Linux、Windows、Unix和Mac OSX等操作系统,这是其他诸多商业GIS软件所不能企及的。最为重要的是QGIS为我们封装了二次开发的API库,通过引用各个类库中的接口并配合动态库的使用,可以方便地实现GIS功能,这使得开发者能够将精力集中到解决应用程序中的业务逻辑中,而不是从头开始开发GIS基本功能,方便开发者开发自己的GIS软件[1]。
  二QGIS的编译及环境搭建
  QGIS源码及各种第三方依赖库有不同的版本,开发者可基于自己的开发环境选择不同的开发版本,本文介绍WIN10+QGIS2.8.9+VS2010+CMAKE3.2.3的编译方法,其他版本与之类似。
  (1)编译所需要的工具及源码:VS2010、qt-opensource-x86-vs2010-4.8.7、qt-vs-addin-1.1.11-opensource、OsGeo4W、CMAKE3.2.3、flex、bison和QGIS2.8.9源码。
  (2)安装好工具之后,使用OsGeo4W下载安装编译所需的第三方库,需要安装的有:-expat、-fcgi、-gdal、-grass、-gsl-devel、-iconv、-pyqt4、-qt4-deve、-qwt-devel-qt4、-qwt-libs-qt4、-sip、-spatialite、-libspatialindex-devel、-Python-qscintilla、-qgis-ltr-common、-qgis-common。OsGeo4W包含了许多第三方库文件,我们在安装时只需要选择所需的库文件进行下载安装,完全装好后提示重启电脑,将下载安装的库文件加入环境变量后即可进行源码的编译。
  (3)使用cmake打开源码文件夹,将CMakeLists.txt拖入cmake中点击configure开始编译,编译可能会出现大量红色警告,这里的错误大多是路径问题,如果出现了错误,必须进行修改否则之后的编译将不能通过,我们只需将库文件的路径修改为自己安装好的路径,即可正确编译。
  (4)在cmake编译没有出错的情况下,会在build文件夹下生成sln解决方案,使用VS2010打开源码即可编译生成,进行二次开发我们只需生成以下8个项目即可进行开发:ui、qgis_core、qgis_analysis、qgis_gui、qgis_app、qgis、ogrprovider、gdalprovider。编译生成一系列的动态库lib文件,开发者即可使用QGIS的lib库文件配合include头文件和bin动态链接库文件进行二次开发。
  三、QGIS开发实例
  3.1 显示数据
  使用VS新建qt application,配置开发环境属性,注意加载xml模块,然后借助于QGIS开发文档等相关资料即可进行代码的编写。QGIS提供了地图画布类mapcanvas能实现数据视图,借助QgsVectorLayer、QgsRaster、addMapLayer、setExtent、setLayerSet、setVisible等API函数即可实现矢量与栅格数据图层的加载与显示。除了显示数据外,我们通过在类中使用initLayerTreeView、createContextMenu、setMapTool、panMode、ZoomInMode、ZoomOutMode、ZoomFullMode等一系列API函数实现图层管理器和视图窗口的漫游缩放等基本地图操作与显示功能。
  3.2 属性数据的查看
  属性表是开发一个GIS系统必备的功能,通过属性表用户能够进行空间分析、查询等操作,正是因为GIS矢量数据包含各种属性信息,才使得GIS矢量图形与普通的图形具有本质的区别。QGIS中提供了以下几个与属性表相关的类:
  QgsVectorLayerCache、QgsEditorWidgetRegistry、QgsAttributeTableView、QgsAttributeTableModel。其中后两个类是按照Qt的MVC架构来创建的。Model用来存储数据,而View则是向用户显示的视口。
  3.3栅格图像的增强显示
  对于栅格图像的增强显示及操作,是一个GIS软件的基本功能。QGIS依赖于GDAL插件库能够实现显示多种格式的栅格影像,如常见的遥感图像格式ENVI Image、GeoTIF等。QGIS的二次开发API中同样提供了调整栅格图像对比度、亮度以及拉伸增强显示等基本功能接口。通过setContentrastEnhancement函数实现对比度和亮度的控制,QGIS中通过QgsBrightnessContrastFilter类对象来控制栅格图像亮度和对比度,只需在类中定义这样一个对象,即可通过函数实现栅格图像的增强显示。
  四、结语
  不同于传统的商业GIS平台软件,开源GIS软件无需担心数据格式兼容、软件开发使用成本等问题,开发者能够将精力集中于应用软件的业务模块开发而无需从GIS基本操作入手[5]。因此,开源GIS软件功能很普遍很强,技术也非常先进,因为其背后是来自众多技术狂热者和学院研究者的大力支持。QGIS以其拥有的几十个核心插件和大量的外部扩展插件以及它跨平台的优良特性,为各个领域的地理信息应用提供开发平台[6]。本文通过对开源QGIS源码的编译及二次开发方法的研究,为开发人员提供了QGIS开发的技术路线。开发者可根据不同的需求来进行二次开发和插件的开发,并能编写相应的接口,为自己的GIS应用软件服务。
  参考文献:
  [1]邓欣,宁芊.基于开源的分布式山洪监测数据系统设计[J].计算机测量与控制,2016,24(10):54-56.DOI:10.16526/j.cnki.11-4762/tp.2016.10.016.
  [2]朱浩.开源GIS支持下的灾害风险区划分析研究[D].中国石油大学(华东),2012.[2017-10-13].
  作者简介:
  黄善春(1997.01-)男,汉族,身份证号:411524199701051473,本科生,河南信阳,研究方向:地理信息科学
其他文献
摘要:近年来,我国配电网建设不断发展,网络结构趋于合理,但自动化程度不足,这就会影响配电网的供电能力与安全运行。而农网作为电网的一部分,其自动化建设对整个电网具有极大的作用。本文对农网配电自动化技术原则和目标进行了分析,探讨了农网配电自动化系统设计方案,最后分析了农网配电自动化系统设计。  关键字:农网配电;自动化系统;技术原则;方案;设计  引言  配电自动化是实现智能电网的主要基础。与城市电网
期刊
摘要:随着现代社会科学技术的快速发展和农业自动化自动化的运用,人们已经逐渐的认识到农业自动化能够有效提高劳动生产率和增加劳动便捷性,而且随着国家经济的日益发展,经济全球化也实为普遍,中国的农业越来越受到外国家的喜爱和欢迎,这也带起了中国出口粮食的一系列工程。为中国的经济起到了极为重要的作用。粮食是每个人生存的必须,在吃饱的前提下人们更想到的是吃好,良好的农产品为企业带来效益,为人民带来健康,为祖国
期刊
摘要:3D打印技术是新一代机械革命,它区别于传统打印技术,体现了成本少、耗时短、便携等优点。国内外对于3D打印技术的研究如火如荼,它有良好的前景和发展,但仍有一些局限性需要克服。  关键词:3D打印、便携、成本低、局限性、创新、发展  众所致知,世界上经历过三次象征性的科学大革命,分别是以瓦特蒸汽机为标志的第一次工业革命、以电力为标志的第二次工业革命和以无线通讯为成就的第三次计算机技术革命。而工业
期刊
摘要:随着我国经济的发展与社会的进步,人们对于生活质量的要求也越来越高,开始重视精神文化追求。博物馆作为征集、典藏、陈列和研究代表自然和人类文化遗产的实物的场所,其具有十分重要的文化价值与教育意义。在进行博物馆设计的过程中,博物馆的灯光设计是最为重要的一项内容,博物馆灯光设计不仅关系着博物馆展品的展陈效果,而且还关系着展品的保护。本文首先分析了我国博物馆照明设计现状,然后阐述了灯光设计的重要性,最
期刊
摘要:随着我国经济的持续发展,电力需求急剧增长。为了满足大容量长距离输电和全国联网的需要,同时保障系统的稳定运行,我国必须加强骨干网架的建设。而加强骨干网架经济而有效的途径就是建设特高压输电线。在特高压研究中,过电压的研究是其它研究课题的前提和基础,也是能否采用特高压输电的关键之一。它不仅影响到变压器、断路器、输电线等电力设备绝缘强度的设计,而且还直接关系到电力系统是否能够安全稳定的运行。  关键
期刊
摘要:随着经济的快速发展和社会建设水平的提升,很多地方都在积极的应用智能配电系统,其目的在于更好的改善固有工作的不足,最大限度的推动地方向前发展。智能配电系统在很多方面,都能够对电力工作的既往不足,实施有效的解决,在长远的拓展空间上,也是比较大的。文章针对智能配电系统的内涵及其关键技术展开讨论,并提出合理化建议。  关键词:配电系统;智能;内涵;技术;关键  一、智能配电系统的内涵  (一)可靠性
期刊
摘要:大部分情况下,电力系统都处于持续不断的工作运转过程当中,在这种长时间运转的环境当中,有很多電力设备都有可能会形成不同程度的故障,长时间以来,如果变电网络的系统出现故障,采用的检修和管理方式都是较为传统的,相比起来,传统的检修技术更加重视检修结构的质量,而忽视了优化检修的流程。  关键词:变电检修技术;检修流程;流程优化;变电站;电力设备  1引言  社会的不断发展,工业生产和人们生活的用电需
期刊
摘要:目前我国国内真空断路器种类及生产家厂家众多,本文主要对真空断路器的机械特性测量方法进行研究,通过机械特性测量方法的改进提高测量结果的准确性,从而提高真空断路器的产品质量.  关键字:真空断路器、特性测量、平均分、合闸速度  0 引言  众所周知,高压交流真空断路器是电力系统的重要设备,关系到输电及配电的安全,而高压交流真空断路器机械特性参数中的平均分闸速度、平均合闸速度是断路器的重要参数,严
期刊
摘要:随着科学技术的发展,我国工业产业对自动化程度的需求日渐增长,其中,自动化仪表与自动化控制技术成为推动工业自动化发展的关键,深入分析仪表的自动化控制技术,能够有效提高工业生产的自动化水平,有利于实现工业的现代化生产。基于此,文章主要对工业自动化仪表及自动化控制技术进行了简单的分析与研究,希望能够提高仪表的自动化水平。  关键词:工业;仪表;自动化;控制技术  引言  进入21世纪后,科学信息技
期刊
摘要:农村配电网工程是我国配电网工程的重要组成部分。目前,我国的农网配电设备在远程故障诊断方面仍然存在很多的问题亟需解决。笔者主要是结合多年的工作经验对当前农网配电设备远程故障诊断中存在的问题展开讨论,并对农网配电的远程故障诊断以及监控提出了相应的解决方案,供相关工作者参考。  关键字:农网配电设备;远程故障诊断技术;问题;解决方案  引言  近年来,随着农村城镇化水平的逐渐加快,农网配电的结构以
期刊