三維數字地球釋出平臺(開源)
轉自 三維數字地球釋出平臺探索--幾款開源軟體介紹
先寫想法:
想做個簡單的地形漫遊,於是考慮在ww直接開發,或找個控制元件形式的開發元件。
最大的期望有:
1. 支援google的sketchup,快速智慧三維建模
2. 設計模式做好點,最好先做成元件形式,然後開發應用程式
3. 效能再好點,對於索引技術,記憶體管理等等
4. 客戶端獨立版本 和客戶伺服器端耦合版本的優化
5. 放點伺服器的資料。
.net平臺
1.WorldWind
知名度很高,介紹也很全。連結在這裡NASAWorld Wind
目前分為.net版本和java版本。
開發語言:c#.java
渲染方式:DirectX,Opengl(Java)
WorldWind的優勢
WorldWind的軟體架構應該來說還是很不錯的,很優秀。開放的設計,使得Worldwind的擴充套件非常方便和快捷,目前已有上百種各式各樣的外掛,很多外掛都很有意思和實用。使用.net和java,研究它的工作原理變的相對容易。
相對來說.net版本的容易深入些。java版的嚴格面向物件方法的使用,使得java版的精簡,但深入起來不如.net容易。
以前交流的時候,我經常會推薦WorldWind。很好很強大。
這裡以.net版進行說明。
下面的缺陷不能掩蓋WorldWind的光彩。
WorldWind的缺陷
總體架構設計沒太大問題。主要在內部的幾點
1.速度慢。幾個原因導致worldwind在實際使用中存在速度慢的問題.
a)影像資料組織混亂。由於worldwind在系統設計時面向的就是各個行業各種資料的整合。因此他設計時的相容,導致同一地區資料獲取重複(佔記憶體資源)、不同資料獲取伺服器速度不一致影響。
b)c#異常。捕獲異常佔用了worldwind大部分時間。導致顯示、資料獲取時嚴重的停頓。
c)SRTM的動態生成。如果你想像取圖工具一樣把SRTM下載下來,那簡直不可能。
d)QueueDownload實際運作時,一旦出現異常和錯誤,將導致資料下載停頓。需要重新調整視角。而貌似多執行緒的下載,實際效果並不明顯。這就導致顯示出現停頓。
2.三維支援能力稍差。
尤其是在模型的支援方面,雖然有個ModelFeature類來進行
a)不支援LOD,雖然.x檔案設計時能支援,不過顯然ModelFeature不支援。
b)模型顯示漂移。當你放大到最詳細時,會發現模型左右上下晃動。
c)模型未按tile形式組織。Cache、記憶體、釋放等方式都存在問題。
3.向量支援
worldwind的向量處理顯示類比較混亂。效果也不是太好。
4.KML支援
通過一個外掛能夠支援KML,不過想達到googleearth的新增等功能,還需要做很多工作。
5.記憶體洩露
按理,c#不會存在記憶體洩露。出現問題的地方是QuadTile.Dispose,D3D的紋理沒有進行清除。使得資源佔用越來越大,速度越來越慢
6.DEM顯示缺陷
每個Tile之間未作平滑處理,經常會出現深坑、斷檔。
7.影像黑邊
大多數基於worldwind的軟體,可以看到影像邊緣很明顯的黑邊、鋸齒。究其原因,是Jpg壓縮,出現黑色滲透交融導致黑邊鋸齒。 兩種解決辦法,a)邊緣地帶採用png。b)嚴格的資料組織。
WorldWind的國內應用
可以說,國內很多高手都解決了上述的問題,並且發揚WorldWind的優勢。典型代表EVGlobe等等。很不容易,從某種角度上來說,確實是自主研發。
非.net平臺
2.OSSIMPlanet
連結:ossimplanet
開發語言:c++
渲染方式:opengl
相比WorldWind而言,名氣並太大。雖然推薦時,我一般不推薦它,但他確實是另外一個很強大的開源數字地球。我不推薦它的原因是:
1)基於c++。光研究瞭解它就要花好多成本,這並不太適合國內公司和單位。門檻高,時間長,見效慢。
2)相關資料少。它涉及到太多的大型開源庫,而國內翻譯的資料相對少很多。不像WorldWind,拿套原始碼就能開幹。
但我很喜歡它,作為技術人員來說,我推薦大家去看。很多樂趣和知識在裡面。很優雅,很內涵,值得收藏。
OSSIMPlanet優勢
1)基於OSG(Open Scene Graph),一個很龐大很工業很成熟的開源軟體。這點很吸引我。國內很多公司採用,如西安賽能。地址:http://www.3snews.net/html/71/www.openscenegraph.org
僅OSG就能列出非常多的文章,使用OSG的好處不勝列舉。要描述清楚需要花很多篇幅。這裡我們就帶過。
2)平滑快速高效的顯示效果。
3)作為平臺來說,他涵蓋的內容很全,比如你可以用OSG做出媲美TerraBuilder的軟體。用GDAL+OSG支援絕大多數向量、影像、模型檔案。
4)完美的模型支援。不用說LOD,連整個城市裝入一點問題沒有。在很早以前,有個叫做VTP的虛擬城市開源軟體。
5)專業化,確實很專業。
6)指令碼支援。通過採用OSG的osgInterper(這部分實在是太美妙了),能快速繫結Python,Lua,JavaScript,Ruby。
7)想了解更多的優勢,還是自己去下個來看吧。
OSSIMPlanet缺陷
從技術角度來講,OSSIMPlanet的缺陷幾乎沒有。不過,上面說過了,想基於它形成自己的產品和解決方案,要花很多投入和資金。因此它的硬傷就是,不適合商業化。
OSSIMPlanet國內應用
幾年前,我和一個開發工作室聊過。他們採用的是OSG以及基於OSG開發的數字地球,參考了ossimplanet但未直接使用。因此,國內應用,沒有。
這個工作室產品名為VirtualTerran。後來貌似變成了mapok(不確定,知道的請聯絡我)
3.Gps3D
地址:http://www.3snews.net/html/71/www.mgix.com/gps3d/
這款開源軟體應該來說更側重於gps功能。當然也包含了三維地球的部分功能。
開發語言:c++
渲染方式:Opengl
這個開源軟體很小巧也很實用。作為技術參考來說,非常不錯。可以參考的部分是經緯度轉三維座標,WMS、WFS的遠端呼叫以及Tile的三維顯示。
缺點就不多說,畢竟方向不一致,不能以平臺來要求它。
4.Earth3D
地址:http://www.3snews.net/html/71/www.earth3d.org
這款開源軟體適合初步研究三維地球。它顯示了三維地球,並顯示了國界線。
開發語言:c++
渲染方式:Opengl
作為初步研究,還是不錯的。畢竟起點的第一步就是如何顯示三維地球並貼上MODIS資料。它還能顯示國界線。很不錯的參考。
5.其他更多的開源軟體
目前為止,我發現的開源軟體就是以上4種,如果你知道更多,請告訴我。
總結:
1.WorldWind最成熟,最適合商業化.
2.技術最優OSSIMPlanet