- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
基于QGIS的开源GIS二次开发技术探究
?
?
摘要:由于以往的各种商业地理信息系统软件平台定义了不同的数据格式和数据组织方式,且其开发模式各不相同又相互独立与封闭,以及常规商业GIS软件的高费用在一定程度上限制了地理信息系统开发的大众化发展。本文介绍基于开源软件QGIS源码在WINDOWS系统下编译并进行二次开发的基本过程与方法,并给出地图浏览与查询系统开发实例,希望对相关的GIS系统开发者有一定的指导和借鉴作用。
关键词:GISQGIS源码编译二次开发
中图分类号:P208
一、QGIS概述
GIS是目前IT领域的热门话题,随着Googleearth等GIS系统的流行逐渐被越来越多的人所熟知。地理信息系统(GIS)是一个用于采集、存储、处理、管理、分析、显示和应用地理空间信息及其属性数据的计算机系统,现已广泛地应用于环境监测、灾害分析预警与监测、国土资源及人口调查、城市规划等诸多领域。在计算机技术和全球信息网络技术飞速发展的大环境下,GIS软件技术体系迅猛发展。除了传统的商业GIS软件平台外,众多开源GIS也在为地理信息系统默默贡献自己的力量。QGIS是基于跨平台的QT软件,采用C++语言开发的桌面地理信息系统,因而其具有良好的跨平台性,广泛支持Linux、Windows、Unix和MacOSX等操作系统,这是其他诸多商业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新建qtapplication,配置开发环境属性,注意加载xml模块,然后借助于QGIS开发文档等相关资料即可进行代码的编写。QGIS提供了地图画布类mapcanvas能实现数据视图,借助QgsVectorLayer、QgsRaster、addMapLayer、setExtent、setLayerSet、setVisible等API函数即可实现矢量与栅格数据图层的加载与显示。除了显示数据外,我们通过在类中使用initLayerTreeView、createContextMenu、setMapTool、panMode、ZoomInMode、ZoomOutMode、ZoomFullMode等一系列API函数实现图层管理器和视图窗口的漫游缩放等基本地图操作与显示功能。
3.2属性数
文档评论(0)