主要內容概述框架
(視頻教程已經發布:http://edu.csdn.net/course/detail/3422)性能
(http://edu.csdn.net/course/detail/3420)ui
1.解析shapefile(.shp)文件。‘.net
2.將經緯度數據按照墨卡託投進行投影(調用proj.4庫)完成。設計
3.將數據用OpenGL的方式進行繪製。視頻
上述3方面只是完成初步的繪製,對於要完成一個複雜的地理信息系統還有很大的差距,blog
下面介紹我設計的簡單的地理信息框架(用於交流,進步)。先上個圖,根據圖來講更加易懂。教程
其中地圖框架中包含多個物理地理圖層,是真實存在的圖層,全部在該圖層下的數據都會被繪製到圖層上(即一張圖片)。圖片
物理圖層中包含了多個邏輯圖層(Layer),是爲了方便應用層使用而設計的邏輯圖層,用於將地圖要素進行分類管理內存
使用,最後Layer中包含的是真正的地圖要素數據,是真正繪製使用的數據。
在實際的應用中,能夠把影像數據做爲一個物理圖層,將矢量要素數據做爲一個物理圖層,最後將兩個圖層合成輸出。
固然在實際應用中,我增長了一個圖層,即實時繪製層,即將距離測量,面積測量,角度測量等作在該層,這樣在地圖刷新的
時候從新繪製的數據很少,提升程序的性能。
先上一個圖,我目前作的簡單的gis框架(只是知足我目前的需求,主要的特色就是速度快)。以下圖所示。
初步的完成上面的框架設計後,我獲得了上面的結果,在這想與你們分享的是OpenGL在處理多邊形填充區域的時候比較麻煩,我將矢量線和麪作了兩個
邏輯圖層,這樣作能夠選擇顯示線和麪兩中模式。在完成這個效果圖的時候爲了追求效率,遇到最大的問題是繪製文字,衆所周知OpenGL沒有繪製文字
的功能,須要本身作,其用到了我前面的隨筆,有興趣的能夠自行參考。
爲了作標會功能,在作界面花費了我不少精力,爲了讓軟件具有跨平臺的目的(能夠再Andriod手機平臺上用),界面我採用OpenGL封裝了一個輕量級的
界面庫(這個很不值得),網上也有不少開源的界面庫,好比Mygui,FastUI,CEGUI等,我都有用過,要不在效率上知足不了個人要求,要麼佔用較大的內存,
最後本身只有本身寫了,上圖。
編輯各類經常使用的圖形界面以下:
最後,我增長了一個曲線模板,便可以把比較好的樣式保存成模板,想用的使用直接拖出來就直接能夠應用。
以下所示。
完成了。後續若是你們以爲還好,我會繼續寫,並把代碼分享出來。