掌桥专利:专业的专利平台
掌桥专利
首页

一种基于开源项目的三维地图应用开发平台

文献发布时间:2023-06-19 19:14:59


一种基于开源项目的三维地图应用开发平台

技术领域

本发明涉及地理信息系统技术领域,尤其涉及一种基于开源项目的三维地图应用开发平台。

背景技术

随着GIS(Geographic Information Science,地理信息系统)与互联网得不断融合,电子地图越来越贴近人们得生活,人们使用其加载展示各种数据,统计分析最终辅助决策。但是传统得二维地图缺失三维方向上的信息,难以完整反应客观世界的全貌,于是三维GIS越来越得到人们的重视,三维GIS需求越来越多。

有资料显示,目前主流的三维WebGIS框架是基于WebGL引擎渲染的Cesium开发库。但是cesium开发库学习成本高,例如刚开始接触cesium的开发人员想要初始化地球,要确定是否展示导航栏、home键、帮助信息等、要决定加载哪种底图等;想要加载点线面矢量数据要用Entity API还是Primitive API;同时开发人员还要了解各种类型坐标系,鼠标操作代码也比较复杂。

中国专利文献CN109829022B公开了一种“融合监控视频信息的互联网地图服务系统及构建方法”。系统包括:视频信息运维模块,用于视频影像数据、视频属性数据和视频空间数据的分析、管理和存储;2D-3D地图前端加载模块,用于对2D地图、3D地图的应用客户端显示,并获取视频信息中带有的空间数据,完成对视频影像数据、属性数据的分析、加载和处理;地图服务器数据组织、发布模块,用于提供地图存储、生成服务,实现地图数据发布;后台数据库管理模块,用于根据对业务数据和空间数据的分析,实现对不同数据的后台操作管理。上述技术方案对于开发人员进行地图构建时的基础要求高,不易上手。

发明内容

本发明主要解决原有的技术方案对于开发人员进行地图构建时的基础要求高,不易上手的技术问题,提供一种基于开源项目的三维地图应用开发平台,采用面向过程的设计思想,将复杂的GIS专业语言转化为互联网软件开发语言,基于开源cesium三维地图渲染库,封装了大量地图操作接口和空间分析接口,封装的接口简单易懂,支持多种坐标系和多种结构的数据接入,具有前端空间分析功能,方便非GIS专业背景的开发人员快速搭建出三维地图应用软件。

本发明的上述技术问题主要是通过下述技术方案得以解决的:本发明包括:参考文档,从源码中提取注释生成,说明地图开发库中的类和接口;三维地图开发库,作为基础底层进行前端渲染,地图接口和方法开发完成后,打包成一个模块作为全局变量,生成Earth.js作为三维地图开发库在网页引用。

在实际操作过程中,三维地图开发库以开源项目cesium为基础,使用面向过程的思想封装类和方法。例如用户需要添加数据量十万以上的点,三维地图开发库以cesium.BillboardCollection为基础,通过设置distanceDisplayCondition、scaleByDistance等属性优化展示效果,最后封装addMuchPoint方法,用户最后只要调用该方法,传入要展示的数据就能完成加载十万以上点数据的功能。

作为优选,所述的参考文档对每个接口、变量进行标注化注释,使用JSDoc从源代码中批量提取注释,生成对应的接口文档。

作为优选,所述的三维地图开发库开发过程具体包括:

S1使用webpack作为构建工具初始化项目;

S2项目全局引用开源项目cesium,以cesium为基础进行后续开发;

S3使用prototype对象定义类的属性和方法;

S4接口编写完成后,以umd的方式将开发库打包成一个模块作为全局变量使用;

S5生成Earth.js,即为三维地图开发库,将其放到网络路径下使用。

作为优选,所述的三维地图开发库在网页前端渲染和展示三维地图的应用,具体包括:初始化地球;在球体上叠加覆盖物;添加二维平面图层并在球体上添加三维数据图层;进行空间分析;进行坐标系转换。

作为优选,所述的覆盖物包括点、线和面,具体为添加动态效果的线段、覆盖物绑定事件。用于实现地图开发库在网页前端渲染和展示。

作为优选,所述的二维平面图层包括矢量图层和栅格图层,所述三维数据图层包括倾斜摄影测量、BIM、点云、建筑数据,为3D Tiles格式。所述二维平面图层包括矢量图层和栅格图层,图层符合OGC(Open Geospatial Consortium:开放地理空间信息联盟)标准。

作为优选,所述的空间分析包括生成缓冲区、计算等高线和空间切割,空间分析采用开源空间分析工具Turf.js完成,具体为将所述地图开发类库中的要素对象转换为标准的GeoJson对象,使用Turf.js中的分析方法对其进行空间分析操作,最后输出GeoJson对象,将所述GeoJson对象转换为地图开发类库中的对象,并且在地图中展示。

作为优选,所述的坐标系转换包括屏幕坐标、世界坐标和经纬度坐标。

本发明的有益效果是:采用面向过程的设计思想,将复杂的GIS专业语言转化为互联网软件开发语言,基于开源cesium三维地图渲染库,封装了大量地图操作接口和空间分析接口,封装的接口简单易懂,支持多种坐标系和多种结构的数据接入,具有前端空间分析功能,减少应用后台开发以及相关资源的占用,方便非GIS专业背景的开发人员快速搭建出三维地图应用软件。

附图说明

图1是本发明的一种空间分析线切割面示例效果图。

图2是本发明的一种空间分析线切割面效果图。

具体实施方式

下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。

实施例:本实施例的一种基于开源项目的三维地图应用开发平台,包括:

三维地图开发库,基于开源项目cesium开发,以其作为基础底层,使用面向过程的编程思想封装上层类和接口,使用JavaScript语言编写,用于前端渲染和展示三维地图;

三维地图开发库的开发过程具体可以采用如下方法进行实施:(一)使用webpack作为构建工具初始化项目;(二)项目全局引用开源项目cesium,后续开发都以cesium为基础;(三)使用prototype对象定义类的属性和方法;(四)代码注释采用YUIDoc注释规范,用于声明一个代码块中编写的是什么内容;类库编写完成后,为了方便前端网页调用;(五)接口编写完成后,使用umd的方式打包,即将开发库打包成一个模块作为全局变量使用。最终生成的Earth.js,即为三维地图开发库,将其放到网络路径下即可在任何网页中引用。

参考文档,编写地图开发库时严格遵循注释规范,使用JSDoc从源码中提取注释生成参考文档,用以说明地图开发库中的类、属性和接口;参考文档对每个接口、变量进行标注化注释,使用JSDoc从源代码中批量提取注释,生成对应的接口文档。

在实际操作过程中,三维地图开发库以开源项目cesium为基础,使用面向过程的思想封装类和方法。例如用户需要添加数据量十万以上的点,三维地图开发库以cesium.BillboardCollection为基础,通过设置distanceDisplayCondition、scaleByDistance等属性优化展示效果,最后封装addMuchPoint方法,用户最后只要调用该方法,传入要展示的数据就能完成加载十万以上点数据的功能。

同时,本发明严格遵循代码规范和注释规范,从而提高了源代码的可读性和可维护性。

三维地图开发库使用webpack作为构建工具,编写完成后,使用umd的方式打包,即将开发库打包成一个模块作为全局变量使用。最终生成的Earth.js,即为三维地图开发库,将其放到网络路径下即可在任何网页中引用。

本发明中,所述地图开发库用于在网页前端渲染和展示三维地图,具体包括初始化地球;在球体上叠加覆盖物,包括添加动态效果的线段、覆盖物绑定事件等;添加二维平面图层;在球体上添加三维数据图层;进行空间分析;进行坐标系转换。

其中,所述覆盖物包括点、线和面,所述二维平面图层包括矢量图层和栅格图层,图层符合OGC(Open Geospatial Consortium:开放地理空间信息联盟)标准;所述三维数据图层包括倾斜摄影测量、BIM、点云、建筑数据,为3D Tiles格式;所述空间分析包括生成缓冲区、计算等高线和空间切割;所述坐标系转换包括屏幕坐标、世界坐标和经纬度坐标。

空间分析采用开源空间分析工具Turf.js完成,具体步骤为:(一)将所述三维地图开发库中的要素对象转换为标准的GeoJson对象;(二)使用Turf.js中的空间分析方法对其进行空间分析操作,最后输出GeoJson对象;(三)将步骤二所述GeoJson对象转换为地图开发类库中的对象,并且在地图中展示。

空间分析功能的具体实现步骤,在此以线切割面为例进行详细说明,如图1、图2所示,具体包括:

1.条件判断,传入数据必须为面和线;

1.1判断参数面是否符合GeoJson格式面数据特点

1.2判断参数线是否符合GeoJson格式线数据特点

1.3根据turf中方法booleanPointInPolygon判断线段起止点是否在面里面

2.计算线和面的交点,并且和交点合并到线里面;

2.1根据turf接口lineIntersect找到线和面得交点;

2.2根据turf接口explode将线拆成多点。

2.3将2.1得到的线面交点和2.2得到的多点合并成一条线。

3.计算线的缓冲区;根据turf接口buffer获取线段的缓冲区,参数tolerance为缓冲区半径,参数toleranceType为缓冲区半径单位;

4.计算线缓冲区和面的差异;根据turf接口difference获取缓冲区和面的差异(差异是指面不包含缓冲区的部分)

5.生成切割后的面,主要是将差异面中的点位与线段距离小于参数tolerance的点替换为线段中的点;

6.过滤到重复点位信息。

7.将属性赋予每一个被切割后的面,并生成新的id。

三维地图开发库中的事件监听机制采用观察者模式,观察者模式又叫做发布订阅模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察着对象。它是由两类对象组成,主题和观察者,主题负责发布事件,同时观察者通过订阅这些事件来观察该主体,发布者和订阅者是完全解耦的,彼此不知道对方的存在,两者仅仅共享一个自定义事件的名称。

三维地图开发库中的事件监听机制具体实现如下:

步骤一:确定三维地图开发库充当发布者,同时添加一个列表用于存放回调函数;

步骤二:订阅者订阅消息,并且将回调函数存入步骤一中的列表;

步骤三:发布者发布消息的时候,遍历步骤一中的列表,依次触发存放的订阅者回调函数。

相关技术
  • 一种基于开源项目的互联网地图应用开发平台
  • 一种基于开源项目的互联网地图应用开发平台
技术分类

06120115848132