CN116521146B - 一种云gis平台的二次开发系统 - Google Patents
一种云gis平台的二次开发系统 Download PDFInfo
- Publication number
- CN116521146B CN116521146B CN202310449800.0A CN202310449800A CN116521146B CN 116521146 B CN116521146 B CN 116521146B CN 202310449800 A CN202310449800 A CN 202310449800A CN 116521146 B CN116521146 B CN 116521146B
- Authority
- CN
- China
- Prior art keywords
- secondary development
- interface
- logic
- module
- cloud gis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000011161 development Methods 0.000 title claims abstract description 164
- 230000006854 communication Effects 0.000 claims abstract description 125
- 238000004891 communication Methods 0.000 claims abstract description 122
- 238000012545 processing Methods 0.000 claims abstract description 94
- 230000003993 interaction Effects 0.000 claims abstract description 92
- 230000006870 function Effects 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 26
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 16
- 238000012986 modification Methods 0.000 claims description 17
- 230000004048 modification Effects 0.000 claims description 17
- 238000005516 engineering process Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 8
- 230000002452 interceptive effect Effects 0.000 claims description 8
- 238000013461 design Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 5
- 238000000926 separation method Methods 0.000 abstract description 6
- 238000012423 maintenance Methods 0.000 abstract description 5
- 230000006978 adaptation Effects 0.000 abstract description 4
- 230000008901 benefit Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013079 data visualisation Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种云GIS平台的二次开发系统,涉及云GIS平台二次开发领域,旨在解决开发重复工作量、产品维护困难、平台受设备限制等问题。该方法采用统一的逻辑处理模块解决了重复开发和维护困难的问题,界面与逻辑分离的人机交互模块确保了GIS功能的一致性,图形处理与消息通信模块通过分享协同的方式及时通知其他用户,双向网络通信协议模块实现了跨语言特性和插件热加载等。通过逻辑、界面、编程语言分离的架构方式实现一套逻辑、多套平台适配的二次开发跨平台方案,提高了跨平台云GIS平台在图形处理及二次开发方面的效率化、科学化和智能化水平。该方法的实现提高了跨平台云GIS的开发效率和用户体验,对于GIS应用的发展具有积极意义。
Description
技术领域
本发明涉及云GIS平台二次开发领域,特别是一种云GIS平台的二次开发系统。
背景技术
云GIS是一种基于云计算技术的地理信息系统,旨在对传统GIS的结构进行改进和扩展。它通过利用云计算的理论、方法和技术,提高GIS的存储、访问和海量空间数据的处理能力,以解决计算密集型和数据密集型的各种问题。和传统GIS相比,云GIS平台在架构时就决定了其对云计算具有天然的自适应能力。传统GIS平台的二次开发技术在国内外具有非常丰富的经验,但是对云GIS平台的二次开发,国内外鲜有涉及。目前,GIS平台的二次开发主要以单机PC端为主,当用户提出具体需求时,开发人员针对相应的需求开发对应的扩展。在云GIS之前,这种开发模式无疑是解决问题的最好的方式,由于其解决的问题比较简单,对数据量及计算的复杂度要求不高,所以开发的功能比较简单,开发效率很高。但是云GIS的推广和应用,云计算、大数据、人工智能等新一代信息技术的发展,传统GIS二次开发模式有很多问题难以克服,主要表现在以下几个方面:
一是从软件建构角度而言。目前很多公司GIS平台是十几年前或者几十年前架构的产品,重新架构一套云GIS平台成本很高,需要大量的人才储备及财力支撑,这就导致当前大多数GIS平台的二次开发产品对当前云计算适应能力有限,尤其是对分布式、大数据、密集型计算等方面处理能力不足。
二是从跨平台角度而言。GIS平台的二次开发产品,往往针对的是特定的运行环境,例如只能在Windows操作系统运行或者只能在Linux操作系统上运行,没有实现图形处理逻辑和界面的分离。为实现二次开发插件的跨平台,有些人选择在对应的操作系统下开发对应的产品,有些人选择在编码阶段增加大量的宏定义来预处理程序逻辑。这种开发方式工作量很大、后期的维护也相当困难。
三是从运行终端角度而言。GIS平台的二次开发产品,主要是面向PC用户,以客户端/服务器(C/S)这种部署方式为主。但是随着移动设备的普及,移动办公的需求也日益重要,以浏览器/服务器(B/S)架构的应用也越来越收到重视。传统GIS二次开发的产品很难在移动设备及浏览器上运行。
四是从图形处理角度而言。GIS平台二次开发对图形的处理需要从传统的单机模式向共享、实时协同方向转变。地图分享及实时协同可以避免如手动拷贝地图数据造成的数据泄露、数据不一致、重复工作量等问题。
五是从开发角度而言。GIS平台的二次开发对开发语言一般都有严格的限制,只能选择其指定的某些语言类型,对编码人员水平要求较高。当产品部署完成后,如果有新的应用需求,需要重新打包发布,大大增加了运维工作量,同时也不利于GIS生态的发展。
六是从用户角度而言,为了提供更好的体验,GIS平台应该具有一种支持热加载插件的功能。这意味着,在GIS平台部署完成之后,用户可以使用自己的算法处理特定问题,可以通过编写在线脚本即时执行。然而,当前GIS平台在满足这种需求方面的处理能力不足。
发明内容
鉴于上述问题,本发明提出了一种云GIS平台的二次开发系统。
本发明实施例提供了一种云GIS平台的二次开发系统,所述二次开发系统包括:统一逻辑处理模块、界面与逻辑分离的人机交互模块、图形处理与消息通信模块、双向网络通信协议模块;
所述统一逻辑处理模块用于根据获取的目标二次开发功能,生成对应的业务逻辑模型和参数录入接口、结果输出接口、人机交互接口,所述统一逻辑处理模块以整体模块的形式实现,使得在云GIS平台上实现一组逻辑处理功能,以负责对GIS数据进行处理、分析和呈现,所述目标二次开发功能是指用户需求的逻辑功能;
所述界面与逻辑分离的人机交互模块用于根据所述人机交互接口,生成交互界面,所述人机交互接口不同的数据来源,对应不同的交互界面,所述界面与逻辑分离的人机交互模块实现用户界面与底层代码逻辑分开,使得所述底层代码逻辑和所述用户界面分别独立开发、维护和修改,根据不同运行平台开发不同的交互方式,通过所述用户界面录入的参数会被所述人机交互接口接收,执行的结果通过所述结果输出接口输出至所述用户界面反馈给用户;
所述图形处理与消息通信模块用于在云GIS平台检测到各种图形数据修改后,保存修改后图形数据,并将修改后图形数据即时发送到云GIS服务,以及接收到云GIS服务反馈消息后,对自身保存的地图数据进行更新处理,所述反馈消息是云GIS服务在接收到其它云GIS平台发送的修改后图形数据后,进行筛选、检查、比对后发出的;
所述双向网络通信协议模块用于生成二次开发插件的客户端和云GIS平台的服务端,以及确定网络通信协议,实现二次开发插件和云GIS平台之间数据格式、交换方式、错误检测和恢复机制的约定,保证两者有效、可靠地进行通信。
可选地,所述统一逻辑处理模块用于根据获取的目标二次开发功能,生成对应的业务逻辑模型和参数录入接口、结果输出接口、人机交互接口,包括:
根据所述目标二次开发功能,进行逻辑抽象处理,建立抽象模型;
利用C++语言,对所述抽象模型进行主体框架的构建,生成对应的业务逻辑模型;
利用C++语言,构建所述参数录入接口、所述结果输出接口、所述人机交互接口,所述人机交互接口包括:鼠标、键盘、打印机、触摸、语音交互接口;
利用IDL对C++语言构建的各个接口进行转义,构建统一的接口规范;
对所述业务逻辑模型的详细功能结合IDL接口规范进行编译,采用Emscripten工具链进行整体逻辑模块的导出,以使得所述统一逻辑处理模块以整体模块的形式实现。
可选地,所述界面与逻辑分离的人机交互模块用于根据所述参数录入接口,生成交互界面,包括:
根据所述人机交互接口,设计所述用户界面;
根据程序运行的平台实现所述用户界面上交互的具体逻辑,包括:鼠标点击、鼠标移动、键盘按下、键盘弹起、打印机调用、移动平台屏幕按压检测、语言输入、设备移动距离;
引入所述统一的逻辑处理模块中IDL接口规范编译产生的结果,实现对IDL接口的调用;
设计所述交互界面,以对IDL接口调用结果进行结果展示。
可选地,所述图形处理与消息通信模块的构建方法为:
采用IDL将GIS平台图形绘制引擎核心接口进行转义;
利用Emscripten工具链,将IDL和GIS平台图形绘制引擎进行编译,形成字节码文件;
构建云GIS平台客户端,引入所述字节码文件和所述界面与逻辑分离的人机交互模块中的交互界面及逻辑;
构建通信模块服务端和通信模块客户端,所述通信模块服务端采用C++结合WebSocket实现,包括两个部分:云GIS平台客户端每次对地图数据修改的版本记录,云GIS平台客户端对地图修改保存后的更新推送;
所述通信模块客户端采用JS结合WebSocket实现,包括两个部分:云GIS平台客户端收到更新推送后,更新本地地图,云GIS平台客户端从通信模块服务端获取地图的版本记录。
可选地,所述双向网络通信协议模块中确定的网络通信协议包括:通信类型和通信数据;
所述通信类型用于指定要发送消息具体的类型,将各种通信的类型进行划分,其包括:通信来源、通信处理方式,其中,所述通信来源用于明确所述二次开发插件是否支持热加载、是否为独立的二进制程序信息;
所述通信处理方式用于明确消息是否加密以及加密方式、传输数据的类型、执行结果是否需要反馈;
所述云GIS平台根据消息类型处理对应的逻辑;
所述通信数据用于指定要发送消息的具体内容,其包括:通信标识、通信详细参数,在通信过程中,若所述二次开发插件向所述云GIS平台发送不符合网络通信协议规定的数据,所述云GIS平台通过检查网络通信协议中的通信标识和通信详细参数来判断是否存在错误,以避免程序的错误执行。
可选地,所述双向网络通信协议模块用于生成二次开发插件的客户端和云GIS平台的服务端,以及确定网络通信协议,实现二次开发插件和云GIS平台之间数据格式、交换方式、错误检测和恢复机制的约定,包括:
构建所述云GIS平台的WebSocket服务端;
确定所述WebSocket服务端的网络通信具体协议;
构建所述二次开发插件的WebSocket客户端;
基于所述WebSocket客户端,实现业务逻辑及交互逻辑的二次开发扩展;
利用WebSocket技术实现所述网络通信具体协议的具体内容;
所述二次开发插件利用所述WebSocket客户端建立Websocket连接,向所述WebSocket服务端发送消息请求;
所述WebSocket服务端接收所述消息请求后,处理相关的逻辑内容,处理完成后,反馈给所述WebSocket客户端;
所述WebSocket客户端接收所述WebSocket服务端反馈的消息后,决定是否重复执行:所述二次开发插件利用所述WebSocket客户端建立Websocket连接,向所述WebSocket服务端发送消息请求;
若所述WebSocket客户端执行完毕,则断开WebSocket连接,执行结束。
可选地,二次开发插件的运行依赖于所述云GIS平台,在执行二次开发内容时,若所述二次开发插件对地图数据的内容进行增、删、改、查操作,则所述云GIS平台会监测到地图数据的修改;
所述云GIS平台通过所述图形处理与消息通信模块将修改后图形数据发送到所述云GIS服务;
所述云GIS服务端接收到修改后图形数据后,进行筛选、检查、比对,向其他符合条件的云GIS平台发送反馈消息,实现地图数据的实时协同;
所述云GIS平台将所述二次开发内容执行的结果输出;
若所述二次开发内容中没有对地图数据的修改,则所述云GIS平台直接将所述二次开发内容执行的结果输出。
可选地,所述云GIS平台的二次开发系统运行的环境包括:各类操作系统、各种移动终端设备、以及浏览器端;
各类所述操作系统包括:Windows系列操作系统、Linux系列操作系统、Mac系列操作系统;
各种所述移动终端设备包括:Android移动终端设备、IOS移动终端设备、Pad移动终端设备。
可选地,所述统一逻辑处理模块采用参数化设计方式进行构建。
可选地,所述参数录入接口为业务逻辑代码提供数据来源;
所述结果输出接口是业务逻辑代码执行完毕后所得的反馈,是用户获取的最终结果。
可选地,所述业务逻辑代码仅实现一次,即可在桌面端、Web端、移动端设备上运行。
可选地,所述统一逻辑处理模块利用各类编译型、脚本型计算机语言编码实现,结合WebAssembly和WebIDL技术实现业务逻辑代码的复用。
本发明所提云GIS平台的二次开发系统,统一逻辑处理模块是跨平台GIS二次开发的逻辑抽象,在代码实现方面只实现一次,在移动平台、浏览器、PC端运行的是同一套逻辑,解决开发重复工作量,产品维护困难等问题。
界面与逻辑分离的人机交互模块确保在不同平台下GIS功能在交互上的一致性,使其更符合运行平台界面风格、操作习惯等,解决GIS平台受设备运行限制的问题。
图形处理与消息通信模块实现云GIS平台在图形处理方面的分享、实时协同方面的工作,二次开发执行的结果在地图上展示,通过分享协同的方式及时通知其他用户,解决云GIS平台在传统作业方式上地图数据丢失、数据不一致等问题。
双向网络通信协议模块实现云GIS平台的二次开发的跨语言特性,支持多种语言等进行扩展功能开发,解决云GIS平台二次开发语言限制、不支持热加载插件等问题。
本发明所提云GIS平台的二次开发系统,通过逻辑、界面、编程语言分离的架构方式实现一套逻辑、多套平台适配的二次开发跨平台方案,提高了跨平台云GIS平台在图形处理及二次开发方面的效率化、科学化和智能化水平。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例的的云GIS平台的二次开发系统的框图;
图2是本发明实施例中云GIS平台的二次开发系统四个模块实现流程以及结构划分的概述流程图;
图3是本发明实施例中二次开发插件、云GIS平台以及云GIS服务端三者之间的通信流程。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,仅仅是本发明一部分实施例,而不是全部的实施例,并不用于限定本发明。
本发明所提的云GIS平台的二次开发系统,是一种支持跨平台的云GIS平台的图形处理和二次开发方法的系统。这种系统及其涉及的方法解决了云GIS平台在图形处理和二次开发方面的跨平台、跨终端、跨语言、前后端分离等问题。通过这种系统及其涉及的方法,最终形成了一个逻辑清晰、多平台适配的二次开发解决方案,为用户提供了更好的体验和更高效的服务。
参照图1,示出了本发明实施例的云GIS平台的二次开发系统的框图,该二次开发系统包括:统一逻辑处理模块、界面与逻辑分离的人机交互模块、图形处理与消息通信模块以及双向网络通讯协议模块。
统一逻辑处理模块用于根据获取的目标二次开发功能,生成对应的业务逻辑模型和参数录入接口、结果输出接口、人机交互接口结果输出接口、人机交互接口,统一逻辑处理模块以整体模块的形式实现,使得在云GIS平台上实现一组逻辑处理功能,以负责对GIS数据进行处理、分析和呈现,此处所提目标二次开发功能是指用户需求的逻辑功能。
构建统一逻辑处理模块的目的是为了提高云GIS平台的处理能力,丰富云GIS平台的功能。该模块采用的是参数化设计方式,在具体实现过程中,还需要预留参数录入接口、结果输出接口、人机交互接口。其中,参数录入接口为业务逻辑代码提供数据来源;结果输出接口是业务逻辑代码执行完毕后所得的反馈,是用户获取的最终结果;人机交互接口为人机交互提供支持,例如:鼠标录入、键盘录入、语音录入等等。为确保执行效率,在编码实现过程中,可以优选选择以C、C++语言为主,当然也可以采用JavaScript、Python等语言,再结合WebAssembly和WebIDL技术实现代码的复用。即,统一逻辑处理模块可以利用各类编译型或者脚本型计算机语言编码实现,结合WebAssembly和WebIDL技术实现业务逻辑代码的复用。
在一种较优的实现方式中,统一逻辑处理模块生成对应的业务逻辑模型和参数录入接口、结果输出接口、人机交互接口,包括以下内容:
首先二次开发功能的确认是开展工作的前提,需要了解用户需求、确定详细功能及未来可能遇见的问题,例如:是否支持脚本开发、是否需要界面的支持、是否为共享地图等。确认二次开发功能后,根据目标二次开发功能,进行逻辑抽象(也即业务逻辑抽象)处理,建立抽象模型。业务逻辑抽象是统一逻辑处理模块的核心,包括功能算法单元、输入单元和输出单元。其中,算法单元根据实际需求实现,能够解决具体问题;输入单元为业务提供源数据,输出单元为业务提供中间数据或最终数据。
可以利用C++语言,对抽象模型进行主体框架的构建,生成对应的业务逻辑模型;同时利用C++语言,构建参数录入接口、结果输出接口、人机交互接口,其中,人机交互接口包括:鼠标、键盘、打印机、触摸、语音交互接口。对于参数录入接口接收的输入参数,和结果输出接口输出的输出参数,一般情况下,复杂数据结构是使用Json进行接口间参数的传递,基本数据类型则直接传递。人机交互接口为人机交互开发提供抽象行为,涉及到可能存在的人机操作,例如:鼠标按下或者弹起操作,键盘按下或者弹起操作,对话框展示,语音输入按钮等等,为界面行为提供抽象实现,实现和界面之间的分离。
接着,还需要利用IDL对C++语言构建的各个接口进行转义,构建统一的接口规范;对业务逻辑模型的详细功能结合IDL接口规范进行编译,采用Emscripten工具链进行整体逻辑模块的导出,以使得统一逻辑处理模块以整体模块的形式实现。在二次开发的过程中,业务逻辑代码仅实现一次,即可在桌面端、Web端、移动端设备上运行。
界面与逻辑分离的人机交互模块用于根据人机交互接口,生成交互界面,人机交互接口不同的数据来源,对应不同的交互界面,界面与逻辑分离的人机交互模块实现用户界面与底层代码逻辑分开,使得底层代码逻辑和用户界面分别独立开发、维护和修改,根据不同运行平台开发不同的交互方式,通过用户界面录入的参数会被人机交互接口接收,执行的结果通过结果输出接口输出至用户界面反馈给用户。
界面与逻辑分离的人机交互模块在实际工作过程中,一方面提高了代码的可读性、可维护性和扩展性;另一方面,可以根据不同运行平台开发不同的交互方式。例如:在PC端使用时,其交互方式多为鼠标、键盘,打印机等;在移动设备时,其交互方式多为语音录入、对屏幕按压的信息反馈等。人机交互模块在实现上是与运行设备有关的,不同的终端需要开发不同的交互界面,界面录入的参数会被统一逻辑处理模块接收,执行的结果最终会反馈给用户。
在一种较优的实现方式中,界面与逻辑分离的人机交互模块根据参数录入接口,生成交互界面,包括以下内容:
首先根据人机交互接口,设计用户界面;交互方式的确认需要根据操作的设备来确定,例如:鼠标、键盘、移动设备、VR设备等,实现和设备相关的交互接口。
接着根据程序运行的平台实现用户界面上交互的具体逻辑,包括:鼠标点击、鼠标移动、键盘按下、键盘弹起、打印机调用、移动平台屏幕按压检测、语言输入、设备移动距离等,最终实现具体的交互行为。
再引入统一的逻辑处理模块中IDL接口规范编译产生的结果,实现对IDL接口的调用;设计交互界面,以对IDL接口调用结果进行结果展示。交互界面根据设备来确定,同一套二次开发的业务逻辑可以适配各种设备界面,例如:运行在浏览器上的对话框、运行在PC端的对话框以及运行在移动设备上的对话框等等,在逻辑处理上是统一的,接口的参数也是统一的。
图形处理与消息通信模块用于在云GIS平台检测到各种图形数据修改后,保存修改后图形数据,并将修改后图形数据即时发送到云GIS服务,以及接收到云GIS服务反馈消息后,对自身保存的地图数据进行更新处理,其中,反馈消息是云GIS服务在接收到其它云GIS平台发送的修改后图形数据后,进行筛选、检查、比对后发出的。
图形处理与消息通信模块实质上就是云GIS平台二次开发处理各种图形数据的实现模块,其包括对点、线、面、三维图形等数据的处理,根据统一逻辑处理模块进行显示、修改分析等操作。图形处理与消息通信模块可以实现计算机之间或不同设备之间的数据传输,用以实现地图数据的分享、协同编辑等。在编码实现阶段,图形处理与消息通信模块由云GIS平台实现,二次开发过程中不需要考虑图形平台之间的通信问题。
在一种较优的实现方式中,图形处理与消息通信模块的构建方法为:
首先采用IDL将GIS平台图形绘制引擎核心接口进行转义;接着利用Emscripten工具链,将IDL和GIS平台图形绘制引擎进行编译,形成字节码文件;再构建云GIS平台客户端,引入字节码文件和界面与逻辑分离的人机交互模块中的交互界面及逻辑。
之后构建通信模块服务端和通信模块客户端,该通信模块服务端采用C++结合WebSocket实现,包括两个部分:云GIS平台客户端每次对地图数据修改的版本记录,云GIS平台客户端对地图修改保存后的更新推送;而通信模块客户端采用JS结合WebSocket实现,包括两个部分:云GIS平台客户端收到更新推送后,更新本地地图,云GIS平台客户端从通信模块服务端获取地图的版本记录。
双向网络通信协议模块用于生成二次开发插件的客户端和云GIS平台的服务端,以及确定网络通信协议,实现二次开发插件和云GIS平台之间数据格式、交换方式、错误检测和恢复机制的约定,保证两者有效、可靠地进行通信。
双向网络通信协议模块支持了对扩展二次开发插件的热加载功能。双向网络通信模块实现了云GIS平台二次开发对跨语言的支持,其降低了二次开发的门槛,极大的方便了开发人员的开发工作。由于其支持JavaScript、Python等脚本语言,GIS二次开发生态及受益群体将会大规模增加。
双向网络通信协议模块中确定的网络通信协议包括:通信类型和通信数据;其中,通信类型用于指定要发送消息具体的类型,将各种通信的类型进行划分,其包括:通信来源、通信处理方式,这其中,通信来源用于明确二次开发插件是否支持热加载、是否为独立的二进制程序信息。
通信处理方式用于明确消息是否加密以及加密方式、传输数据的类型(一般指明文或者二进制)、执行结果是否需要反馈。
云GIS平台根据消息类型处理对应的逻辑;通信数据用于指定要发送消息的具体内容,其包括:通信标识、通信详细参数,在通信过程中,若二次开发插件向云GIS平台发送不符合网络通信协议规定的数据,云GIS平台通过检查网络通信协议中的通信标识和通信详细参数来判断是否存在错误,以避免程序的错误执行。
在一种较优的实现方式中,双向网络通信协议模块用于生成二次开发插件的客户端和云GIS平台的服务端,以及确定网络通信协议,实现二次开发插件和云GIS平台之间数据格式、交换方式、错误检测和恢复机制的约定,包括以下内容:
构建云GIS平台的WebSocket服务端;确定WebSocket服务端的网络通信具体协议;构建二次开发插件的WebSocket客户端;基于WebSocket客户端,实现业务逻辑及交互逻辑的二次开发扩展。
利用WebSocket技术实现网络通信具体协议的具体内容;二次开发插件利用WebSocket客户端建立Websocket连接,向WebSocket服务端发送消息请求;WebSocket服务端接收消息请求后,处理相关的逻辑内容,处理完成后,反馈给WebSocket客户端;WebSocket客户端接收WebSocket服务端反馈的消息后,决定是否重复执行:二次开发插件利用WebSocket客户端建立Websocket连接,向WebSocket服务端发送消息请求;若WebSocket客户端执行完毕,则断开WebSocket连接,执行结束。
云GIS平台通过WebSocket、动态链接库等形式进行二次开发插件的加载,为二次开发插件提供运行和测试条件。
二次开发插件的运行依赖于云GIS平台,在执行二次开发内容时,若二次开发插件对地图数据的内容进行增、删、改、查等各类操作,则云GIS平台会监测到地图数据的修改;云GIS平台通过图形处理与消息通信模块将修改后图形数据发送到云GIS服务。
云GIS服务端接收到修改后图形数据后,进行筛选、检查、比对,向其他符合条件的云GIS平台发送反馈消息,实现地图数据的实时协同;云GIS平台将二次开发内容执行的结果输出;若二次开发内容中没有对地图数据的修改,则云GIS平台直接将二次开发内容执行的结果输出。
此外,云GIS平台的二次开发系统运行的环境包括:各类操作系统、各种移动终端设备、以及浏览器端;各类操作系统包括:Windows系列操作系统、Linux系列操作系统、Mac系列操作系统;各种移动终端设备包括:Android移动终端设备、IOS移动终端设备、Pad移动终端设备。
参照图2,示出了云GIS平台的二次开发系统四个模块实现流程以及结构划分的概述流程图。
统一逻辑处理模块在实现上,首先是二次开发功能的确认,之后进行业务逻辑抽象,再业务逻辑参数确定,逻辑交互接口设计,最后逻辑模块实现,使用各类语言,例如括号中的C、C++、JavaScript、Python。
逻辑交互接口设计也就决定了界面与逻辑分离的人机交互模块中交互模式,例如括号中的鼠标、键盘、显示器、移动设备等。之后完成交互接口参数设计,人机交互界面设计,最终人机交互模块实现。
对于云GIS平台,对二次开发插件可以有热加载需求,也可以没有热加载需求。若有热加载需求,在双向网络通讯协议模块中,增加WebSocket模块,实现云GIS平台、二次开发插件之间双向网络通信,进行参数传输。这可以通过JS脚本、Python脚本、exe独立子程序等实现。若没有热加载需求,则在双向网络通讯协议模块中,设计跨平台编译,对于windows下为dll文件和lib文件,对于linux下为.so文件和a文件。浏览器环境下为.wasm文件和.js文件。
云GIS平台的图像加载,图形处理与消息通信模块针对地图是否变化的情况:若地图没有变化,其可直接进行逻辑结果输出。若是地图有变化,则通过图形处理与消息通信模块(图2中简写为消息通信模块),将变化的数据同步到云GIS服务端(图2中简写为服务端)。云GIS服务端通知其它运行的云GIS平台,实现实时协同,之后进行逻辑结果输出。
图3示出了二次开发插件、云GIS平台以及云GIS服务端(图3中简写为云GIS服务)三者之间的通信流程。图3中为了图示的简洁,使用WebSocket客户端表示二次开发插件的客户端,使用WebSocket服务表示云GIS平台的服务端。使用逻辑处理模块表示统一逻辑处理模块,使用人机交互模块表示界面与逻辑分离的人机交互模块,使用GIS数据与图像处理表示图形处理与消息通信模块,使用通信服务表示双向网络通讯协议模块。二次开发插件与云GIS平台之间为双向网络通信,这两者均与GIS服务端之间进行消息通信。
二次开发插件在表现形式上为独立的可执行程序(二进制文件)、脚本文件(JavaScript/Python等)、动态链接库(.dll/.so等)。
云GIS服务,能够整合和统计各种地图数据资源和用户资源,具有非常强大的可扩展性和可维护性,可以适应不断变化的需求,从而为GIS客户端(即云GIS平台)的运行提供全面而强有力的服务支撑。通过云GIS服务,用户不仅能够获得丰富的地图数据资源,还可以在这些资源的基础上实现高效的数据管理、分析和可视化,为GIS客户端的运行提供服务支撑。
三者之间的通信流程大体如下:
(1)、授权认证
二次开发插件和云GIS服务进行通信,获取必要的授权信息、资源信息等。
(2)、通信连接
二次开发插件和云GIS平台的WebSocket服务端建立连接。
(3)、参数与数据源
二次开发插件的人机交互模块负责为逻辑处理模块录入执行参数,为逻辑的执行提供数据来源。
(4)、建立WebSocket连接,数据封装与发送
二次开发插件和云GIS平台的通信数据按照协议格式封装,通过WebSocket发送和接收。
(5)、逻辑处理及结果展示
云GIS平台对二次开发插件进行逻辑处理,并将处理的结果表现在GIS数据和图形展示上。
(6)、地图数据向服务端推送
云GSI平台通过图形处理与消息通信模块把处理后的地图数据发送给云GIS服务。
(7)、服务端广播,客户端协同
云GIS服务将变化的数据广播给其他云GIS平台,其它云GIS平台进行数据的同步。
(8)、关闭WebSocket连接,执行结束
云GIS服务通知云GIS平台响应结束,云GIS平台通知二次开发插件逻辑处理结束,WebSocket断开连接。
综上所述,本发明的云GIS平台的二次开发系统,统一逻辑处理模块是跨平台GIS二次开发的逻辑抽象,在代码实现方面只实现一次,在移动平台、浏览器、PC端运行的是同一套逻辑,解决开发重复工作量,产品维护困难等问题。
界面与逻辑分离的人机交互模块确保在不同平台下GIS功能在交互上的一致性,使其更符合运行平台界面风格、操作习惯等,解决GIS平台受设备运行限制的问题。
图形处理与消息通信模块实现云GIS平台在图形处理方面的分享、实时协同方面的工作,二次开发执行的结果在地图上展示,通过分享协同的方式及时通知其他用户,解决云GIS平台在传统作业方式上地图数据丢失、数据不一致等问题。
双向网络通信协议模块实现云GIS平台的二次开发的跨语言特性,支持多种语言等进行扩展功能开发,解决云GIS平台二次开发语言限制、不支持热加载插件等问题。
本发明所提云GIS平台的二次开发系统,通过逻辑、界面、编程语言分离的架构方式实现一套逻辑、多套平台适配的二次开发跨平台方案,提高了跨平台云GIS平台在图形处理及二次开发方面的效率化、科学化和智能化水平。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (11)
1.一种云GIS平台的二次开发系统,其特征在于,所述二次开发系统包括:统一逻辑处理模块、界面与逻辑分离的人机交互模块、图形处理与消息通信模块、双向网络通信协议模块;
所述统一逻辑处理模块用于根据获取的目标二次开发功能,生成对应的业务逻辑模型和参数录入接口、结果输出接口、人机交互接口,所述统一逻辑处理模块以整体模块的形式实现,使得在云GIS平台上实现一组逻辑处理功能,以负责对GIS数据进行处理、分析和呈现,所述目标二次开发功能是指用户需求的逻辑功能;
所述界面与逻辑分离的人机交互模块用于根据所述人机交互接口,生成交互界面,所述人机交互接口根据不同的数据来源,对应不同的交互界面,所述界面与逻辑分离的人机交互模块实现用户界面与底层代码逻辑分开,使得所述底层代码逻辑和所述用户界面分别独立开发、维护和修改,根据不同运行平台开发不同的交互方式,通过所述用户界面录入的参数会被所述人机交互接口接收,执行的结果通过所述结果输出接口输出至所述用户界面反馈给用户;
所述图形处理与消息通信模块用于在云GIS平台检测到各种图形数据修改后,保存修改后图形数据,并将修改后图形数据即时发送到云GIS服务端,以及接收到云GIS服务端反馈消息后,对自身保存的地图数据进行更新处理,所述反馈消息是云GIS服务端在接收到其它云GIS平台发送的修改后图形数据后,进行筛选、检查、比对后发出的;
所述双向网络通信协议模块用于生成二次开发插件的客户端和云GIS平台的服务端,以及确定网络通信协议,实现二次开发插件和云GIS平台之间数据格式、交换方式、错误检测和恢复机制的约定,包括:
构建所述云GIS平台的WebSocket服务端;
确定所述WebSocket服务端的网络通信具体协议;
构建所述二次开发插件的WebSocket客户端;
基于所述WebSocket客户端,实现业务逻辑及交互逻辑的二次开发扩展;
利用WebSocket技术实现所述网络通信具体协议的具体内容;
所述二次开发插件利用所述WebSocket客户端建立Websocket连接,向所述WebSocket服务端发送消息请求;
所述WebSocket服务端接收所述消息请求后,处理相关的逻辑内容,处理完成后,反馈给所述WebSocket客户端;
所述WebSocket客户端接收所述WebSocket服务端反馈的消息后,决定是否重复执行:所述二次开发插件利用所述WebSocket客户端建立Websocket连接,向所述WebSocket服务端发送消息请求;
若所述WebSocket客户端执行完毕,则断开WebSocket连接,执行结束。
2.根据权利要求1所述的二次开发系统,其特征在于,所述统一逻辑处理模块用于根据获取的目标二次开发功能,生成对应的业务逻辑模型和参数录入接口、结果输出接口、人机交互接口,包括:
根据所述目标二次开发功能,进行逻辑抽象处理,建立抽象模型;
利用C++语言,对所述抽象模型进行主体框架的构建,生成对应的业务逻辑模型;
利用C++语言,构建所述参数录入接口、所述结果输出接口、所述人机交互接口,所述人机交互接口包括:鼠标、键盘、打印机、触摸、语音交互接口;
利用IDL对C++语言构建的各个接口进行转义,构建统一的接口规范;
对所述业务逻辑模型的详细功能结合IDL接口规范进行编译,采用Emscripten工具链进行整体逻辑模块的导出,以使得所述统一逻辑处理模块以整体模块的形式实现。
3.根据权利要求2所述的二次开发系统,其特征在于,所述界面与逻辑分离的人机交互模块用于根据所述参数录入接口,生成交互界面,包括:
根据所述人机交互接口,设计所述用户界面;
根据程序运行的平台实现所述用户界面上交互的具体逻辑,包括:鼠标点击、鼠标移动、键盘按下、键盘弹起、打印机调用、移动平台屏幕按压检测、语言输入、设备移动距离;
引入所述统一逻辑处理模块中IDL接口规范编译产生的结果,实现对IDL接口的调用;
设计所述交互界面,以对IDL接口调用结果进行结果展示。
4.根据权利要求2所述的二次开发系统,其特征在于,所述图形处理与消息通信模块的构建方法为:
采用IDL将GIS平台图形绘制引擎核心接口进行转义;
利用Emscripten工具链,将IDL和GIS平台图形绘制引擎进行编译,形成字节码文件;
构建云GIS平台客户端,引入所述字节码文件和所述界面与逻辑分离的人机交互模块中的交互界面及逻辑;
构建通信模块服务端和通信模块客户端,所述通信模块服务端采用C++结合WebSocket实现,包括两个部分:云GIS平台客户端每次对地图数据修改的版本记录,云GIS平台客户端对地图修改保存后的更新推送;
所述通信模块客户端采用JS结合WebSocket实现,包括两个部分:云GIS平台客户端收到更新推送后,更新本地地图,云GIS平台客户端从通信模块服务端获取地图的版本记录。
5.根据权利要求2所述的二次开发系统,其特征在于,所述双向网络通信协议模块中确定的网络通信协议包括:通信类型和通信数据;
所述通信类型用于指定要发送消息具体的类型,将各种通信的类型进行划分,其包括:通信来源、通信处理方式,其中,所述通信来源用于明确所述二次开发插件是否支持热加载、是否为独立的二进制程序信息;
所述通信处理方式用于明确消息是否加密以及加密方式、传输数据的类型、执行结果是否需要反馈;
所述云GIS平台根据消息类型处理对应的逻辑;
所述通信数据用于指定要发送消息的具体内容,其包括:通信标识、通信详细参数,在通信过程中,若所述二次开发插件向所述云GIS平台发送不符合网络通信协议规定的数据,所述云GIS平台通过检查网络通信协议中的通信标识和通信详细参数来判断是否存在错误,以避免程序的错误执行。
6.根据权利要求1所述的二次开发系统,其特征在于,二次开发插件的运行依赖于所述云GIS平台,在执行二次开发内容时,若所述二次开发插件对地图数据的内容进行增、删、改、查操作,则所述云GIS平台会监测到地图数据的修改;
所述云GIS平台通过所述图形处理与消息通信模块将修改后图形数据发送到所述云GIS服务端;
所述云GIS服务端接收到修改后图形数据后,进行筛选、检查、比对,向其他符合条件的云GIS平台发送反馈消息,实现地图数据的实时协同;
所述云GIS平台将所述二次开发内容执行的结果输出;
若所述二次开发内容中没有对地图数据的修改,则所述云GIS平台直接将所述二次开发内容执行的结果输出。
7.根据权利要求1所述的二次开发系统,其特征在于,所述云GIS平台的二次开发系统运行的环境包括:各类操作系统、各种移动终端设备、以及浏览器端;
各类操作系统包括:Windows系列操作系统、Linux系列操作系统、Mac系列操作系统;
各种移动终端设备包括:Android移动终端设备、IOS移动终端设备、Pad移动终端设备。
8.根据权利要求1所述的二次开发系统,其特征在于,所述统一逻辑处理模块采用参数化设计方式进行构建。
9.根据权利要求1所述的二次开发系统,其特征在于,所述参数录入接口为业务逻辑代码提供数据来源;
所述结果输出接口是业务逻辑代码执行完毕后所得的反馈,是用户获取的最终结果。
10.根据权利要求9所述的二次开发系统,其特征在于,所述业务逻辑代码仅实现一次,即可在桌面端、Web端、移动端设备上运行。
11.根据权利要求2所述的二次开发系统,其特征在于,所述统一逻辑处理模块利用各类编译型、脚本型计算机语言编码实现,结合WebAssembly和WebIDL技术实现业务逻辑代码的复用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310449800.0A CN116521146B (zh) | 2023-04-24 | 2023-04-24 | 一种云gis平台的二次开发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310449800.0A CN116521146B (zh) | 2023-04-24 | 2023-04-24 | 一种云gis平台的二次开发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116521146A CN116521146A (zh) | 2023-08-01 |
CN116521146B true CN116521146B (zh) | 2024-02-06 |
Family
ID=87404070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310449800.0A Active CN116521146B (zh) | 2023-04-24 | 2023-04-24 | 一种云gis平台的二次开发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521146B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036954A (zh) * | 2012-12-03 | 2013-04-10 | 北京邮电大学 | 基于gis的移动信息聚合系统及其方法 |
CN105183491A (zh) * | 2015-10-21 | 2015-12-23 | 北京超图软件股份有限公司 | 跨平台的桌面gis系统及其启动方法 |
CN106383881A (zh) * | 2016-09-13 | 2017-02-08 | 中国电子科技集团公司第三十二研究所 | 基于跨平台图形中间件的导航二次开发控件系统 |
CN110134371A (zh) * | 2018-12-04 | 2019-08-16 | 上海合阔信息技术有限公司 | 一种跨平台应用软件开发架构系统 |
CN112347212A (zh) * | 2020-11-06 | 2021-02-09 | 中铁第一勘察设计院集团有限公司 | 面向bim应用的铁路云gis平台及其搭建方法 |
CN113703772A (zh) * | 2021-08-23 | 2021-11-26 | 北京计算机技术及应用研究所 | 基于ice的异构平台高效智能计算应用架构及其构建方法 |
-
2023
- 2023-04-24 CN CN202310449800.0A patent/CN116521146B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036954A (zh) * | 2012-12-03 | 2013-04-10 | 北京邮电大学 | 基于gis的移动信息聚合系统及其方法 |
CN105183491A (zh) * | 2015-10-21 | 2015-12-23 | 北京超图软件股份有限公司 | 跨平台的桌面gis系统及其启动方法 |
CN106383881A (zh) * | 2016-09-13 | 2017-02-08 | 中国电子科技集团公司第三十二研究所 | 基于跨平台图形中间件的导航二次开发控件系统 |
CN110134371A (zh) * | 2018-12-04 | 2019-08-16 | 上海合阔信息技术有限公司 | 一种跨平台应用软件开发架构系统 |
CN112347212A (zh) * | 2020-11-06 | 2021-02-09 | 中铁第一勘察设计院集团有限公司 | 面向bim应用的铁路云gis平台及其搭建方法 |
CN113703772A (zh) * | 2021-08-23 | 2021-11-26 | 北京计算机技术及应用研究所 | 基于ice的异构平台高效智能计算应用架构及其构建方法 |
Non-Patent Citations (2)
Title |
---|
孙丽等.插件式GIS 二次开发框架的设计与实现.《测绘科学》.2011,第36卷(第5期),第214-216页. * |
王飞等.ArcGIS 二次开发综述.《农业网络信息》.2017,(第251期),第72-77页. * |
Also Published As
Publication number | Publication date |
---|---|
CN116521146A (zh) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102187314B (zh) | 生成适用于数据集的资源脚本的方法和系统 | |
CN104298496B (zh) | 数据分析型软件开发框架系统 | |
CN101980152A (zh) | 一种移动中间件系统及其实现方法 | |
Sacco et al. | Virtual factory manager | |
CN110780856B (zh) | 一种基于微服务的用电数据发布平台 | |
CN107665237B (zh) | 数据结构分类装置、非结构化数据的发布订阅系统及方法 | |
CN111079244A (zh) | 一种基于行为树的分布式仿真平台 | |
CN114706579A (zh) | 页面开发方法、装置、服务器及存储介质 | |
Gómez et al. | A model-based approach for developing event-driven architectures with asyncapi | |
Kraemer et al. | Automated encapsulation of UML activities for incremental development and verification | |
CN115756407A (zh) | 基于场景-行为融合和模型驱动的元宇宙服务开发方法 | |
Gómez et al. | Model-driven development of asynchronous message-driven architectures with AsyncAPI | |
Bergenti et al. | A Comparison between Asynchronous Backtracking Pseudocode and its JADEL Implementation. | |
CN116521146B (zh) | 一种云gis平台的二次开发系统 | |
CN103488697A (zh) | 能自动收集和交换碎片化商业信息的系统及移动终端 | |
Miravet et al. | Framework for the declarative implementation of native mobile applications | |
Alulema et al. | A DSL for the development of heterogeneous applications | |
Firmenich et al. | A platform for web augmentation requirements specification | |
KR101045346B1 (ko) | 인터페이스 자동 생성부를 가진 데이터 분산처리 시스템 및 그 방법 | |
Zhai et al. | A data-driven service creation approach for end-users | |
Rashidi et al. | Software development and programming tools-a survey and recommendation for organization of small industries and industrial towns of Iran | |
CN115857915B (zh) | 面向元宇宙系统开发的物对象数字化方法 | |
CN113328913B (zh) | 一种提高项目测试效率的方法、装置和系统 | |
CN116470968A (zh) | 一种面向航天科学系统通讯功能的地面测试方法及装置 | |
CN116737144A (zh) | 一种基于低代码的移动终端应用发布方法、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |