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