WEB 三维引擎在高精地图数据生产的探索和实践

简介: 高精地图(High Definition Map)作为自动驾驶安全性不可或缺的一部分,能有效强化自动驾驶的感知能力和决策能力,提升自动驾驶的等级。对于自动驾驶来说,高精地图主要是给机器用的,但是在制作和分析过程中依然需要人能够理解。本文将为大家简单介绍下,在过去的一段时间里高德高精地图业务团队,在WEB三维引擎技术方面的一些探索和实践,如何让复杂抽象的地理数据呈现在人们面前,满足其业务编辑和分析的诉求。


1. 前言


高精地图(High  Definition  Map)作为自动驾驶安全性不可或缺的一部分,能有效强化自动驾驶的感知能力和决策能力,提升自动驾驶的等级。对于自动驾驶来说,高精地图主要是给机器用的,但是在制作和分析过程中依然需要人能够理解。本文将为大家简单介绍下,在过去的一段时间里高德高精地图业务团队,在WEB三维引擎技术方面的一些探索和实践,如何让复杂抽象的地理数据呈现在人们面前,满足其业务编辑和分析的诉求。


高精地图主要是对道路交通层对象(如:车道地面标线、交通灯、交通牌、防护栏、杆等)的精细化表达,包含其几何位置和属性。由于对精度要求极高,它的制作主要还是依赖激光点云,通常都是海量的数据,一个路口的点云量就可能上亿,这就对渲染引擎的性能有较高要求,要满足对海量点云实时渲染拾取编辑


起初,我们调研了市面上主流的Web三维地图引擎:Mapbox、Cesium、JS   API、L7等,它们普遍对点云的加载处理能力支持不够,偏向于对抽象的点、线、面表达,精细化渲染能力不足,同时也满足不了作为编辑工具对复杂Topo关联关系的编辑能力。对于高德高精数据编辑分析的业务场景,需要更多的底层抽象能力建设。于是,我们在高精业务中开启了三维引擎eagle.gl的探索实践之路。


先通过一个视频简单了解下目前高德三维引擎eagle.gl的能力,它实现了一套2/3D统一的地图数据编辑和可视化解决方案,具备很好的可扩展能力,目前已应用在高德高精地图数据生产、数据分析、以及新基建项目等业务。


image.png

Figure 1.1 高精地图渲染引擎能力展示


2. 引擎方案设计实现


基于上面的分析,我们需要实现一套满足高德业务场景需求的数据制作引擎能力。为了不重复造轮子,最大程度利用已有的开源能力,我们最终选用Threejs当作渲染层框架依赖。基于该框架,在上层构建GIS可视化和复杂编辑能力,最终实现构建一套2/3D一体化渲染引擎。同时面向未来智慧城市、5G  IOT方向,构建数据团队面向业界看齐的GIS 3D可视化能力。


image.gifimage.png

Figure 2.1 面向高精地图的2/3D一体化数字引擎


整个引擎工作可以拆分为三个部分(点云地图、矢量地图、模型地图),前端团队整体工作需要围绕这三个点去展开。


  • 点云地图:对接多种点云资料格式的可视化(las/laz/bc/xbc/rds/bin),支持海量点云的实时渲染和编辑,满足主产线对点云资料的作业吸附能力。

  • 矢量地图:主要对接在线生产产线矢量化成图能力,通过数据快照、命令行编辑模式、空间数据索引等能力实现矢量化3D数据的增删改查能力。

  • 模型地图:主要面向数据成果应用层,进行数据预处理建模、实时建模编辑等,实现数据能力与高德客户端车道级渲染能力拉齐。


3. 技术解题


下面简单介绍一下各个核心模块能力。


3.1 全幅面精细化渲染

高精数据有着更精确更丰富的信息,支持更精细的数据渲染,更好地还原真实世界。


image.gifimage.png

Figure3.1.1 全幅面精细化渲染


高精原始的产出数据是矢量化骨架数据,这一层数据是真实世界的数字化的点线面抽象,怎么根据原始的矢量数据进行模型化渲染展示呢?原始矢量数据是面向自动驾驶等机器使用,为了能够更好的核实数据质量,进行数据问题调查分析,我们需要把点线面矢量数据进行建模渲染,达到最终模型化精细化渲染效果,方便人工进行快速的问题核实。


image.gifimage.png

Figure3.1.2 原始的矢量化数据成果


image.gifimage.png

Figure3.1.3 端上实时数据建模精细化渲染成果


为了支持精细化的渲染效果,eagle.gl引擎目前支持常用的点、线、面、体、文本、模型等多种可视化图层,并且通过配置化的方式实现了数据渲染实现。


整个建模渲染分为以下核心模块流程, 主体流程是原始点线面矢量数据拉取,根据规则进行数据解析,数据建模处理,数据合并和Instance处理,数据渲染。其中工作量最大的部分在于数据预建模处理,因为原始数据的表达更加抽象,为了更加真实的还原世界,需要做很多的逻辑计算,例如斑马线/导流带数据表述中只有外边的边框轮廓,为了渲染的更真实,需要根据数据的长短边规格和交通路网规范,进行过程中实时建模生成。

image.png

image.gif

Figure3.1.4 端上渲染建模核心流程


image.gifimage.png

Figure.3.1.5 斑马线原始几何


image.gifimage.png

Figure.3.1.6 斑马线建模后几何


通过同样的处理方式,我们就能够实现数百种高精数据定制化建模能力。但是好几百种数据规格如果通过硬编码的形式进行建模会导致整个代码结构的腐化和不可维护。因此我们在引擎层实现数据配置驱动地图图面样式展现的能力。

image.png

image.gif

Figure.3.1.7 多种高精数据建模成果表达


对于style的定义我们区分为两种类型,一种是基本的feature要素对应的展现行为,这层style目前定义为静态的style配置;另外一种style是tile数据源驱动的styleSchema,这种style会定义动态的属性以及空间场景、灯光等共有属性定义。


基础要素层对应的style我们主要分为以下几个类型:

IBaseStyle | ILineStyle | ITextStyle | IPointStyl | IPolygonStyle | IModelStyle | ICustomStyle


image.png

举个例子,我们用模型样式类ModelStyle,新增模型的样式定义,继承自IBaseStyle。


mapView.addDataLayer({
  id: 'model', // 图层id,id为唯一标识,不能重复
  style: {
    type: 'model',
    resources: {
      type: 'gltf',
      base:
        '//cn-zhangjiakou-d.oss.aliyun-inc.com/fe-zone-daily/eagle.gl/examples/assets/theme/default/model/',
      files: ['ludeng_0.glb'],
    },
    translate: [0, 0, 0],
  },
  features: [
    {
      geometry: {
        type: 'Point',
        coordinates: [[116.46809296274459, 39.991664844795196, 0]],
      },
    },
  ],
});

属性

置为灰色部分表示继承自BaseStyle属性

image.png

image.gif


ModelResource资源定义

image.gifimage.png


通过上面的API调用就可以实现模型数据的加载渲染。整个地图图面的全量要素表达都可以通过这种形式进行可视化描述。


image.gifimage.png

Figure.3.1.8 gltf模型如何通知配置样式进行定义加载

3.2 多源异构数据一体化渲染

对于HD的数据生产,点云和DEM高程分为对应采集和应用侧最核心的资料数据表达。作为引擎的特色能力,目前引擎实现了DEM高程渲染和多维度的点云着色能力,后续还会进行BIM/倾斜摄影等多源模型能力的接入,实现基于一张图进行宏观/微观一体化展示能力。


3.2.1 DEM高程渲染

image.pngimage.gif

Figure.3.2.1.1 DEM渲染效果DEMO


高精的数据是XYZ的三维数据表达,但是我们很多传统的路网数据都是二维的,如何实现多源矢量数据的混合叠加,我们采用接入DEM高程方案,把无高程的传统背景数据/路网数据拔投影到海拔高度。原始输入的为tiff图像文件,通过利用数据预处理进行QMesh渲染矢量生成,主体数据处理流程如下:

image.png

image.gifFigure.3.2.1.2 DEM数据渲染处理流程


QMesh渲染方案是Cesium推荐的现在及未来使用的地形切片格式,与Heightmap格式相比较,具有更高的性能优势和更小的数据存储。基于性能更优的QMesh几何处理方案,实现全国山体地形实时加载,同时支持在worker中进行地形实时细分,可以基于低级别三角面动态计算渲染至21级地形。

image.png

image.gifFigure.3.2.1.3 多源异构数据融合一体化渲染 - DEM高程方案


3.2.2 点云地图

点云作为高精特色的采集资料,与传统的照片资料相比,能够最大精度的还原真实世界的三维位置信息。为了实现真实世界的高度精细化描述,Web海量点云加载和渲染在我们日常工作中是非常重要的内容。

点云渲染的最大问题是海量数据实时加载和动态拾取,eagle.gl实现了基于全球ECEF统一坐标索引下点云实时从网络加载,能够实现支持内存中同时800w以上海量点云LOD实时加载以及根据反射率/高度/MIX混合着色能力,渲染帧率可以保持在60fps,通过GpuPicker和Raycast混合拾取方案实现数据拾取交互的实时性。

image.png

image.gifFigure.3.2.2.1 基于LOD点云的实时吸附编辑能力

3.3 交互和扩展能力

对于地图数据生产,数据可视化展示是第一步,如何在数据可视化展示的基础上进行上层复杂的GIS编辑能力建设是业务增值的重要一环。

3.3.1 交互能力

为了满足高精产线复杂的数据编辑诉求,拾取是编辑最底层的能力, 融合射线拾取与GPU拾取,能精准满足对海量数据20ms以内的快速拾取能力。

image.gifimage.png

Figure.3.3.1.1 海量数据拾取能力

数据裁剪能力立交场景下,数据间的互相遮挡会对数据分析产生一定的影响,我们默认提供了数据裁剪能力以满足复杂场景的数据编辑&分析需求。

image.gifimage.png

Figure.3.3.1.2 数据实时裁剪

3.3.2 插件体系

引擎支持插件开发,用户可以根据自己的需求定制插件,目前我们提供了测距、编辑和框选三个插件供大家参考。同时,引擎还支持图层和控制器的定制化开发,满足多样的业务场景。

image.gifimage.png

Figure.3.3.2.1 测距插件体系

3.4 其他能力 - 视觉&动效

3.4.1 飞行

平滑的飞行效果和基于滤镜的背景换肤能力。

image.gifimage.png

Figure.3.4.1.1 平滑的飞行效果/背景换肤

3.4.2 光影

模拟一天中的时间,实现光照阴影能力。

image.gifimage.png

Figure.3.4.2.1 光照阴影

3.4.3 后处理

深度定制扩展threejs,实现扩展的后处理渲染管线,并且抽象出通用三方后处理基础库,该库增加了引擎的后处理能力,用于提升可视化效果,为未来大屏项目做准备。

image.png

image.gif

Figure.3.4.3.1 后处理

3.4.4 3D地球

23D一体化,支持墨卡托投影和球投影的自由切换,增强可视化效果。

image.gifimage.png

Figure.3.4.4.1 2/3D一体化球展示

4. 总结规划

目前,eagle.gl引擎广泛应用到了高德高精团队的数据生产、数据分析和新基建项目能力建设当中。后续随着引擎的能力完备,一方面立足于高精业务实现面向自动驾驶的仿真平台搭建;另一方面通过真实世界数字化的刻画,实现多源异构数据(DEM/BIM/倾斜摄影等行业相关)融合渲染,最终达到数字孪生能力。

以上的事情要最终实现任重道远,欢迎联系加入我们共同构建一个数字世界。欢迎对通用平台前端、在线编辑IDE、3D可视化方向感兴趣的小伙伴加入我们,一起做一些有意义的事情。投递简历到 gdtech@alibaba-inc,com, 邮件主题为: 姓名-技术方向-来自高德技术, 欢迎自荐或推荐。



相关文章
|
2月前
|
前端开发 JavaScript Python
Python Web应用中的WebSocket实战:前后端分离时代的实时数据交换
在前后端分离的Web应用开发模式中,如何实现前后端之间的实时数据交换成为了一个重要议题。传统的轮询或长轮询方式在实时性、资源消耗和服务器压力方面存在明显不足,而WebSocket技术的出现则为这一问题提供了优雅的解决方案。本文将通过实战案例,详细介绍如何在Python Web应用中运用WebSocket技术,实现前后端之间的实时数据交换。
104 0
|
5天前
|
弹性计算 Java 关系型数据库
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
Web应用上云经典架构实践教学
|
1月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
47 3
|
1月前
|
前端开发 JavaScript 开发工具
从框架到现代Web开发实践
从框架到现代Web开发实践
46 1
|
1月前
|
前端开发 开发者 UED
移动优先:响应式设计在现代Web开发中的实践策略
【10月更文挑战第29天】在现代Web开发中,响应式设计已成为不可或缺的实践策略,使网站能适应各种设备和屏幕尺寸。本文介绍了移动优先的设计理念,对比了移动优先与桌面优先的策略,探讨了流式布局与固定布局的区别,详细讲解了CSS媒体查询的使用方法,并强调了触摸和手势支持及性能优化的重要性。
38 1
|
27天前
|
机器学习/深度学习 编解码 JavaScript
探索WebAssembly:加速Web应用性能的神奇引擎
探索WebAssembly:加速Web应用性能的神奇引擎
|
2月前
|
开发框架 自然语言处理 PHP
PHP在Web开发中的持久魅力与创新实践###
【10月更文挑战第17天】 本文探讨了PHP作为一门老牌却充满活力的编程语言,在现代Web开发中的独特优势和未来趋势。通过分析其简洁性、灵活性、强大生态系统及不断创新的特性,本文旨在揭示PHP为何能持续吸引开发者,并在技术快速迭代的时代保持竞争力。同时,文章也展望了PHP在未来Web开发领域的发展潜力,强调其在技术创新和社区支持下,依然能够引领Web开发的新潮流。 ###
43 9
|
2月前
|
JavaScript API 开发工具
(H5-Web3D-ThreeJS)在网页三维CAD中绘制窗户模型
本文介绍了如何使用mxcad3d在网页中创建一个简单的三维窗户模型。通过官方教程搭建环境,编写绘制窗户模型的代码,并在点击按钮后展示模型效果。最终模型包括窗框和玻璃部分,具备丰富的三维建模功能和便捷的API支持。
|
1月前
|
SQL 安全 Go
PHP在Web开发中的安全实践与防范措施###
【10月更文挑战第22天】 本文深入探讨了PHP在Web开发中面临的主要安全挑战,包括SQL注入、XSS攻击、CSRF攻击及文件包含漏洞等,并详细阐述了针对这些风险的有效防范策略。通过具体案例分析,揭示了安全编码的重要性,以及如何结合PHP特性与最佳实践来加固Web应用的安全性。全文旨在为开发者提供实用的安全指南,帮助构建更加安全可靠的PHP Web应用。 ###
45 1
|
2月前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
53 2