查看原文
其他

比Cesium更懂GIS的3D框架VTS Geospatial~

深度抑郁患者 GIS小丸子
2024-09-03

最近在看Esri 2019年的一篇题为《Advancing open 3D: New layer types and capability in I3S》的产品博客,其中作者提到目前I3S已经成为一个标准体系,同时也出现了一些完全不依赖Esri的技术就可以进行I3S数据生成以、服务以及前端使用的技术栈,比如欧洲的Melown Technologies 的 VTS Geospatial,但是在目前的国内一些技术选型的时候似乎很少提到该团队的这个技术栈。

作为3D Geospatial领域的后来者,这个团队似乎一开始就把超越Cesium作为了自己的目标,为此还专门做了一个《battle of 3d rendering stacks》的开源仓库,利用同一份数据(如下图)来对比VTS和Cesium在可视化效率上的对比,其核心的观点是Cesium的效率比较低,只有不操作的时候才能控制的比较好。

通过对两个框架对同一份数据的加载体验来看,目前这份数据的面积还比较小,很难直观的感受出二者之间的差别,在数据加载完成后,其实在体验上的差别不是特别明显,后来我又看了使用Esri JS API加载的情况,其实效率也是差不多的,更加深度的体验需要待将该框架的前后台都搭建起来,使用城市一级的数据量来测试,这样差别应该会比较明显。

当然最重要的是,Melown也采取了和Cesium类似的商业模式,就是针对云服务进行收费,但是VTS 服务端以及前端以及Unity的插件版本也都是也是开源,大家可以在GitHub上直接找到相应源代码的仓库。同时也会发现一个很有意思的趋势,目前技术型产品逐渐都在采用开源策略,然后采用对云服务或者深度定制进行收费服务的模式。

尤其是这种SDK类型的技术开发产品,其面对的核心对象就是开发人员,一个产品想要快速的赢得用户,也就是程序员的信任最好的方法就是采用开源的策略,“晾晒”出代码的背后就是对用户的承诺以及对自己技术本身的自信。

一个小型的技术团队如果同样采用闭源授权的做法其实在一开始是很难撼动巨头的垄断的,但是通过开源来获取用户从而获得生存的空间,起码在流量以及份额上是可以站住脚的,然后通过云服务以及深度需求的支持其实是一个不错的途径。

虽然VTS的很多做法都是模仿Cesium,但是在很多技术的设计上,而这还是存在比较大的区别,之前Cesium给人的感觉就是对GISer很不友好,使用起来非常别扭,但是VTS的很多设计对GISer相对来说就友好很多,为了方便大家更加直观的理解,技术方还专门做了一个功能差异的对比,尤其是第一点对于不同坐标系的支持就让很多人爱了,同时整个技术栈又花费了很多精力在不同格式数据的一致性融合上。

其实从下面的一张图可以完整的了解VTS的技术规划,他总共分为三个部分:

  • Streaming Servers

  • DataManagementTools

  • Rendering Libraries

1、在Streaming Servers方面,VTS 3D依然使用的是“客户端-服务端”的架构,后端有两个流式服务器 VTS Mapproxy 和 VTSD,Mapproxy负责实时将非VTS GIS格式的数据转换到VTS客户端可以直接使用的VTS 流数格式,比如surface、bound、layer和geodata。而VTSD其实也是一个HTTP服务器,但是功能比较简单就是为了传输静态瓦片数据集比如3D瓦片数据集。

2、VTS DataManagement Tools  其实针对的就是各种异构多源数据的处理,比如vts 工具就是为了把多种Tileset整合到一起,平时我们在前端加载多个3D数据集,其实每个数据集都有自己的一套调度和渲染的规则,而VTS是通过采用预处理的方式在厚度那就将这多种Tileset整合到一起,这样便于最小化数据传输以及渲染呈现的时间,这种合成的Tileset被称为”Glue”,如下图灰色瓦片依然使用原始瓦片数据集的数据,而如下白色和绿色的区域就是生成的glue瓦片,融合表达两个不同的表面。

另外一个类是Encoder数据集,该工具用于将外部的层次网格格式(比如VEF、I3S/SLPK、3D Tiles)转换到统一的VTS Tileset,当前已经包含有的工具包括vef2vts、slpk2vts、3dtiles2vts等。

除了三维的数据的统一和集成,VTS还针对Cesium一直没有集成的二维矢量瓦片进行支持,并以贴地的方式进行呈现,这样就保证了大面积二维矢量数据的集成以及调度。

3、在Rendering Libraries方面,VTS提供了三个版本的前端库:vts-browser-js、vts-browser-cpp、Unity插件版本。vts-browser-js是基于WebGL的,gzipped和minified之后总共大小176kB,远小于Cesium 577kB+Workers的大小。cpp版本的是真多桌面版和移动端的跨平台版本,而Unity插件版本则迎合了当前的主流,将自有格式以插件的方式接入到游戏引擎中,这个和其他几个厂商的方案是一致的。

总的来说,这个框架目前的用户数量以及维护活跃度都不是很高,最近的一次更新是在几个月之前,所以在进行使用的时候就要做好自己修改定制以及集成的准备。 

继续滑动看下一个
GIS小丸子
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存