i3s是什么?
i3s標準是一種用樹結構來組織大體積量三維數據的數據格式標準,比如在位圖界的jpg格式一樣,只不過i3s是“標準”,目前由slpk格式的文件實現,內部采用json文件來描述數據,使用二進制文件(格式為.bin)來存儲三維地理數據。
????i3s標準將三維地理數據切分,用“節點”的概念組織起來,然后這些節點被有序地寫在“節點頁”中。將三維地理數據組織起來后,可以放在服務器上通過REST接口訪問。
Node_SLPK_Server介紹
i3s服務目前一般是由Portal for ArcGIS 和 ArcGIS Serve生成發布的,Node_SLPK_Server則是使用開源的方式來發布i3s,使得我們可以方便快捷的訪問三維服務。但是項目有一些問題,目前ArcGIS API for JavaScript 4.19并不支持。
Node_SLPK_Server改造
首先要知道項目里是什么內容,看過源碼可以發現,其實項目主要就是通過發布rest讀取slpk內部文件。使用nodejs重寫原來的python代碼
看看建筑物類型的slpk文件結構
場景類型slpk文件結構
ArcGIS API for JavaScript三維服務加載研究
三維服務加載步驟是先請求slpk的描述文件3dSceneLayer.json.gz,這樣子就可以獲得一些模型類型范圍之類的描述信息。得到描述信息以后就是請求slpk文件數據了,只要根據請求的路徑找到slpk中對應路徑的文件
遇到的問題
場景圖層中有要素圖層數據請求還不知道寫入什么數據,并發問題目前還有待解決
slpk展示
結論
還有一些不盡人意,不過已經能實現Buildingscenelayer,3DObjectscenelayer,Integratedmeshscenelayer Pointscenelayer四種三維圖層,總體每個文件加載時間在兩百毫秒內
參考資料:
https://www.cnblogs.com/onsummer/p/12082584.html
https://github.com/Esri/i3s-spec
https://github.com/CrashedBboy/Quick_SLPK_Server