调研报告之三维WebGIS

标签: 无 分类: 未分类 创建时间:2024-09-14 09:41:14 更新时间:2024-11-23 10:24:26

1.前言

最近有一个项目就是要选择可用的三维地图开发框架,其实我所了解的,也就这么几个,为了写一篇调查报告,于是就写了这个文章。

  • 1.minemap
    是他们公司的产品,主要以earth的形态展示,支持矢量切片+倾斜数据。

  • 2.cesium
    一款开源的三维地图引擎,国内的大多三维GIS引擎大多基于cesium二次开发,其3dtile标准列入OGC,是唯一具有完备的渲染底层封装的GIS三维引擎库,完整的渲染模块,图元概念等。

  • 3.mapboxgl
    矢量切片的王者,也是矢量切片标准的制定者,mapboxgl最大的特点就是其矢量切片(包括其字体,真的是一绝)。

  • 4.deck.gl
    uber的一块三维地图引擎,其本身不具有渲染能力,渲染模块采用的是luma.gl。

  • 5.maptalk
    国内大神作品类似于mapbox,目前其扩展三维能力主要靠maptalk.three实现maptalk本身功能完备,其本身的渲染能力(切片、点、线、面)依靠的是regl。

  • 6.arcgis
    GIS领域的老大哥arcgis4.x以上的好像才有三维地球的概念,以前都是二维,好多年不用了,其倾斜数据标准是i3s也是OGC标准。

  • 7.vts-brower-js
    一块类似cesium的三维可视化引擎,以前一直不知道该引擎,看到github上面项目创建与5年前,但是提交很少。

  • 8.openglobus
    也是earth三维开源引擎,目前功能还不够完善,支持栅格和矢量数据,这个库给的感觉好像是openlayer的。

  • 9.itowns
    一款基于three.js的三维GIS渲染引擎(earth)

参考文章:
【1】.常见的WebGIS三维地图框架对比(Mapbox/Cesium) 相同点: 1.都可以实现3D地图渲染;2.都可以实现数据可视化;3.矢量和栅格瓦片;4.用户交护;5.插件和扩展性。不同点:1.功能差异;2.性能差异;3.使用方面;4.底层技术;5.数据支持。
【2】.WebGIS开发四大开源框架对比 这里简单的对比了 Cesium、Mapbox、OpenLayers还有 Leaflet的不同
【3】.谈谈GIS三维渲染引擎 这是上面的总结
【4】.地图巨轮转向:Cesium被Bentley收购,中小公司何去何从?
【5】.WebGIS引擎现状与未来 公瑾的一篇文章,讲了各种地图渲染引擎的对比及其有缺点,以及对于未来的地图渲染引擎的发展的一些思考,从这里我第一次看到了WebGPU这个东西,除了对比现在的OpenLayer、Mapbox、Leaflet等,我还看到了其实就是一个像智慧水务这样的宣传视频,做的真的是挺好的。

2.服务端渲染

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

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

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

2.1.DTS

DTS系列软件产品就是为了数字孪生城市提供完整解决方案,在虚拟世界里再造一个数字城市。

Explorer是DTS平台软件中直接面向最终用户的一款桌面端产品,产品定位就是成为三维可视化的利器,核心优势就是用户体验,把性能、效果和易用性都做到极致。

DTS平台软件产品主要针对的是拥有大量城市级三维数据的客户群,包括实景三维数据、激光点云数据、手工建模数据,通过Explorer可以快速融合各种数据。

产品定位:BIM / CIM三维可视化利器,把性能、效果、易用性和交互性都做到极致,追求完美的用户体验,给客户提供从原始数据到最终三维呈现的完整解决方案。

客户群体:涉及 BIM / GIS / CIM的各领域用户;需要可视化的数据类型包括矢量栅格、激光点云、倾斜摄影、BIM、手工模型等;尺度从城市、园区到楼宇,从地上、地下到室内;涉及从招商、规划设计、施工建造到运维管理的全生命周期,所有相关客户对三维可视化的用户体验都有强烈的痛点和明确的需求。

参考文章:
【1】.Freedo DTS 元空间 新生活

2.2.数字冰雹

数字冰雹基于核心可视化数字孪生技术,面向开发者和用户,打造了完整的技术支撑体系——数字孪生城市编辑器(Digital Twins Editor)、数字孪生云平台(Digital Twins Cloud)、数字孪生开发包(Digital Twins API)、数字孪生应用编辑器(Digital Twins Workshop),帮助开发者快速完成专业级数字孪生可视应用的快速构建,数字冰雹愿为合作伙伴全业务体系赋能!

数字冰雹数字孪生城市编辑器(Digital Twins Editor),是基于真实地理信息,集合物理世界各种要素,通过计算机实时渲染生成可交互三维全要素仿真场景的专用产品。产品具备友好易用的配置环境、全面的可编辑属性,便捷的生成发布功能,支撑大规模复杂三维场景的快速构建,可广泛应用于各行业数字孪生应用。

数字冰雹数字孪生云平台( Digital Twins Cloud)是为数字孪生应用提供一系列云服务的专用产品,包括云渲染服务、模型托管服务、开发包托管服务、应用托管服务、数据服务、系统服务等,具备稳定可靠、弹性扩展、完全托管等特点优势,为数字孪生全要素场景提供全面高效的服务器端部署解决方案。

数字冰雹数字孪生开发包(Digital Twins API),是负责交涉Web页面和渲染平台之间的编程接口,用于在WEB应用中调用云渲染服务的场景动作,完成B/S架构下的三维场景互动,进行双向交互。具备双渲染内核支持,兼容当前主流的JavaScript前端框架, 为前端开发人员提供快速便捷的开发接口。

数字冰雹数字孪生应用编辑器(Digital Twins Workshop),是以B/S架构为基础,围绕数字冰雹数字孪生全要素场景,帮助用户轻松快速构建专业级可视化数字孪生应用的专用产品。原生兼容云上云下多源异构数据,具备丰富全面的可定义对象属性,支持二次开发、部署发布等功能,可广泛应用于构建各细分行业数字孪生解决方案。

数字冰雹多年来深耕可视化技术领域,具备成熟完善的技术平台和丰富的行业实施经验,形成了一系列行业数字孪生产品,成功应用于智慧城市、园区、公安、交管、监所、电力、应急管理、航天战场等多个领域,帮助各行业管理者提升智能化决策能力和效率。

参考文章:
【1】.数字孪生核心技术

2.3.51Wrold

(1)基于时空数据定制专属L2Max、L3SE三维数字底座

(2)支持15种格式行业三维模型快速转换与极致还原

(3)开放用户自主生成L2 Max、L3 SE城市底座

(4)AI智能补全,数据要素更全面,空间表达更完整

(5)基于海量数字资产与用户模型的快速创作

(6)支持高精度三维模型自主导入和自由摆放

(7)非线性编辑孪生场景创作高效、自由、灵活

(8)基于用户成熟前端开发框架自主拓展

(9)支持PPT式轻松上手无代码界面开发

(10)预设官方案例和面板模板快速触达用户

(11)海量数字孪生场景互动接口满足多样应用需求

(12)Web端SDK低门槛集成开发高效、成本可控

(13)支持私有化管理,数据安全无忧

(14)云端访问降低硬件投入费用

(15)多种混合部署方式跨平台特性

参考文章:
【1】.51world 51world官方介绍

3.客户端渲染

参考文章:
【1】.mapbox和cesium的区别 这里简单的结束了两个的区别,技术架构、功能特点、应用场景
【2】.Cesium & Mapbox 详细对比,谁是你的菜? 性能:包大小、初始化耗时、内存占用、渲染帧率,用户操作,美观度还有学习成本等做了比较。mapbox 适合更轻量的应用场景,对 3D 场景的渲染会有更好的性能体验。cesium 更适合复杂的 3D 场景,因为其对 3D 的支持更加全面。
【3】.[mapbox升级后不再开源](https://blog.csdn.net/qq_52231465/article/details/133281111)

1.Cesium

WebGL渲染机制,二三维一体化,经纬度坐标系,支持球,明星数据格式是3DTiles,特点是唯一开源的WebGIS三维引擎,缺陷是卡,体验差,地图丑,原因应该是为了支持球,所有的平面瓦片都要进行纹理转换贴球,计算量偏大,最新的矢量切片也是变成图片再纹理转换到球上,栅格化严重一点都不精美,可以说为了球,牺牲了太多性能和地图美观度,适用于Web强三维应用场景。

Cesium 是一个基于 WebGL 技术开发的3D地球框架,它提供了创建实时、交互式3D地球应用程序的各种API、SDK、地球数据等工具。

Cesium 适用于创建和展示大规模的3D地球数据和模拟,如地球科学和宇宙探索、军事飞行模拟、城市规划、建筑设计等。Cesium 提供了先进的3D渲染技术、支持各种地球数据的混合和按需加载、面向开发人员自己编写的复杂场景的灵活度大。

CesiumJS支持3D地球、地形、建筑等的可视化,提供丰富的地理数据格式和服务支持,具有强大的时间动态性能,可以实现时间轴、动态数据可视化等功能。

CesiumJS在处理大规模的3D地理数据和动态效果方面表现出色,具有较高的性能。它利用WebGL技术进行硬件加速渲染,并支持大规模数据的可视化和交互。

CesiumJS和Mapbox GL JS都使用WebGL作为底层技术,但它们的实现方式有一些不同之处。但是CesiumJS使用渲染引擎,将地球表面、地形和其他地理要素以及各种数据可视化效果呈现在Web浏览器中。CesiumJS使用自己的渲染引擎来实现地球表面、地形和其他地理要素的渲染。它使用WebGL来进行底层的图形渲染,并且提供了高级的渲染功能,例如大规模地面纹理、基于图块的瓦片贴图等。

CesiumJS和Mapbox GL JS在数据源的支持和集成上也有一些差异。CesiumJS可以从各种数据源加载地图数据,包括3D地形数据、影像数据、KML文件、GeoJSON等。它还提供了对WMS、WFS和ArcGIS服务的支持。

CesiumJS的API设计更加面向三维地球和场景的构建,提供了丰富的地理计算、3D模型加载、相机控制等功能,并且非常适合构建全球规模的地图应用。

2.Mapbox-gl

WebGL渲染机制,二三维一体化,墨卡托坐标系,不支持球,明星数据格式是矢量切片,特点是最具美感的专题地图,缺点是没有球,最新2.0必须联网验证token,适用于互联网场景复杂地理信息表达,内网追求地图可视化效果的也适用,Mapbox很多优化都是基于互联网场景的。

Mapbox 是基于矢量地图渲染技术和 WebGL 技术开发的,支持2D和3D渲染。它提供了开发地图应用程序和可视化数据的各种 API、SDK、地图样式和图层等工具。

Mapbox 适用于快速设计和启动交互式 Web 地图,特别是面向商业领域的应用,比如散户定位、地理信息分析、店铺规划,路线规划等。它提供了大量的地图样式、地图数据和 API,可以让开发人员非常方便的创建和定制地图。此外,Mapbox 还提供了实时卫星图像、实时交通、导航和地理信息可视化等功能。

Mapbox GL JS支持2D和3D地图的可视化,并提供了丰富的地图样式和交互功能。它具有灵活的样式定制能力,可以实现自定义的地图样式和符号化。

Mapbox GL JS也具有良好的性能,尤其在2D地图渲染方面表现出色。它采用矢量地图渲染技术,可以高效地渲染大规模的矢量地图数据。

Mapbox GL JS同样使用WebGL来实现地图渲染,它主要专注于绘制矢量图层。Mapbox GL JS使用WebGL来进行渲染,但其重点是将矢量数据转换为绘制指令,并使用GPU来高效地呈现矢量地图图层。将矢量瓦片数据渲染为平滑的地图图层,并通过硬件加速来提供高性能的地图浏览和交互体验。

Mapbox GL JS主要专注于Mapbox的数据源,它可以无缝地与Mapbox的矢量瓦片数据集成。此外,它还可以加载其他数据源的矢量地图数据,例如GeoJSON和TopoJSON等。

Mapbox GL JS的API设计则更专注于矢量地图的渲染和交互,提供一套简洁而灵活的API,以便开发者可以使用Mapbox样式规范自定义地图样式,并且还提供了丰富的交互和控制选项。

3.maptask

Maptalks是一个开源 JavaScript库,用于创建具有地图项目基本功能的集成2D/3D地图。

Maptalks通过Web标准将数据带入地图,使用Canvas,WebGL和其他技术,如SVG/CSS/HTML,现代浏览器的全部功能。

很容易扩展。您可以添加新功能作为插件,如添加新方法,创建新层或交互等。

4.Arcgis

ArcGIS API for JavaScript是一款用于构建WebGIS应用程序的JavaScript库。它提供了丰富的地图和地理信息处理功能,可以通过Web浏览器与ArcGIS平台进行交互。需要明确的是,ArcGIS API for JavaScript并不是开源的。它是由Esri(Environmental Systems Research Institute)开发和维护的商业软件。这意味着,虽然它是免费提供给开发者使用的,但不能查看其源代码或对其进行修改。

ArcGIS API JS 4,对标Cesium,明星数据格式是I3S,也有类似Cesium的问题,但由于有ArcGIS平台的体系支持,应该功能最强大,但是如果不采购这个平台体系,纯API很鸡肋,适合采购了商业平台的用户,如政府采购再定制应用方式。

1.地图显示:可以加载和显示各种类型的地图数据,包括矢量数据、栅格数据和影像数据。可以自定义地图样式、添加标记、绘制图形等。
2.地理空间分析:可以进行空间查询、缓冲区分析、路径分析等地理空间操作,帮助用户进行地理数据的处理和分析。
3.交互式控件:提供了丰富的交互式控件,如缩放控制、导航工具、图层切换等,方便用户进行地图操作。
4.数据可视化:支持将数据以各种方式可视化,如热力图、聚类图、符号化等,帮助用户更好地理解和展示地理数据。
5.扩展性:ArcGIS API for JavaScript可以与其他JavaScript库和框架集成,如React、Angular等,方便开发者根据自己的需求进行扩展和定制

5.Supmap

以二三维一体化 GIS 技术为基础框架,进一步拓展全空间数据模型及其分析计算能力;更全面地融合倾斜摄影模型、BIM、激光点云、三维场、地质体等多源异构数据,制 定 开 放 的《 空 间 三 维 模 型 数 据 格 式 》( S 3 M ) 标 准 、《空间三维模型数据服务接口》标准,完善三维 GIS 标准体系;基于分布式地理处理工具实现手工建模数据、BIM、倾斜摄影模型、激光点云、地形等三维数据的高效全流程管理;集成 WebGL、虚拟现实 (VR)、增强现实 (AR)、游戏引擎、3D 打印等 IT 新技术,推动构建室外室内一体化、宏观微观一体化与空天 / 地表 / 地下一体化的数字孪生空间,赋能全空间的新一代三维 GIS 应用。

参考文章:
【1】.新一代三维GIS技术体系

4.总结

(1)性能
服务端渲染借助于服务端强大的GPU性能,不依赖于客户端,具有较好的性能。在客户端渲染方面,更多的依赖于浏览器电脑性能,相比较Cesium来说,mapbox在性能上稍微更强一些,地图加载速度较快。

(2)费用
服务端渲染技术根据不同的厂商,费用也不同,通常会捆绑其服务端软件,桌面端软件进行同步售卖,除去硬件成本,二次开发也需要购买许可,可以按年购买,也可以永久授权,少则几万,多则十几万。mapbox最新版修改了开源协议,改成了 Mapbox 自己公司的协议,即便是不使用 Mapbox 服务也必须增加 Token 验证,不利于内网和本地部署,当然也可以绕过此限制。Cesium为开源产品,相关资料也较多。

(3)易用性
服务端开发大部分都是各个公司独立开发,技术体系为视频流推送形式,每个公司各不相同,DTS、51World以及SuperMap等都不通用,需要单独学习和开发。mapbox设计API更加合理,多数代码集中在 addLayer 、addSource 等操作,上手较为容易,相对来说Cesium就更加度复杂,代码写起来也不方便,不利于新手。

(4)并发量
服务端渲染受限于服务器GPU资源,通常并发量不是很大,如果需要多人同时操作,那就需要增加相应的GPU,内存等资源。相反的客户端渲染,因为依赖于客户端的浏览器,每个客户端互不影响,对服务器资源要求也较低。

(5)美观度
服务端渲染为游戏引擎设计,材质、灯光和场景等都会精细打磨,可以实现很多客户端渲染做不到的事情,模型相对更加精致。目前来看,虽然也有了WebGPU,但是各大厂商还没有完全大规模的采用和更新,还是基于WebGL进行的渲染,很多特效因为更加的耗费资源,也就无法做到,客户端渲染场景就比较粗糙。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。