logo好方法网

一种实现B3dm模型网络快速传输的方法


技术摘要:
本发明公开了一种实现B3dm模型网络快速传输的方法,包括跨域问题的解决方法,跨域问题是由于跨域,客户端不能直接通过JavaScript代码中的数据URL访问位于不同域的数据服务器中的3DTiles文件,本发明通过代理服务去请求数据服务器中的数据,同时代理服务将请求到的数据  全部
背景技术:
随着互联网及信息技术的发展与应用,GIS软件已经由传统的C/S架构的二维单机 软件发展为B/S架构的3DWebGIS,尤其是Khronos组织发布了WebGL标准,使得在浏览器上进 行复杂的三维绘制成为可能,随后涌现出了大批的3DWebGIS,其中Cesium是其中的佼佼者。 随着3DWebGIS技术的发展成熟,为数字城市以及智慧城市的建设提供了技术基础。在数字 城市和智慧城市的建设过程中,城市的三维模型数据是不可或缺的基础数据,一个城市的 建筑三维模型往往数以百万计甚至更多,这使得浏览器往往无力承受,因此必须使用LOD技 术对3D模型进行切片降低模型的复杂度和数据量,从而实现在浏览器端加载显示城市级别 的海量数据。 同样,为了解决海量3D模型数据的网络传输与渲染问题,Cesium平台在glTF模型 的基础之上定义了3DTiles这一LOD数据集用于流式传输3D模型,其数据结构如图1所示, Cesium最终加载的三维模型数据便是B3dm格式的数据。虽然Cesium平台将通过LOD技术将 3D模型进行切片生成3DTiles数据集,但是当模型较多、数据量过大、网络带宽有限时也难 以实现很好的传输与渲染效果,还是会存在模型加载过慢、卡顿的现象。
技术实现要素:
针对上述现有技术的不足,本发明的目的是提供一种实现B3dm模型网络快速传输 的方法,解决现有的Cesium加载B3dm模型数据时间过长的技术问题。 本发明的目的是这样实现的: 一种实现B3dm模型网络快速传输的方法,包括跨域问题的解决方法,跨域问题是浏览 器为了安全,位于不同域的客户端脚本不能读写对方的资源,客户端不能直接通过 JavaScript脚本代码中的数据url访问数据服务器中得3Dtiles模型,则利用代理服务去请 求服务器的数据,解决跨域问题的方法包括以下步骤:a1.客户端请求服务端代理服务;a2. 代理服务向服务端请求数据;a3.代理服务向客户端返回步骤a2中请求的数据。 所述步骤a1包括以下步骤:1)将3DTiles文件存放在数据服务器数据目录中;2)客 户端根据3Dtiles的B3DM资源路径(URL)向代理服务发出资源请求;3)代理服务接到请求后 向数据服务器请求B3DM资源,并将请求的数据使用DEFLATE算法压缩后返回客户端  4)客户 端接收到代理服务返回的压缩后的B3DM数据之后,进行解压并在浏览器端进行渲染。 所述步骤a2中包括以下步骤:1)服务端代理服务接收到客户端请求后,服务端代 理服务根据客户端传来的数据url向数据服务器发出数据请求,服务器响应代理服务的请 求,服务器将3DTiles文件传给代理服务。 所述步骤a3中包括以下步骤:1)代理服务从数据服务器请求到数据后,对从数据 服务端接收的数据用3DTiles文件的压缩解压方法进行压缩;2)代理服务将步骤1)中压缩 3 CN 111556170 A 说 明 书 2/4 页 后的数据传给客户端后,客户端对接收到的数据用3DTiles文件的压缩解压方法进行解压, 如果请求的数据为B3dm模型,对数据解压之后直接在浏览器中进行渲染。 所述3DTiles文件的压缩解压方法,包括以下步骤:b1.客户端通过代理服务向服 务器请求3DTiles文件的Tileset.json文件,然后对请求到的数据使用DEFLATE算法进行压 缩;b2.代理服务将步骤b1中的压缩后的数据传给客户端;b3.客户端对步骤b2中返回的数 据使用pako.js进行解压,解析Tileset.json文件得到B3DM模型数据的URL路径,客户端将 B3DM模型的URL修改为带有IP地址、端口号和路径的地址的数据URL;b4.客户端请求代理服 务进行服务代理,并将修改后的数据URL传给代理服务;b5.代理服务根据请求的B3DM模型 URL向数据服务器请求相应3DTiles文件下的B3dm模型数据,数据服务器将代理服务请求的 服务返回代理服务;b6.代理服务将请求到的B3DM模型数据使用DEFLATE算法进行压缩;b7. 代理服务将压缩后的B3dm模型数据传给客户端,客户端使用pako.js进行解压,在浏览器上 进行显示。 本发明的有益效果是:本发明一方面通过代理服务解决客户端对3DTiles文件访 问过程中所存在的跨域问题;另一方面,通过对3DTiles文件压缩解压的方式,减少网络传 输的数据量,解决数据加载等待时间过长的问题;代理服务请求到3DTiles文件后,首先对 数据进行压缩,然后反馈到客户端,客户端接收到数据后进行解压,将最终解压获得的B3dm 模型数据显示在浏览器端;通过这一过程不仅提高了三维模型浏览速度,解决了复杂模型 或高精度模型加载超时导致浏览失败的问题,同时避免传输过程中三维模型数据的窃取或 篡改,确保了数据的安全性和保密性。 附图说明 图1为现有技术中3D  Tiles数据基本逻辑框架结构示意图; 图2为本发明代理服务解决跨域问题的具体流程; 图3为本发明Tileset.json压缩解压传输流程; 图4为本发明B3dm数据快速传输过程。
分享到:
收藏