作为GIS界的小卒,常常会想这样的问题,“为什么我们不用google地图啊,我看它的3D很好啊”,“OpenLayers 6支持3D吗?”,“MapboxGL 2.5D与Cesium的3D优缺点是啥”,“地图不是球,这不是3D的啊?”,“51 World基于游戏引擎与云渲染技术在可视化领域已经对WebGL形成降维打击,WebGIS是不是没前途了?”……诸如此类问题层出不穷却又不是三言两语能讲清楚的,所以本文想稍微系统点介绍WebGIS发展历程、各自特点、未来方向,一家之言仅供参考。

二 地图API分类

WebGIS系统通常都围绕地图进行内容表达,但并不是有地图就一定是WebGIS,所以有必要讨论下基于Web的地图API分类及应用场景。Web上的Map API主要分类如下5大类:

Charts类型在各种业务页面或后台管理页面很常见,适用业务场景是地图非页面表达的主体,且几乎没有交互,页面中同时还有其他各类主题,示例如下:

webgis研究现状(WebGIS引擎的现状与未来)(1)

charts地图业务场景

LBS(基于位置的服务)广泛应用于互联网类ToC应用,在这个时代人们的衣食住行与这些地图网站、地图APP及其背后的地理信息服务日益紧密。LBS必须要在连接互联网场景中使用,只能使用地图服务商提供的数据和服务,最多支持自定义用户标记若干兴趣点的简单操作,2G、2B场景如内网离线,复杂企业级地理数据展示分析等几乎无能为力。

webgis研究现状(WebGIS引擎的现状与未来)(2)

LBS地图应用场景

WebGIS通常面向复杂业务场景,通常是内网离线的2G,2B定制化应用。与Charts不同,此类应用以地图为表达中心,所有的UI都是与地图交互和联动为目的;与LBS 2C的单一需求不同,此类应用需要自建空间数据库与空间数据服务以支撑前端空间数据的维护,复杂的业务交互,个性化的主题可视化等目的。现代WebGIS引擎种类也非常多,都是Html5时代发展的阶段性成果,各自也有侧重点和合适的业务场景,具体下文阐述。

三 WebGIS发展历程

WebGIS发展以Html5标准确立为分水岭分为前H5时代与H5时代,如果以发展的眼光看,当然也有后H5时代。之所以要本节要介绍发展历程,是因为现代的WebGIS引擎的出身和适用场景与其息息相关。

前H5时代是Flex,JS,Silverlight“三驾马车”时代,这个时代JS还没有取得优势,产品都以Flex为首推,以ArcGIS的Flex API(也有JS版)和开源的OpenScale(openlayer2 是其JS版)为代表,具体不细阐述,主要产品如下图:

webgis研究现状(WebGIS引擎的现状与未来)(3)

随着时代发展,移动互联网的崛起,H5标准的发布,新的技术变革势不可挡。在2010年乔布斯宣布iphone不支持Flex后,这项技术就开始了落幕演出,H5技术及其主力语言JS获得一统前端的地位,很多基于H5标准的WebGIS引擎纷纷入场,WebGIS H5时代开启,引擎发布大事记如下:

从发展历程看,总结了如下几个特点:

四 WebGIS引擎各自特点与适用业务场景

仅作简要阐述,不再展开细谈了。

在WebGIS 3D领域,比较有争议性的是cesium与mapboxgl,简单来说,两者都是二三维一体化的GIS引擎,但产品侧重点不同 ,Cesium追求的三维功能全面,Mapbox追求用户体验:

webgis研究现状(WebGIS引擎的现状与未来)(4)

对于Cesium的API用户来说,加载倾斜摄影,点云数据,地形数据都是直接调用引擎API就可以了,即使不懂WebGL也很快能做个三维的地图样子,当然高级开发者还会基于WebGL开发自定义高级显示效果。

对于Mapbox的API用户来说,2.0版本之前三维不足,主打的二维的矢量切片技术,并且切片加载机制导致倾角太大性能很差,因此引擎限制了最大倾角为60°,看起来就很像2.5D的东西。类似Cesium的三维功能只能依靠Deck.gl等库去集成,万幸的是引擎开放了自定义WebGL图层功能,高级开发者可以定制自己的三维图层,但坑爹的是没有三维相机参数需要自己源码扩展。2.0版本之后新增的地形3D展示,三维开发需要的相机参数,地图倾角限制从60°改成85°,比较有三维感觉了,效果辅助和性能优化方向考虑的Sky API等,显示了MapboxGL开始在三维方向发力,但仍然没有在官方API层面支持倾斜摄影的3Dtiles,点云等,不熟悉WebGL的开发者使用仍然很困难。除此以外,值得警惕的地方是2.0的开源协议从商业友好的BSD-3改成了Mapbox自己的使用协议,无论是否使用Mapbox资源强制进行在线token计数,等于完全放弃了内网用户(不联网没法计数等于没法用),因此从安全和商业应用开发角度,请不要升级到2.0,保持在1.13版本进行企业定制化开发。

虽然两者都是二三维引擎,但是如果认真看他们的三维功能都是很少的几个常用场景,绝大部分业务场景和特效都需要高级开发者定制,也就是说,如果不熟悉WebGL,实际上是很难满足地理信息可视化的要求的。

总的来说,虽然mapbox更改了使用协议,但不否认它仍是家伟大的公司,在现有的技术体系下,开创性的提出数据用矢量切片技术,图标用sprite(互联网应用场景的同学很熟悉,减少网络请求的优化,合并的图标纹理减少webgl渲染的调用命令次数),字体用字体pbf切片,就是怎么极致优化怎么做,强大的技术流风格。在此分享下个人用mapbox定制的一些二维,三维应用效果:

webgis研究现状(WebGIS引擎的现状与未来)(5)

矢量切片的时序播放

webgis研究现状(WebGIS引擎的现状与未来)(6)

三维等值面

webgis研究现状(WebGIS引擎的现状与未来)(7)

三维体渲染

五 后H5时代的技术变革

H5时代涌现了很多令人赞叹的GIS引擎,但是也有很多问题,三维效果差强人意,三维模型又受制于网速,只能说有功能,但难以说有好的功能。随着用户对可视化要求越来越高,人们开始思考别的技术方向,例如最近51World搞出了利用C端游戏引擎做GIS,可视化效果通过流媒体传到前台显示的“云渲染”技术,不得不说这是个很投巧的做法,所谓游戏引擎对GIS可视化引擎的降维打击。

webgis研究现状(WebGIS引擎的现状与未来)(8)

webgis研究现状(WebGIS引擎的现状与未来)(9)

webgis研究现状(WebGIS引擎的现状与未来)(10)

webgis研究现状(WebGIS引擎的现状与未来)(11)

webgis研究现状(WebGIS引擎的现状与未来)(12)

有不少GIS大牛认为云渲染是次时代的GIS可视化技术,我个人认为并不是,51World的做法是业务创新而不是实质技术上的创新,并不会形成技术护城河,随着专业GIS公司超图和ESRI的介入很快会失去它目前形成的开创性优势,也就是“投巧”的技术门槛实在太低。另外一方面,云渲染应用面过于狭窄适合无并发无交互的大屏可视化,不具备应用普适性。

除“云渲染”外,近期WebAssemble和WebGPU是另外两个值得关注的发展方向,如果我们把时间线后移4,5年,在后H5时代的WebGIS会形成新的三足鼎立:

webgis研究现状(WebGIS引擎的现状与未来)(13)

以下对三个方向做个技术说明:

原理:C端使用游戏引擎做数据可视化,可视化的结果通过视频流传到客户端显示。

优点:游戏引擎比较成熟,效果好,三维大量数据,美术资源等不用传到客户端。

缺点:完全放弃日益先进强大的客户端计算资源(摩尔定律),完全依靠服务器资源,导致服务器资源投入很大,如果有高并发,起码得有分布式GPU计算引擎吧?所以不可能广泛应用,业务场景很小,只适合大屏可视化目前。

原理:能让c ,rust等高性能语言写的功能以wasm形式在Web端应用,弥补JS性能的缺陷,(经过谷歌V8引擎优化,JS的性能也是直逼后台,缺陷有点牵强,而且前端计算可以使用GPGPU,WebWork等技术在gpu,在多线程非阻塞计算)当然更主要的用处是有利于原先C端图形软件如CAD,GoogleEarth搬到BS上,例如GoogleEarth的BS版已经实现了。

优点:可以用高性能语言写的算法应用到前端改进JS的算法(牵强,实际投入产出比不大对绝大部分公司),大量的后端程序员开始进入前端搞事情,前端不再是JS程序员的前端(从性能方向考虑甚至产生是否WebAssemble会取代JS的疑问)。

缺点:WebAssemble不能操作dom,因此它只是一个补充,给前端留个“后路”而已,并没有取代JS的能力也没有这样的定位。另外业务应用场景非常狭窄,只适合有成熟C端图形产品搬到BS,对一般业务产品冲击不大。从公司角度如果没有C端成熟图形产品就不值得投入,从程序员个人角度,如果是JS程序员可以直接无视,这种技术不会对你产生任何影响,如果是后端程序员,可以兴奋起来,你可以去前端玩玩了。。。

原理:下一代Web图形引擎,WebGL的替代者,业务场景就是现在用WebGL的地方,将来也都是WebGPU应用的场景。

优点:BS端的图形引擎与C端几乎一致(差半代),可以设想很多原先只有C端能做的酷炫效果B端也能做。(WebGL与C端差了好多代了,所以没法做出能追上C端效果的东西)

缺点:目前正式标准还没发布,那么基于WebGPU的图形,GIS引擎当然也没有了,就算有了,酷炫效果也不是GIS API这种,更多是图形学领域,大部分目前的业务API开发者会失去竞争力。

六 思考与建议

从H5时代的web发展来看,如果不懂图形学原理,就算使用了WebGL的GIS引擎是做不出符合业务发展的东西来的,顶多加加地形加个建筑做做项目而已,稍微个性化的展示都做不了。从后H5时代来看,一方面可能C ,Rust等技术会更加如鱼得水,那么依靠JS的程序员和依靠JS实现可视化的公司只能抱紧WebGPU的大腿,要在图形学领域持续进行技术投入,纯调用API实现效果的时代一去不复返了,更加先进的图形引擎与更加灵活的渲染管线,再与更加个性化的业务展示要求结合与促进,会产生新的思想碰撞和化学反应,如果个人和公司跟不上,那么在下个时代,才真的是遇到”降维打击”了。

地理可视化(尤其3D)的未来并不属于GIS,而是属于图形学,所谓万变不离其宗。

,