三維資料的效率一直是個瓶頸,特別是在web端瀏覽一直是個問題,在ie記憶體限制1g的條件下,對於三維資料動不動幾十g的資料量,這1g顯得多麼微不足道。雖然現在三維平台都是分級載入,或者在程式中採用資料分不同片區載入來降低一次性載入的模型資料,但是在瀏覽器中瀏覽三維資料崩潰問題仍然一直存在。最近在維護乙個老的skyline的專案,客戶提出了在看二維資料的同時也可以看三維資料,需求很簡單,實現也很容易,唯一的問題是瀏覽效率,能不能瀏覽?瀏覽效率怎麼樣?而且**單位的電腦配置都是很一般。畢竟也做了這麼多年的skyline開發,明知有挑戰,那就幹吧。
首先,拿到專案的三維資料,一看資料量40幾g,分了21個模型片區,每個片區差不多5平方公里,片區裡面分了建築模型圖層和其他模型圖層,建築圖層是shp+xpl2,模型圖層是3dml。那就先試試資料本在本地,建個web瀏覽頁面,在自己4g視訊記憶體,16g記憶體的機器上跑一下。發現建築模型初始時可以看見,瀏覽一會消失後,再回來看建築模型,死活載入不出來了,一看ie記憶體800m了,顯然其他模型圖層(3dml格式)把記憶體都佔滿了,流模式載入的建築模型被「拋棄了」。顯然直接使用現有資料這種方式是不行的了。
第二,既然xp2+3dml 這種組合不行,那就我房屋模型也打包成3dml,打包後5平方公里竟然有4g多的資料。資料在本地,在頁面上瀏覽,好了,不會出現建築消失後再也載入不出來的情況了,但是ie記憶體也接近1g,cpu可以達到60%以上,我這cpu是i5 3.30g,各種不穩定因素,這種方法也不行。
第三,skyline 出了7.0版本,是64位的軟體,那就來試下在web端,修改web頁面activex 控制項,結果發現竟然不支援,說是ie32位不支援64位程式,怎麼改都不行,那這方法也不行。不過pro7.0 在pc端載入資料的效率確實高,應用程式占用記憶體能達到3g以上,6.6版本 擴充套件大記憶體後,也只能達到2.5g左右。以後64位系統是趨勢,skyline7.0 ,偉景行8.0版本,arcgis pro 都是64位的,超圖的8c還沒關注,應該都是了。
第四,那只有考慮降低資料精度了,跟客戶商量下,保證效率和文件性的前提下,可以降低模型精度。那怎麼降低呢,首先資料肯定是3dml 格式的了,現在乙個片區其他模型有1g的大小,建築4g大小。降低原則,先把資料量降低一倍,其他模型資料在規劃行業中相對沒那麼重要,可以適當降低。利用citybuilder 把其他模型資料的精度改為0.5p/m,發現資料量將為500m,房屋模型精度改為0.25p/m 和0.125p/m,生成後0.25p/m大小位2.4g,0.125p/m位3.1g。實際發現0.25p/m的資料精度太差了。那就把0.125p/m的房屋和0.5p/m的其他模型在web端瀏覽,發現ie占用記憶體也是800多m,但是cpu 使用最大也就40%多。似乎記憶體問題還是沒能解決。這裡有個基本的標準1平方公里房屋模型400m,其他模型100m為最佳效果瀏覽效果,純經驗。
以上過程說明,只要skyline瀏覽資料量超過1g,ie占用的記憶體肯定會達到ie的限制,要解決效能問題,乙個還是要盡量分割槽,分割槽範圍小一點,第二點就是要用3dml格式資料,第三還是降低一些資料精度。
Skyline WEB端開發3 新增乙個彈框
相對於之前的功能而言,彈出彈框就比較容易了,在skyline中有提供window,包含所有與三維視窗互動的相關功能。建立彈窗的方法 creator.createpopupmessagecreatepopupmessage caption,字串,顯示在彈出視窗標題位置。這個引數也被用於彈出視窗標識。當...
瀏覽器端資料儲存
有時需要將網頁中的一些資料儲存在瀏覽器端,這樣做的好處是,當下次訪問頁面時,不需要再次向伺服器請求資料,直接就可以從本地讀取資料。目前常用的有以下幾種方法 cookie會隨著每次http請求頭資訊一起傳送,無形中增加了網路流量,另外,cookie能儲存的資料容量有限,根據瀏覽器型別不同而不同,ie6...
express之獲取瀏覽器端資料
const express require express var server express server.listen 8888 通過表單傳遞資料到伺服器端 請求的方法是get 傳送乙個檔案mylogin.html到瀏覽器 server.get login req,res server.get...