说到白银时代这个词,最近一段在房地产行业出现的频率比较高,回到GIS这个领域来说,其实也是适用的。GIS的可视化从二维到三维其实其实是一条必经之路。技术的发展是渐进迭代的过程,刚开始困于技术的限制无法直接到三维这一步,只能从二维开始,还产生了OGC的一系列二维的标准WMS WMTS WFS等,但是这些技术已经不能满足现如今的可视化需要了,对于目前可视化的需求我的总结是:大数据、大场景、大算力、强时效、高沉浸;level 0层面的理解就是性能要好,展示要炫、交互性要好;目前来看浏览器端三维这种能够直达用户的场景可视化有很迫切的需求,当然三维也只能是一段时间的产物,未来高沉浸感的AR 、VR应该是下一个阶段的形态,但这些还是需要有三维阶段的积累才行;
浏览器端的三维经过一段时间混乱的大发展后,现在市面上的引擎基本上都能够满足80%的需求,剩下20% 的差别也是各有侧重,这也是我理解的前端三维的白银时代,再这样的环境下我们再去从底层开发一个引擎的意义并不是很大,更多的应该是在现有的引擎基础上进行深耕,了解这些引擎的特点结合需求能够进行深度定制是比较好的一种做法。
前端三维的可视化一般分为图表可视化以及场景可视化两个类别(当然这是从一个giser的视角,有点片面, 因为gis眼里只有属性和空间数据两类,属性数据的可视化一般用的是图表引擎,而空间数据用则是gis三维引擎),当然这两个类别目前正在走向融合,echarts gl现在已经整合了不少地图,gis三维开源引擎中mapbox gl,CesiumJS,ThreeJS都是目前的佼佼者,目前的情况就是几个引擎的排列组合,互通有无。这里面不包含商业引擎,商业引擎的作用一般不是促进行业的发展,相反它会榨干整个行业,他们有强大的生态、很强的研发,完整的闭环,开源的都是散兵游勇,各自为营很难与他们匹敌,现在行业的现状就是这些商业巨头赚取了巨大的利润,辛辛苦苦做行业的只能咂么点汤,对于小公司来说拥抱开源、快速的进行框架整合补足短板,发展自己的特色很重要。其实单就前端三维引擎来说商业公司还没有取得特别的优势。以cesium为例,其本身的3d tiles已经解决了数据的加载问题(以我目前的经验来说一个园区的场景加载是没有问题的,1km左右),结合Echarts可以解决属性数据的可视化问题,对于这个组合来说面对的就是场景精模为驱动的项目。但是这个组合需要自己开发3d tiles生成工具。
还有一类应用就是地理场景范围内的统计可视化专题,这类的问题可以选择mapbox gl结合白模进行场景的统计表达,这一类应用做的比较好的就是uber的deck.gl,这个框架在mapbox gl的基础上结合luma.gl形成了独特的框架,目前来说效果很好;mapbox gl是我很喜欢的一个框架,整体很优雅,从代码风格、框架设计以及性能方面来说 ceisum简直就是个糟老头子,mapbox gl整体代码使用es6编写,使用统一的style配置来进行制图,框架原生支持矢量瓦片,尤其在面对大量空间数据的时候自动进行分块 化简结合,可以取得非常好的性能,并提供了很多实用的module,通过整合这些module,使用node可以很容易就能搭建一个服务端,而且这套方案是直接适用于extrude-fill类型的,可以说是很优雅的设计了。
最后呢 还是想提一下Echarts和Echarts GL,其实Echarts GL hack 了Echarts 然后扩展了支持三维的View,Echarts的设计遵循了MVC,理解起来很容易(我感觉可能跟人种有关,老外的思路老是感觉很清奇),以前Echarts只支持二维的,这部分的基础引擎采用的是zrender,这个引擎设计的也很精巧,而Echarts GL为了支持三维自己又开发了一个clay引擎,这个引擎的文档目前还没有公开出来,Echarts框架还是需要多花点功夫研究一下的。
唠嗑结束,撸代码啦,时间不多 很多地方说的很不严谨 没有系统的理论 见谅!