1、原型測試系統(tǒng)實現(xiàn)
1.1 Windows下環(huán)境配置
大多數(shù)人對Windows環(huán)境比較熟悉,因此,在Windows下完成相關(guān)功能編寫和調(diào)試。對于Windows開發(fā)環(huán)境配置如下:
(1)集成開發(fā)環(huán)境選用VS2010,下載并安裝;
(2)訪問網(wǎng)址http://qt-project.org/downloads根據(jù)自己電腦配置下載對應(yīng)的Qt5.2.0的版本安裝;
(3)根據(jù)Qt安裝路徑設(shè)置環(huán)境變量,設(shè)置如圖所示:
(4)下載并安裝VS2010插件Visual Studio Add-in 1.2.2 for Qt5,至此就完成了Windows下開發(fā)環(huán)境的部署。
1.2 windows下設(shè)計與實現(xiàn)
原型測試系統(tǒng)主要包括主界面、符號庫管理界面和圖層管理界面等。主界面由工具條、狀態(tài)欄、圖層視圖、主視圖四部分組成。對于工具條提供了添加數(shù)據(jù)集、符號管理器、圖層屬性、全圖功能。狀態(tài)欄主要顯示當(dāng)前鼠標(biāo)位置、地圖比例尺和繪制狀態(tài)等。圖層視圖顯示了當(dāng)前地圖的圖層名稱,可以快捷控制圖層的可見性,移動圖層位置,調(diào)整圖層的上下關(guān)系。主視圖主要用于顯示地圖,進行與用戶進行交互,主界面如下圖所示。
測試系統(tǒng)為了提供基本的地圖的放大、縮小和平移功能,需要將主視圖的鼠標(biāo)事件重寫,而對于嵌入式設(shè)備需要重寫觸摸屏事件。對于觸摸屏,原型測試系統(tǒng)最多能夠支持三點式觸摸,并通過觸摸屏的手勢來判斷地圖操作的類型。
對于常用的地圖符號和色帶,將其存儲在SQlite數(shù)據(jù)庫中,方便用戶的重復(fù)使用。地圖符號在數(shù)據(jù)庫中的存儲是按照符號類型分別創(chuàng)建點符號、線符號、面符號三張表。表主要的信息由符號的唯一ID、名稱和數(shù)據(jù)流等組成。色帶分為隨機色帶和漸進色帶兩種,使用一張色帶表示兩類色帶。色帶表的信息有色帶的唯一ID、名稱和數(shù)據(jù)流。完成數(shù)據(jù)庫結(jié)構(gòu)設(shè)計后,使用Qt設(shè)計符號庫管理相關(guān)界面。
符號管理器主要包括符號管理主界面、點符號管理界面、線符號管理界面、面符號管理界面、隨機色帶管理界面和漸進色帶管理界面等。
符號管理主界面主要負(fù)責(zé)創(chuàng)建符號庫存儲文件、導(dǎo)入已有符號庫存儲文件、插入常用符號、刪除已有符號以及修改已有符號參數(shù)等,界面如下圖所示。
點、線、面符號管理界面分別負(fù)責(zé)點、線、面符號創(chuàng)建與修改。符號庫中的符號可以在視圖中直接使用,也可以根據(jù)需要在已有的符號上做修改。點、線、面符號管理界面如下圖所示。
通過上述的符號管理器創(chuàng)建出一些常用的點、線、面符號實例,效果如下圖所示。
同樣對于色帶的管理,提供色帶管理界面。色帶使用RGB和HSV顏色空間,主要用于漸進符號的填充以及一些專題圖,其管理界面如下圖所示。
對于符號和色帶查詢、插入、刪除和修改,實質(zhì)是通過SQL語句對數(shù)據(jù)信息進行修改,例如符號的插入主要代碼如下:
圖層管理界面主要負(fù)責(zé)圖層基本屬性的設(shè)置,注記的相關(guān)屬性設(shè)置和地圖專題顯示設(shè)置,其管理界面如下圖所示。
1.3 編寫跨平臺文件
Windows環(huán)境下的測試系統(tǒng)設(shè)計與實現(xiàn)已經(jīng)完成,為了實現(xiàn)在其他系統(tǒng)上能夠運行,需要編寫與平臺無關(guān)的文件,而Qt為我們提供了pro文件。
針對不同操作系統(tǒng),只需要編寫一份pro文件。在文件中,添加自定義字段P1atFormName,來區(qū)分不同的操作系統(tǒng)。這里我們以地圖控件模塊為例說明一下pro文件的編寫方法。
P1atFormName字段根據(jù)編譯環(huán)境,區(qū)分不同的操作系統(tǒng);CONFIG(debug,debuglrelease)判斷方案配置;DESTDIR字段設(shè)置模塊生成路徑;TEMPLATE字段定義模塊類型,如動態(tài)庫賦值為lib;利用TARGET字段設(shè)置模塊的名稱,如接口模塊可設(shè)置為MapControl; DEFINES字段定義預(yù)處理宏;使用LIBS字段添加模塊依賴庫;INCLUDEPATH字段添加頭文件文件路徑;SOURCES字段添加需要編譯cpp文件。對于pro的文件其他字段說明,可以參考Qt官網(wǎng)的白皮書,這里就不再贅述。
對于其它模塊,分別按照格式編寫相應(yīng)的pro文件。有了pro文件,利用QtCreator集成環(huán)境開發(fā)環(huán)境配置相應(yīng)平臺信息,無需手動去編寫代碼,便可以實現(xiàn)語言之間的互操作,提高了跨平臺的效率。接下來分別介紹各系統(tǒng)環(huán)境部署、可執(zhí)行程序生成和測試。
2、Android系統(tǒng)編譯與測試
Android系統(tǒng)底層核心模塊采用C或者C++編寫,但其上層應(yīng)用模塊采用Java語言編寫,這樣使得二次開發(fā)必須使用Java語言。Android在發(fā)布時,谷歌己經(jīng)聲明Android的虛擬機支持JNI這種編程方式,這為使用C或者C++開發(fā)功能模塊提供了可能。
Android環(huán)境配置如下:
(1)在Android開發(fā)官網(wǎng)下載 Android SDK和NDK;
(2)下載并安裝Java開發(fā)環(huán)境;
(3)在Qt官網(wǎng)下載Qt 5.2.0 for Android (Windows 32-bit)并安裝;
(4)打開Qt安裝目錄下的qtcreator,配置Android開發(fā)環(huán)境,如下圖所示。
以上就是部署Android開發(fā)相關(guān)步驟。將先前編寫好的pro文件加載到qtcreator,設(shè)置為Android for armeabi 工程。此時,Android運行版本最低為Android2.1。根據(jù)模塊的依賴關(guān)系依次編譯生成Android動態(tài)庫.so文件,最后編譯主測試程序,打包生成.apk安裝文件。使用手機安裝助手將apk安裝到手機上,并將shp矢量數(shù)據(jù)拷貝到手機sd卡上。手機選用小米2,其配置為操作系統(tǒng)Android OS 4.1、主屏尺寸4.3英寸、RAM容量2G、 ROM容量為16G。安裝完成后,啟動應(yīng)用程序,加載矢量數(shù)據(jù),對各類符號分別測試。測試效果如下圖所示。
3、Linux和Mac系統(tǒng)編譯與測試
Linux系統(tǒng)版本有很多,選用比較流行、穩(wěn)定的Ubuntu 12.04的64位系統(tǒng)。Ubuntu下的編譯器使用gcc,它提供了g++來編譯C++程序。Linux下的開發(fā)環(huán)境配置相對比較簡單。通過“sudo apt-get install g++”命令下載安裝g++編譯器,并使用“g++ --version”查看是否安裝成功。在Qt官網(wǎng)獲取Qt5.2.0 for Linux 64-bit開發(fā)包,便可完成開發(fā)環(huán)境的配置。接下就是對各個模塊的編譯。將開發(fā)程序拷貝到Ubuntu下,使用qcreator加載所有pro文件,依次編譯所有模塊。加載數(shù)據(jù),測試效果如下圖所示。
Mac系統(tǒng)與Linux系統(tǒng)內(nèi)核有密切的關(guān)系,在功能和命令行上有很多相似之處,因此,只需從下載Qt5.2.0 for Mac,其他環(huán)境配置與Linux相同。運行結(jié)果如下圖所示。
4、 iOS系統(tǒng)編譯與測試
Qt5.0版本以后,增加了對iOS的支持,但穩(wěn)定性較差。2013年12份推出的Qt5.2.0正式版,修改了原來版本存在的bug 。Qt5.2要求安裝xcode5.0版本,而xcode5.0只能在Mac 10.8 Mountain Lion及以上版本運行。具體的環(huán)境配置如下:
(1)安裝10.8 Mountain Lion系統(tǒng);
(2)安裝g++編譯器;
(3)安裝xcode5.0集成開發(fā)環(huán)境;
(4)安裝Qt5.2.0 for iOS。
iOS開發(fā)不像Android,免費對用戶開發(fā)。程序人員如果要在真機上測試或發(fā)布產(chǎn)品,就必須花費9.9美元購買許可文件,使用期限為一年。有開發(fā)環(huán)境和許可便可以使用pro文件對各個模塊進行編譯。連接IPad, IPhone或者其他iOS移動設(shè)備,編譯主程序便可將其安裝到設(shè)備當(dāng)中。測試效果如下圖所示。
以上完成了各個系統(tǒng)編譯和測試工作,說明了設(shè)計的地圖符號框架具有跨平臺的特性,不僅如此,地圖符號庫也具有跨平臺的特性。例如在Window下,設(shè)計一個長城符號,將這個符號庫文件拷貝到其它系統(tǒng)下,便可直接使用。我們使用Window和iOS兩個系統(tǒng)做測試,結(jié)果如下圖所示。
5、結(jié)語
隨著科技的發(fā)展,GIS應(yīng)用領(lǐng)域越來越廣,已經(jīng)深入到社會生活的方方面面。通過地圖查詢、定位、導(dǎo)航等功能,方便了人們出行。而地圖是空間數(shù)據(jù)符號化的結(jié)果,其顯示質(zhì)量影響著地圖服務(wù)的效果。但計算機、移動設(shè)備等操作系統(tǒng)種類較多,因此,研究跨平臺是非常必要。它不僅方便使用,而且易于管理擴展。