使用OpenGL繪制 shapefile文件 完成最基本的gis操作


主要內容概述

(視頻教程已經發布:http://edu.csdn.net/course/detail/3422)

(http://edu.csdn.net/course/detail/3420)

  1.解析shapefile(.shp)文件。‘

  2.將經緯度數據按照墨卡托投進行投影(調用proj.4庫)完成。

  3.將數據用OpenGL的方式進行繪制。

  上述3方面只是完成初步的繪制,對於要完成一個復雜的地理信息系統還有很大的差距,

下面介紹我設計的簡單的地理信息框架(用於交流,進步)。先上個圖,根據圖來說更加易懂。

其中地圖框架中包含多個物理地理圖層,是真實存在的圖層,所有在該圖層下的數據都會被繪制到圖層上(即一張圖片)。

物理圖層中包含了多個邏輯圖層(Layer),是為了方便應用層使用而設計的邏輯圖層,用於將地圖要素進行分類管理

使用,最后Layer中包含的是真正的地圖要素數據,是真正繪制使用的數據。

  在實際的應用中,可以把影像數據作為一個物理圖層,將矢量要素數據作為一個物理圖層,最后將兩個圖層合成輸出。

當然在實際應用中,我增加了一個圖層,即實時繪制層,即將距離測量,面積測量,角度測量等做在該層,這樣在地圖刷新的

時候重新繪制的數據不多,提高程序的性能。

  先上一個圖,我目前做的簡單的gis框架(只是滿足我目前的需求,主要的特點就是速度快)。如下圖所示。

初步的完成上面的框架設計后,我得到了上面的結果,在這想與大家分享的是OpenGL在處理多邊形填充區域的時候比較麻煩,我將矢量線和面做了兩個

邏輯圖層,這樣做可以選擇顯示線和面兩中模式。在完成這個效果圖的時候為了追求效率,遇到最大的問題是繪制文字,眾所周知OpenGL沒有繪制文字

的功能,需要自己做,其用到了我前面的隨筆,有興趣的可以自行參考。

  為了做標會功能,在做界面花費了我很多精力,為了讓軟件具備跨平台的目的(可以再Andriod手機平台上用),界面我采用OpenGL封裝了一個輕量級的

界面庫(這個很不值得),網上也有很多開源的界面庫,比如Mygui,FastUI,CEGUI等,我都有用過,要不在效率上滿足不了我的要求,要么占用較大的內存,

最后自己只有自己寫了,上圖。

 

編輯各種常用的圖形界面如下:

最后,我增加了一個曲線模板,即可以把比較好的樣式保存成模板,想用的使用直接拖出來就直接可以應用。

如下所示。

完成了。后續如果大家覺得還好,我會繼續寫,並把代碼分享出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM