基于Quick_SLPK_Server的NodeJs版I3S服務發布

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文件結構

image


場景類型slpk文件結構

image

ArcGIS API for JavaScript三維服務加載研究

三維服務加載步驟是先請求slpk的描述文件3dSceneLayer.json.gz,這樣子就可以獲得一些模型類型范圍之類的描述信息。得到描述信息以后就是請求slpk文件數據了,只要根據請求的路徑找到slpk中對應路徑的文件

遇到的問題

場景圖層中有要素圖層數據請求還不知道寫入什么數據,并發問題目前還有待解決

slpk展示

image.png

image.png

image.png

image.png
image.png

結論

還有一些不盡人意,不過已經能實現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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容