国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于QGIS的開(kāi)源GIS二次開(kāi)發(fā)技術(shù)探究

2017-12-20 01:22:27黃善春
科學(xué)與財(cái)富 2017年29期
關(guān)鍵詞:二次開(kāi)發(fā)

摘要:由于以往的各種商業(yè)地理信息系統(tǒng)軟件平臺(tái)定義了不同的數(shù)據(jù)格式和數(shù)據(jù)組織方式,且其開(kāi)發(fā)模式各不相同又相互獨(dú)立與封閉,以及常規(guī)商業(yè)GIS軟件的高費(fèi)用在一定程度上限制了地理信息系統(tǒng)開(kāi)發(fā)的大眾化發(fā)展。本文介紹基于開(kāi)源軟件QGIS源碼在WINDOWS系統(tǒng)下編譯并進(jìn)行二次開(kāi)發(fā)的基本過(guò)程與方法,并給出地圖瀏覽與查詢系統(tǒng)開(kāi)發(fā)實(shí)例,希望對(duì)相關(guān)的GIS系統(tǒng)開(kāi)發(fā)者有一定的指導(dǎo)和借鑒作用。

關(guān)鍵詞:GIS QGIS 源碼編譯 二次開(kāi)發(fā)

中圖分類(lèi)號(hào):P208

一、QGIS概述

GIS是目前IT領(lǐng)域的熱門(mén)話題,隨著Google earth等GIS系統(tǒng)的流行逐漸被越來(lái)越多的人所熟知。地理信息系統(tǒng)(GIS)是一個(gè)用于采集、存儲(chǔ)、處理、管理、分析、顯示和應(yīng)用地理空間信息及其屬性數(shù)據(jù)的計(jì)算機(jī)系統(tǒng),現(xiàn)已廣泛地應(yīng)用于環(huán)境監(jiān)測(cè)、災(zāi)害分析預(yù)警與監(jiān)測(cè)、國(guó)土資源及人口調(diào)查、城市規(guī)劃等諸多領(lǐng)域。在計(jì)算機(jī)技術(shù)和全球信息網(wǎng)絡(luò)技術(shù)飛速發(fā)展的大環(huán)境下,GIS軟件技術(shù)體系迅猛發(fā)展。除了傳統(tǒng)的商業(yè)GIS軟件平臺(tái)外,眾多開(kāi)源GIS也在為地理信息系統(tǒng)默默貢獻(xiàn)自己的力量。QGIS是基于跨平臺(tái)的QT軟件,采用C++語(yǔ)言開(kāi)發(fā)的桌面地理信息系統(tǒng),因而其具有良好的跨平臺(tái)性,廣泛支持Linux、Windows、Unix和Mac OSX等操作系統(tǒng),這是其他諸多商業(yè)GIS軟件所不能企及的。最為重要的是QGIS為我們封裝了二次開(kāi)發(fā)的API庫(kù),通過(guò)引用各個(gè)類(lèi)庫(kù)中的接口并配合動(dòng)態(tài)庫(kù)的使用,可以方便地實(shí)現(xiàn)GIS功能,這使得開(kāi)發(fā)者能夠?qū)⒕械浇鉀Q應(yīng)用程序中的業(yè)務(wù)邏輯中,而不是從頭開(kāi)始開(kāi)發(fā)GIS基本功能,方便開(kāi)發(fā)者開(kāi)發(fā)自己的GIS軟件[1]。

二QGIS的編譯及環(huán)境搭建

QGIS源碼及各種第三方依賴庫(kù)有不同的版本,開(kāi)發(fā)者可基于自己的開(kāi)發(fā)環(huán)境選擇不同的開(kāi)發(fā)版本,本文介紹WIN10+QGIS2.8.9+VS2010+CMAKE3.2.3的編譯方法,其他版本與之類(lèi)似。

(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下載安裝編譯所需的第三方庫(kù),需要安裝的有:-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包含了許多第三方庫(kù)文件,我們?cè)诎惭b時(shí)只需要選擇所需的庫(kù)文件進(jìn)行下載安裝,完全裝好后提示重啟電腦,將下載安裝的庫(kù)文件加入環(huán)境變量后即可進(jìn)行源碼的編譯。

(3)使用cmake打開(kāi)源碼文件夾,將CMakeLists.txt拖入cmake中點(diǎn)擊configure開(kāi)始編譯,編譯可能會(huì)出現(xiàn)大量紅色警告,這里的錯(cuò)誤大多是路徑問(wèn)題,如果出現(xiàn)了錯(cuò)誤,必須進(jìn)行修改否則之后的編譯將不能通過(guò),我們只需將庫(kù)文件的路徑修改為自己安裝好的路徑,即可正確編譯。

(4)在cmake編譯沒(méi)有出錯(cuò)的情況下,會(huì)在build文件夾下生成sln解決方案,使用VS2010打開(kāi)源碼即可編譯生成,進(jìn)行二次開(kāi)發(fā)我們只需生成以下8個(gè)項(xiàng)目即可進(jìn)行開(kāi)發(fā):ui、qgis_core、qgis_analysis、qgis_gui、qgis_app、qgis、ogrprovider、gdalprovider。編譯生成一系列的動(dòng)態(tài)庫(kù)lib文件,開(kāi)發(fā)者即可使用QGIS的lib庫(kù)文件配合include頭文件和bin動(dòng)態(tài)鏈接庫(kù)文件進(jìn)行二次開(kāi)發(fā)。

三、QGIS開(kāi)發(fā)實(shí)例

3.1 顯示數(shù)據(jù)

使用VS新建qt application,配置開(kāi)發(fā)環(huán)境屬性,注意加載xml模塊,然后借助于QGIS開(kāi)發(fā)文檔等相關(guān)資料即可進(jìn)行代碼的編寫(xiě)。QGIS提供了地圖畫(huà)布類(lèi)mapcanvas能實(shí)現(xiàn)數(shù)據(jù)視圖,借助QgsVectorLayer、QgsRaster、addMapLayer、setExtent、setLayerSet、setVisible等API函數(shù)即可實(shí)現(xiàn)矢量與柵格數(shù)據(jù)圖層的加載與顯示。除了顯示數(shù)據(jù)外,我們通過(guò)在類(lèi)中使用initLayerTreeView、createContextMenu、setMapTool、panMode、ZoomInMode、ZoomOutMode、ZoomFullMode等一系列API函數(shù)實(shí)現(xiàn)圖層管理器和視圖窗口的漫游縮放等基本地圖操作與顯示功能。

3.2 屬性數(shù)據(jù)的查看

屬性表是開(kāi)發(fā)一個(gè)GIS系統(tǒng)必備的功能,通過(guò)屬性表用戶能夠進(jìn)行空間分析、查詢等操作,正是因?yàn)镚IS矢量數(shù)據(jù)包含各種屬性信息,才使得GIS矢量圖形與普通的圖形具有本質(zhì)的區(qū)別。QGIS中提供了以下幾個(gè)與屬性表相關(guān)的類(lèi):

QgsVectorLayerCache、QgsEditorWidgetRegistry、QgsAttributeTableView、QgsAttributeTableModel。其中后兩個(gè)類(lèi)是按照Qt的MVC架構(gòu)來(lái)創(chuàng)建的。Model用來(lái)存儲(chǔ)數(shù)據(jù),而View則是向用戶顯示的視口。

3.3柵格圖像的增強(qiáng)顯示

對(duì)于柵格圖像的增強(qiáng)顯示及操作,是一個(gè)GIS軟件的基本功能。QGIS依賴于GDAL插件庫(kù)能夠?qū)崿F(xiàn)顯示多種格式的柵格影像,如常見(jiàn)的遙感圖像格式ENVI Image、GeoTIF等。QGIS的二次開(kāi)發(fā)API中同樣提供了調(diào)整柵格圖像對(duì)比度、亮度以及拉伸增強(qiáng)顯示等基本功能接口。通過(guò)setContentrastEnhancement函數(shù)實(shí)現(xiàn)對(duì)比度和亮度的控制,QGIS中通過(guò)QgsBrightnessContrastFilter類(lèi)對(duì)象來(lái)控制柵格圖像亮度和對(duì)比度,只需在類(lèi)中定義這樣一個(gè)對(duì)象,即可通過(guò)函數(shù)實(shí)現(xiàn)柵格圖像的增強(qiáng)顯示。

四、結(jié)語(yǔ)

不同于傳統(tǒng)的商業(yè)GIS平臺(tái)軟件,開(kāi)源GIS軟件無(wú)需擔(dān)心數(shù)據(jù)格式兼容、軟件開(kāi)發(fā)使用成本等問(wèn)題,開(kāi)發(fā)者能夠?qū)⒕杏趹?yīng)用軟件的業(yè)務(wù)模塊開(kāi)發(fā)而無(wú)需從GIS基本操作入手[5]。因此,開(kāi)源GIS軟件功能很普遍很強(qiáng),技術(shù)也非常先進(jìn),因?yàn)槠浔澈笫莵?lái)自眾多技術(shù)狂熱者和學(xué)院研究者的大力支持。QGIS以其擁有的幾十個(gè)核心插件和大量的外部擴(kuò)展插件以及它跨平臺(tái)的優(yōu)良特性,為各個(gè)領(lǐng)域的地理信息應(yīng)用提供開(kāi)發(fā)平臺(tái)[6]。本文通過(guò)對(duì)開(kāi)源QGIS源碼的編譯及二次開(kāi)發(fā)方法的研究,為開(kāi)發(fā)人員提供了QGIS開(kāi)發(fā)的技術(shù)路線。開(kāi)發(fā)者可根據(jù)不同的需求來(lái)進(jìn)行二次開(kāi)發(fā)和插件的開(kāi)發(fā),并能編寫(xiě)相應(yīng)的接口,為自己的GIS應(yīng)用軟件服務(wù)。

參考文獻(xiàn):

[1]鄧欣,寧芊.基于開(kāi)源的分布式山洪監(jiān)測(cè)數(shù)據(jù)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2016,24(10):54-56.DOI:10.16526/j.cnki.11-4762/tp.2016.10.016.

[2]朱浩.開(kāi)源GIS支持下的災(zāi)害風(fēng)險(xiǎn)區(qū)劃分析研究[D].中國(guó)石油大學(xué)(華東),2012.[2017-10-13].

作者簡(jiǎn)介:

黃善春(1997.01-)男,漢族,身份證號(hào):411524199701051473,本科生,河南信陽(yáng),研究方向:地理信息科學(xué)

猜你喜歡
二次開(kāi)發(fā)
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門(mén)子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開(kāi)發(fā)
淺談Mastercam后處理器的二次開(kāi)發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
Micaps3.2 版本二次開(kāi)發(fā)入門(mén)淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開(kāi)發(fā)在汽車(chē)穩(wěn)定桿CAE分析中的應(yīng)用
基于Pro/E二次開(kāi)發(fā)的推土鏟參數(shù)化模塊開(kāi)發(fā)
陆川县| 河间市| 潢川县| 牟定县| 兴业县| 南康市| 安图县| 昌图县| 泾阳县| 衢州市| 汉源县| 乳源| 偏关县| 内黄县| 龙胜| 中卫市| 平利县| 安溪县| 宜丰县| 锡林浩特市| 冕宁县| 和平县| 溆浦县| 如东县| 鄯善县| 若羌县| 宜州市| 南汇区| 银川市| 全南县| 维西| 古丈县| 西和县| 岳阳市| 称多县| 昌江| 达拉特旗| 盐池县| 苗栗县| 安新县| 玉田县|