i3s是什么?
i3s標(biāo)準(zhǔn)是一種用樹結(jié)構(gòu)來(lái)組織大體積量三維數(shù)據(jù)的數(shù)據(jù)格式標(biāo)準(zhǔn),比如在位圖界的jpg格式一樣,只不過(guò)i3s是“標(biāo)準(zhǔn)”,目前由slpk格式的文件實(shí)現(xiàn),內(nèi)部采用json文件來(lái)描述數(shù)據(jù),使用二進(jìn)制文件(格式為.bin)來(lái)存儲(chǔ)三維地理數(shù)據(jù)。
????i3s標(biāo)準(zhǔn)將三維地理數(shù)據(jù)切分,用“節(jié)點(diǎn)”的概念組織起來(lái),然后這些節(jié)點(diǎn)被有序地寫在“節(jié)點(diǎn)頁(yè)”中。將三維地理數(shù)據(jù)組織起來(lái)后,可以放在服務(wù)器上通過(guò)REST接口訪問(wèn)。
Quick_SLPK_Server介紹
i3s服務(wù)目前一般是由Portal for ArcGIS 和 ArcGIS Serve生成發(fā)布的,Quick_SLPK_Server則是使用開源的方式來(lái)發(fā)布i3s,使得我們可以方便快捷的訪問(wèn)三維服務(wù)。但是項(xiàng)目有一些問(wèn)題,目前只能支持到4.13版本的ArcGIS API for JavaScript和1.7版本的slpk,新版本(1.7)slpk和ArcGIS API for JavaScript 4.18并不支持。
Quick_SLPK_Server改造
首先要知道項(xiàng)目里是什么內(nèi)容,看過(guò)源碼可以發(fā)現(xiàn),其實(shí)項(xiàng)目主要就是通過(guò)發(fā)布rest讀取slpk內(nèi)部文件
看看建筑物類型的slpk文件結(jié)構(gòu)
場(chǎng)景類型slpk文件結(jié)構(gòu)
ArcGIS API for JavaScript三維服務(wù)加載研究
三維服務(wù)加載步驟是先請(qǐng)求slpk的描述文件3dSceneLayer.json.gz,這樣子就可以獲得一些模型類型范圍之類的描述信息。得到描述信息以后就是請(qǐng)求slpk文件數(shù)據(jù)了,只要根據(jù)請(qǐng)求的路徑找到slpk中對(duì)應(yīng)路徑的文件
遇到的問(wèn)題
單文件如果太大,服務(wù)速度會(huì)變慢,為了更快的訪問(wèn)到,我需要通過(guò)i3s_converter.exe或者winrar把slpk文件解壓,然后這樣就不要訪問(wèn)大文件了。當(dāng)slpk版本比較老,可以用i3s_converter.exe進(jìn)行升級(jí)。并發(fā)問(wèn)題目前還有待解決
slpk展示
參考資料:
https://www.cnblogs.com/onsummer/p/12082584.html
https://github.com/Esri/i3s-spec
https://github.com/CrashedBboy/Quick_SLPK_Server