Cesium 加載 ArcGIS 的 PBF 矢量切片服務(wù)
矢量切片(Vector Tiles)
在 Cesium 中,我們使用的地圖服務(wù)均為傳統(tǒng)的柵格切片服務(wù)。即在服務(wù)端渲染好圖片并進(jìn)行切片,客戶端請求獲取圖片后直接顯示。
而矢量切片則有別于傳統(tǒng)的柵格切片,它在服務(wù)端切片存儲的是矢量數(shù)據(jù)的描述文件,最終的渲染在客戶端完成。
事實(shí)上矢量切片技術(shù)目前已成為互聯(lián)網(wǎng)地圖的主流技術(shù),無論是 Mapbox 還是高德地圖、百度地圖,如今打開控制臺看到的數(shù)據(jù)源請求不是當(dāng)年傳統(tǒng)的一張張圖片切片,而是經(jīng)過壓縮的二進(jìn)制數(shù)據(jù)。
矢量切片的特點(diǎn):
- 客戶端渲染:由于服務(wù)器只存儲二進(jìn)制的矢量數(shù)據(jù)和樣式文件,所以渲染的任務(wù)會落在客戶端上。因?yàn)閷τ趧討B(tài)服務(wù)而言,可以極大的減小服務(wù)器的壓力(不需要服務(wù)端實(shí)時渲染)。對于切片數(shù)據(jù)而言,修改樣式不再需要重新切片。并且在數(shù)據(jù)傳輸中保密性會更高,不容易被爬取。但是相反,會增加客戶端的渲染壓力。
- 瓦片更小:矢量瓦片的大小通常會遠(yuǎn)小于柵格柵格瓦片,可以使得數(shù)據(jù)傳輸更快以及使用更低的帶寬。
- 允許多套配色方案:矢量切片的渲染效果由樣式文件的內(nèi)容決定,通過定義不同的樣式文件,能夠?qū)崿F(xiàn)切換多套配色方案。
- 不需要很高的切片層級:由于服務(wù)端返回的是矢量數(shù)據(jù),因此客戶端可以繪制很高精度的地圖,不需要通過提高切片的層級實(shí)現(xiàn),能夠極大的減少服務(wù)器的存儲壓力。
Cesium 支持矢量切片
Cesium 支持矢量切片服務(wù)的 Issues Vector Tiles #2132 在 2014 年就已經(jīng)提出了,但一直沒有得到官方的支持。
在民間,也有其他的解決方案,但大多都是利用 MapBox 或者 Openlayer 來渲染矢量切片來實(shí)現(xiàn)。如果單單為了支持矢量切片來說,這樣實(shí)現(xiàn)太重。
因此經(jīng)過研究,本人實(shí)現(xiàn)了一個極其輕量級的渲染方案,幾乎相當(dāng)于純原生實(shí)現(xiàn)。
主要實(shí)現(xiàn)思路就是請求PBF、解析并根據(jù)樣式文件將PBF上的內(nèi)容繪制到 Canvas 上。最后利用 Cesium 的影像渲染機(jī)制渲染出來,目前情況如下:
- 主要適配 ArcGIS 發(fā)布的 PBF 矢量切片(國內(nèi)使用最多,但是在 Cesium 中沒有很好的支持方案)
- 支持 ArcGIS 中定義的樣式文件(允許自己額外添加規(guī)則)
- 具備緩存機(jī)制(請求過的 PBF 文件不會重復(fù)請求)
- 允許渲染超過切片層級的瓦片(如切片到 14 級,但是客戶端能一直渲染到 26 級)
- 支持 4326、3857、4490 坐標(biāo)系
- 支持渲染精靈圖
實(shí)際效果
Cesium加載ArcGIS發(fā)布的PBF矢量切片服務(wù)文章來源:http://www.zghlxwxcb.cn/news/detail-452729.html
原文鏈接
Cesium 加載 ArcGIS 的 PBF 矢量切片服務(wù)文章來源地址http://www.zghlxwxcb.cn/news/detail-452729.html
到了這里,關(guān)于Cesium加載ArcGIS的PBF矢量切片服務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!