CN117311718A - 一种国产gis应用开发方法及系统 - Google Patents
一种国产gis应用开发方法及系统 Download PDFInfo
- Publication number
- CN117311718A CN117311718A CN202310832561.7A CN202310832561A CN117311718A CN 117311718 A CN117311718 A CN 117311718A CN 202310832561 A CN202310832561 A CN 202310832561A CN 117311718 A CN117311718 A CN 117311718A
- Authority
- CN
- China
- Prior art keywords
- plug
- engine
- ins
- framework
- development
- 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.)
- Pending
Links
- 238000011161 development Methods 0.000 title claims abstract description 91
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000007726 management method Methods 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 38
- 238000013461 design Methods 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 13
- 230000003993 interaction Effects 0.000 claims description 11
- 238000012423 maintenance Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 10
- 238000009877 rendering Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000002452 interceptive effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000007405 data analysis Methods 0.000 claims description 4
- 238000013075 data extraction Methods 0.000 claims description 4
- 230000010354 integration Effects 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000007689 inspection Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 230000000007 visual effect Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 claims description 2
- 239000003086 colorant Substances 0.000 claims description 2
- 238000013523 data management Methods 0.000 claims description 2
- 230000007717 exclusion Effects 0.000 claims description 2
- 238000005259 measurement Methods 0.000 claims description 2
- 230000001105 regulatory effect Effects 0.000 claims description 2
- 238000012732 spatial analysis Methods 0.000 claims description 2
- 238000013519 translation Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 238000005316 response function Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method 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/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44594—Unloading
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种国产GIS应用开发方法及系统,涉及国产化GIS应用开发技术领域,方法包括以下步骤:定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
Description
技术领域
本发明涉及国产化GIS应用开发技术领域,具体的是一种国产GIS应用开发方法及系统。
背景技术
随着GIS应用的日益深入和广泛,GIS平台软件已经从一项技术性很强的专业类软件发展成为支撑大众化地理信息服务的应用类软件,在自然资源、数字城市、环境监测等方面发挥着重要作用。
应用型GIS软件系统呈现出以下几点特征:一是GIS工程的复杂度越来越高;二是需要应对多元化、多变化的业务需求;三是多专业技术集成与协作。基于传统软件架构体系的GIS软件虽然具有模块划分明确、平台结构紧凑等诸多优点,但是越来越多元化的数据、不断深化的业务需求等对GIS软件系统架构提出了新的挑战。另一方面,以信创为契机,我国地理信息企业正努力推动GIS科技创新,通过全自主化技术体系从根本上解决平台运行的安全问题,因此,实现关键技术和产品的自主可控也是GIS科技创新的重要途径。
发明内容
为解决上述背景技术中提到的不足,本发明的目的在于提供一种国产GIS应用开发方法及系统。
本发明的目的可以通过以下技术方案实现:一种国产GIS应用开发方法及系统,方法包括以下步骤:
定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;
接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;
对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;
将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
优选地,所述插件类型包括命令型插件和工具型插件,命令型插件表示开发的插件不需要与地图控件进行交互;工具型插件表示需要与地图控件进行交互。
优选地,所述插件开发规范包括接口规范、代码规范和配置规范;
接口规范:以接口的形式规定框架与插件相互通信的标准,即实现了标准化接口的对象才能被插件引擎识别为合法的插件;
代码规范:遵循Java开发规范,形成合理的代码注释和排版,正确定义常量和变量名称,函数的命名符号标准规范;
配置规范:以XML文件格式定义插件的基本信息,如插件标识、名称、版本号,并将文件置于工程文件workEnvironment/DGAF目录下。
优选地,所述框架相关引擎包括数据库引擎、权限引擎、报表引擎、符号引擎、地图操作引擎及空间引擎;
所述数据库引擎提供对空间数据的存储、检索以及空间分析,所述数据库引擎的实现包括:空间数据存取功能、空间数据索引功能、空间数据查询、运算和分析功能,支持MySQL、Oracle、PostgreSQL关系型数据库,以及达梦、瀚高、金仓国产数据库,满足信创要求;
所述权限引擎根据权限管理粒度将框架中权限管理分为两大类:功能级权限管理和数据级权限管理,系统框架采用基于角色的访问控制技术将权限与角色相关联,建立角色权限分配表,间接实现对用户的分组,实现权限验证;
所述报表引擎用于定义、生成和展示相应的报表,主要包括报表设计、数据抽取、报表模板解析和报表输出功能,用户根据需求设计需要的报表模板,在系统中进行编辑和管理,连接数据源完成数据抽取和解析,读取报表模板,将数据解析的结果填充至模板中完成报表的生成;
所述符号引擎是通过命令响应完成符号渲染功能的模块,是存在于框架和符号库之间的驱动程序,核心包括符号库的管理模块和符号渲染模块,符号库管理模块封装了符号相关信息,如样式、颜色、字体,还需要提供符号的编辑、新增、删除;符号渲染模块根据不同图层和配置文件完成图层要素的空间变化处理和符号化渲染;
所述地图操作引擎负责将地理数据转换为相应的地图图像,在完成地图显示的基础上,还需支持平移、定位、缩放、量测基本地图操作,地图引擎主要包括地图数据管理模块:用于存储和查询地理数据;图像处理模块:用于将地理数据转换为图像;地图交互模块:用于完成用户界面和地图的各类交互操作;
所述空间引擎完成各类数据集的打开、关闭,获取投影信息、描述信息、是否只读,根据数据类型的不同,分为矢量数据集和栅格数据集,根据要素空间特征的不同,矢量数据集进一步分为点数据集、线数据集和面数据集,栅格数据集包括影像和栅格格式;
所述插件相关引擎包括插件管理中心、插件检查器、插件注册器,保证插件对象被正确加载和生成,并存放于插件管理容器中,同时协调插件对象之间的交互和通信,插件引擎是插件能否成功被框架加载并使用的关键。
优选地,所述插件管理中心的构建使用泛型机制对插件进行分类存储的集合,维护了所有成功加载的插件对象及其状态;
构建插件检查器:根据契约设计对插件接口进行检查,只有接口检查为合法的插件才能被加载至插件管理中心,否则判定为非法插件;
构建插件注册器:根据插件检查结果将判断为合法的插件添加至插件管理中心进行统一管理;
插件解析器:根据插件的内容生成插件的实例对象,并按照指定位置渲染在用户界面。
优选地,所述对所有插件进行动态装载的过程包括以下步骤:
遍历指定目录workEnvironment/DGAF下的所有插件配置文件;
解析插件配置文件,获取插件标识、名称相关信息以及插件程序包所在位置;
对插件对象进行合法性检查,检查是否实现了插件契约中规定的接口,若为合法的插件则根据相关信息生成插件对象,并在插件管理中心进行注册和统一管理;若为非法插件则将插件以及对应的插件配置文件及相关程序包卸载;
插件解析,遍历在插件管理中心中注册的合法插件,按照配置文件中设置的用户权限进行过滤,判定为具有权限的插件则根据对应的类型信息和配置文件生成实例对象,并添加至框架主界面上的指定位置;鉴定为没有权限的插件则暂不生成实例对象。
优选地,所述对动态装载后的所有插件进行运行与管理的过程包括以下步骤:
将工具型插件的各类鼠标点击事件绑定监听函数,实现工具插件和GIS控件之间的交互操作;
协调不同插件之间的数据交互和事件响应,如互斥、联动的操作;
通过可视化界面提供插件运行期间的加载和卸载操作,对插件的生命期进行管理。
优选地,所述GIS应用开发框架的开发过程包括以下步骤:
运行环境配置,主要包括框架运行的软件环境和二次开发环境配置,如JDK、Maven、IDEA开发环境部署;
插件功能开发,遵循定义的插件开发规范实现插件契约中规定的IPlugin接口,采用MVC框架进行插件的二次开发;
插件测试和部署,插件后将程序集用Maven打包完成,在路径workEnvironment\DGAF下新增配置文件,将插件标识、名称、JAR包相关信息写入配置文件中;
框架启动,插件引擎完成插件加载和解析,在框架指定位置生成相应的界面元素。
优选地,所述GIS应用开发框架自底向上包括数据层、宿主层、接口层、插件层以及应用层;
其中,数据层:提供对框架运维数据和业务数据的集中管理,其中运维数据包括图层信息、用户信息、权限信息、工作流信息,业务数据包括结构化类型和非结构化类型的空间数据;
宿主层:宿主层为框架各个模块的运行提供了基础平台,其中框架引擎包括数据库引擎、权限引擎、报表引擎、符号引擎、地图操作引擎及空间引擎;插件引擎包括插件管理中心、插件检查器、插件注册器以及插件解析器;
接口层:即插件的通信契约,开发者在扩展插件时必须要遵循统一的接口规范,同样的,框架在加载插件时也必须根据接口约定对插件进行检查,只有检查为合法的插件才能被成功加载并注册;
插件层:插件层分为基础插件和业务插件,其中基础插件提供了GIS通用功能,如放大、缩小、漫游,已包含在SuperMapiDesktopX桌面GIS软件中,开发者可直接调用;业务插件是指根据特定的需求进行二次开发的插件,是开发者对框架功能的扩展;
应用层:应用层位于整个框架的最顶层,面向具体的业务需求,基于业务插件的开发和集成可快速实现二次开发。
第二方面,为了达到上述目的,本发明公开了一种国产GIS应用开发系统,包括:
定义模块:用于定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;
动态装载模块:用于接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;
运行管理模块:用于对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;
应用开发模块:用于将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
本发明的有益效果:
本发明基于SuperMapiDesktopX平台设计并创建框架结构,包括框架相关引擎设计及插件相关引擎设计,实现了满足信创要求的GIS应用开发框架;框架平台可独立于插件存在,两者基于公共的通信契约进行交互,支持开发人员在不修改框架平台的情况下通过增减或修改插件的方式扩展框架功能,降低插件对象和插件管理之间的耦合度;应用框架的开发提供了通用服务,在此基础上可建立不同业务场景的应用,快速实现系统的二次开发。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
图1为本发明方法的流程示意图;
图2为本发明提供的插件式GIS应用框架系统示意图;
图3为本发明提供的插件式GIS应用框架基础功能引擎相关UML类图;
图4为本发明提供的插件式GIS应用框架插件功能引擎相关UML类图;
图5是本发明提供的插件式GIS应用框架插件引擎工作流程图;
图6是本发明系统结构示意图;
图7是本发明系统主界面图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,一种国产GIS应用开发方法,方法包括以下步骤:
定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;
步骤C1:定义插件类型,包括命令型和工具型,命令型插件表示开发的插件使用过程中不需要与地图控件进行交互,工具型插件表示使用时需要与地图控件进行交互;
步骤C2:定义插件开发规范,包括接口规范、代码规范和配置规范;
步骤C2-1:定义接口规范,即插件契约,契约以接口的形式规定框架与插件相互通信的标准,即实现了规定接口的对象才能被插件引擎识别为合法的插件;插件契约包括IPlugin接口、AxCommand接口、AxTool接口、AxDockPanel接口等,其中①IPlugin接口是所有插件接口的父接口,接口中没有定义属性和方法,说明所有插件类型都是IPlugin类型;②AxCommand继承自IPlugin接口,该类型的接口在框架平台表现层表现为一个命令按钮,执行按钮事件中定义的操作。接口中定义OnClick()方法和OnCreate()方法,分别在按钮点击时和按钮产生时触发;③AxTool接口继承自IPlugin接口,该类型的接口在框架平台表现层表现为一个工具按钮,与命令按钮相似,但是工具按钮点击以后会开启一个交互过程;④AxDockPanel接口继承自IPlugin接口,该类型的接口在框架平台表现层表现为一个浮动窗口;
步骤C2-2:定义代码规范,形成合理的代码注释和排版,正确定义常量和变量名称,函数的命名符号标准规范;采用RESTful规范设计接口,定义客户端如何获取与修改资源,服务端如何响应对应请求,约束URL地址,选用适当的方法,规范状态码与返回体格式;
步骤C2-3:定义配置规范,以XML文件格式定义插件的基本信息,如插件标识、名称、版本等,并将文件置于工程文件workEnvironment/DGAF目录下。
框架相关引擎包括数据库引擎、权限引擎、报表引擎、符号引擎、地图操作引擎和空间引擎等,完成GIS框架的基础功能;插件引擎包括插件管理中心、插件检查器、插件注册器及插件解析器,保证插件对象被正确加载和生成,并存放于插件管理容器中,同时协调插件对象之间的交互和通信,插件引擎是插件能否成功被框架加载并使用的关键;
步骤F1:设计并构建框架基础功能相关引擎,其UML类图如图3所示;
步骤F1-1:构建数据库引擎,通过DMProvider、MysqlProvider、OracleProvider、PostgresqlProvider等接口的设计实现常用数据库及国产数据库支持,用户通过选择数据库类型、设置相应连接参数的形式进行数据库连接;
步骤F1-2:构建权限引擎,通过用户管理、角色管理、权限管理的访问控制技术实现权限验证。其中用户管理包括部门管理、人员管理、登录信息管理等,支持增加和删除部门或用户;角色管理支持系统角色的添加、编辑和删除,为不同角色添加用户关联;权限管理支持为用户设置功能权限、行政区权限以及图层权限等;
步骤F1-3:构建报表引擎,实现框架报表设计器及报表输出功能,支持设计和输出地图要素相关的属性信息。支持选择显示报表中哪些字段以及显示方式,创建报表后,可以将报表放置在地图布局上靠近地理数据的位置,或者将报表保存为用于分发的文件;
步骤F1-4:基于SuperMapiObjectsJava组件式GIS开发工具完成符号引擎、地图操作引擎及空间引擎等框架其他相关功能,提供强大的符号系统,支持地图符号制作、符号管理等,完成二三维符号一体化的管理与显示;提供地图显示和互操作功能,支持高精度、流畅的地图交互操作,支持海量数据显示;
步骤F2:构建插件相关引擎,其UML类图如图4所示;
步骤F2-1:构建插件管理中心,管理中心是一个装载IPlugin类型对象的强类型容器,具有根据索引获取插件、返回插件索引号、将插件放入相应分组等方法,使用泛型机制对插件进行分类存储,维护了所有成功加载的插件对象及其状态;
步骤F2-2:构建插件检查器,遍历配置文件中的所有插件,检查插件接口是否合法、是否实现了插件契约中规定的接口等等,只有检查为合法的接口才能被插件引擎加载到框架容器中,否则则判定为非法插件;
步骤F2-3:构建插件注册器,根据插件检查结果将判断为合法的插件调用addPlugin方法添加至插件管理中心进行统一管理;
步骤F2-4:构建插件解析器,解析器的任务是根据插件的内容生成插件的UI对象,并按照指定位置渲染在用户界面;
接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;
步骤K1:遍历指定目录workEnvironment/DGAF下的所有插件配置文件;
步骤K2:调用函数解析配置文件,获取插件标识、名称以及程序包相对路径等信息。Plugin.xml文件中主要有Plugin、Type、Runtime标签,分别标识插件属性信息、插件类型(是否为地图插件)、程序包的存储位置。
步骤K3:插件检查器根据获取的插件程序包位置对其实现的接口进行检查,判断其接口类型是否从IPlugin接口派生而来,是否实现了IPlugin接口中定义的方法,若是则判定为是合法的插件,调createPlugin方法创建该插件对象并放置在插件管理中心;若判定为非法插件,则调用deletePlugin方法将该插件卸载;
步骤K4:插件解析,遍历在插件管理中心注册的所有合法插件,按照配置文件中设置的用户权限进行过滤,鉴定为具有权限的插件则根据对应的类型信息和配置文件生成实例对象,并将其添加至框架主界面上的指定位置;鉴定为没有权限的插件则暂不生成实例对象。
对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;
步骤S1:将工具型插件的各类鼠标点击事件绑定监听函数,当鼠标在地图控件上移动时会触发相应的事件,事件响应函数首先会判断当前鼠标点击是左击还是右击,并调用相应的事件处理函数,实现工具插件和GIS控件之间的交互操作;
步骤S2:协调不同插件之间的通信,若插件之间相互独立,则只需通过接口事件插件与框架之间的通信,而对于需要进行交互的地图插件,则需要建立有效的通信机制实现插件与插件之间的数据交互和事件响应;
步骤S2-1:插件首先向框架注册可以接收的消息类型,框架会为每个插件维护一个可接收消息类型的标识队列;
步骤S2-2:将框架中插件之间的消息标识为广播和单播两种类型,若框架接收到某一插件发出的广播消息,则将该消息转发给框架中的所有有效插件;若接收到某一插件发出的单播消息,则将该消息转发给注册过该类型消息的插件,当目标插件接收到消息时会触发相应的事件处理程序。
步骤S3:通过可视化界面提供插件运行期间的加载和卸载等操作,对插件的生命期进行管理。
将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
步骤W1:数据库设计:遵循“框架和应用分离”的基本原则,将框架运维相关数据和业务数据隔离,框架运维数据包括图层信息、用户信息、权限信息、工作流信息等。按照概念设计、逻辑设计、物理设计的步骤形成框架运维相关表结构。框架运维相关表设计见表1。
表1框架运维信息表(部分)
步骤W2:按照模块化设计原则,进一步设计框架基础插件和业务插件并集成在框架中,其中基础插件包括地图操作、图形和属性编辑、空间查询和分析等GIS基础功能相关的组件和GIS控件;业务插件包括工程管理、数据采集、数据处理和检查、图件管理等行业应用相关功能,具体的插件名称及功能见表2。
表2框架业务插件列表(部分)
步骤W3:配置运行环境:安装SuperMapGIS2022图形平台、达梦数据库v7,下载并安装1.8.0_77版本的JDK,部署Maven和IDEA;
步骤W4:插件功能开发:新建maven项目,设置SDK版本、项目名称、项目代码地址。新建基于框架的DGFrame的Command类,继承AxCommand接口,实现初始化和OnClick两个接口,完成命令型插件开发;
步骤W5:插件打包和部署:点击Maven停靠窗体中的package进行打包,生成JAR包后在路径workEnvironment\DGAF下新增配置文件,配置对应的功能引用的JAR包、工作页、工作组、功能名、功能图标、功能执行命令等相关参数;
步骤W6:框架启动,插件引擎完成插件加载和解析,在框架指定位置生成相应的界面元素。
所述GIS应用开发框架的开发过程包括以下步骤:
运行环境配置,主要包括框架运行的软件环境和二次开发环境配置,如JDK、Maven、IDEA开发环境部署;
插件功能开发,遵循定义的插件开发规范实现插件契约中规定的IPlugin接口,采用MVC框架进行插件的二次开发;
插件测试和部署,插件后将程序集用Maven打包完成,在路径workEnvironment\DGAF下新增配置文件,将插件标识、名称、JAR包相关信息写入配置文件中;
框架启动,插件引擎完成插件加载和解析,在框架指定位置生成相应的界面元素。
所述GIS应用开发框架自底向上包括数据层、宿主层、接口层、插件层以及应用层;
其中,数据层:提供对框架运维数据和业务数据的集中管理,其中运维数据包括图层信息、用户信息、权限信息、工作流信息,业务数据包括结构化类型和非结构化类型的空间数据;
宿主层:宿主层为框架各个模块的运行提供了基础平台,其中框架引擎包括数据库引擎、权限引擎、报表引擎、符号引擎、地图操作引擎及空间引擎;插件引擎包括插件管理中心、插件检查器、插件注册器以及插件解析器;
接口层:即插件的通信契约,开发者在扩展插件时必须要遵循统一的接口规范,同样的,框架在加载插件时也必须根据接口约定对插件进行检查,只有检查为合法的插件才能被成功加载并注册;
插件层:插件层分为基础插件和业务插件,其中基础插件提供了GIS通用功能,如放大、缩小、漫游,已包含在SuperMapiDesktopX桌面GIS软件中,开发者可直接调用;业务插件是指根据特定的需求进行二次开发的插件,是开发者对框架功能的扩展;
应用层:应用层位于整个框架的最顶层,面向具体的业务需求,基于业务插件的开发和集成可快速实现二次开发。
在另一方面,如图6所示,本发明实施例还公开了一种国产GIS应用开发系统,包括:
定义模块:用于定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;
动态装载模块:用于接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;
运行管理模块:用于对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;
应用开发模块:用于将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
如图7所示,展示了基于本发明方法得到的国产GIS应用开发系统主界面图。
基于同一种发明构思,本发明还提供一种计算机设备,该计算机设备包括包括:一个或多个处理器,以及存储器,用于存储一个或多个计算机程序;程序包括程序指令,处理器用于执行存储器存储的程序指令。处理器可能是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor、DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其用于实现一条或一条以上指令,具体用于加载并执行计算机存储介质内一条或一条以上指令从而实现上述方法。
需要进一步进行说明的是,基于同一种发明构思,本发明还提供一种计算机存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法。该存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电、磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上显示和描述了本公开的基本原理、主要特征和本公开的优点。本行业的技术人员应该了解,本公开不受上述实施例的限制,上述实施例和说明书中描述的只是说明本公开的原理,在不脱离本公开精神和范围的前提下,本公开还会有各种变化和改进,这些变化和改进都落入要求保护的本公开范围内容。
Claims (10)
1.一种国产GIS应用开发方法,其特征在于,方法包括以下步骤:
定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;
接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;
对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;
将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
2.根据权利要求1所述的一种国产GIS应用开发方法,其特征在于,所述插件类型包括命令型插件和工具型插件,命令型插件表示开发的插件不需要与地图控件进行交互;工具型插件表示需要与地图控件进行交互。
3.根据权利要求1所述的一种国产GIS应用开发方法,其特征在于,所述插件开发规范包括接口规范、代码规范和配置规范;
接口规范:以接口的形式规定框架与插件相互通信的标准,即实现了标准化接口的对象才能被插件引擎识别为合法的插件;
代码规范:遵循Java开发规范,形成合理的代码注释和排版,正确定义常量和变量名称,函数的命名符号标准规范;
配置规范:以XML文件格式定义插件的基本信息,如插件标识、名称、版本号,并将文件置于工程文件workEnvironment/DGAF目录下。
4.根据权利要求1所述的一种国产GIS应用开发方法,其特征在于,所述框架相关引擎包括数据库引擎、权限引擎、报表引擎、符号引擎、地图操作引擎及空间引擎;
所述数据库引擎提供对空间数据的存储、检索以及空间分析,所述数据库引擎的实现包括:空间数据存取功能、空间数据索引功能、空间数据查询、运算和分析功能,支持MySQL、Oracle、PostgreSQL关系型数据库,以及达梦、瀚高、金仓国产数据库,满足信创要求;
所述权限引擎根据权限管理粒度将框架中权限管理分为两大类:功能级权限管理和数据级权限管理,系统框架采用基于角色的访问控制技术将权限与角色相关联,建立角色权限分配表,间接实现对用户的分组,实现权限验证;
所述报表引擎用于定义、生成和展示相应的报表,主要包括报表设计、数据抽取、报表模板解析和报表输出功能,用户根据需求设计需要的报表模板,在系统中进行编辑和管理,连接数据源完成数据抽取和解析,读取报表模板,将数据解析的结果填充至模板中完成报表的生成;
所述符号引擎是通过命令响应完成符号渲染功能的模块,是存在于框架和符号库之间的驱动程序,核心包括符号库的管理模块和符号渲染模块,符号库管理模块封装了符号相关信息,如样式、颜色、字体,还需要提供符号的编辑、新增、删除;符号渲染模块根据不同图层和配置文件完成图层要素的空间变化处理和符号化渲染;
所述地图操作引擎负责将地理数据转换为相应的地图图像,在完成地图显示的基础上,还支持平移、定位、缩放、量测基本地图操作,地图引擎主要包括地图数据管理模块:用于存储和查询地理数据;图像处理模块:用于将地理数据转换为图像;地图交互模块:用于完成用户界面和地图的各类交互操作;
所述空间引擎完成各类数据集的打开、关闭,获取投影信息、描述信息、是否只读,根据数据类型的不同,分为矢量数据集、栅格数据集和影像数据集,其中,根据要素空间特征的不同,矢量数据集进一步分为点数据集、线数据集、面数据集和文本数据集;
所述插件相关引擎包括插件管理中心、插件检查器、插件注册器,保证插件对象被正确加载和生成,并存放于插件管理容器中,同时协调插件对象之间的交互和通信,插件引擎是插件能否成功被框架加载并使用的关键。
5.根据权利要求4所述的一种国产GIS应用开发方法,其特征在于,所述插件管理中心的构建使用泛型机制对插件进行分类存储的集合,维护了所有成功加载的插件对象及其状态;
构建插件检查器:根据契约设计对插件接口进行检查,只有接口检查为合法的插件才能被加载至插件管理中心,否则判定为非法插件;
构建插件注册器:根据插件检查结果将判断为合法的插件添加至插件管理中心进行统一管理;
插件解析器:根据插件的内容生成插件的实例对象,并按照指定位置渲染在用户界面。
6.根据权利要求1所述的一种国产GIS应用开发方法,其特征在于,所述对所有插件进行动态装载的过程包括以下步骤:
遍历指定目录workEnvironment/DGAF下的所有插件配置文件;
解析插件配置文件,获取插件标识、名称相关信息以及插件程序包所在位置;
对插件对象进行合法性检查,检查是否实现了插件契约中规定的接口,若为合法的插件则根据相关信息生成插件对象,并在插件管理中心进行注册和统一管理;若为非法插件则将插件以及对应的插件配置文件及相关程序包卸载;
插件解析,遍历在插件管理中心中注册的合法插件,按照配置文件中设置的用户权限进行过滤,判定为具有权限的插件则根据对应的类型信息和配置文件生成实例对象,并添加至框架主界面上的指定位置;鉴定为没有权限的插件则暂不生成实例对象。
7.根据权利要求1所述的一种国产GIS应用开发方法,其特征在于,所述对动态装载后的所有插件进行运行与管理的过程包括以下步骤:
将工具型插件的各类鼠标点击事件绑定监听函数,实现工具插件和GIS控件之间的交互操作;
协调不同插件之间的数据交互和事件响应,如互斥、联动的操作;
通过可视化界面提供插件运行期间的加载和卸载操作,对插件的生命期进行管理。
8.根据权利要求1所述的一种国产GIS应用开发方法,其特征在于,所述GIS应用开发框架的开发过程包括以下步骤:
运行环境配置,主要包括框架运行的软件环境和二次开发环境配置,如JDK、Maven、IDEA开发环境部署;
插件功能开发,遵循定义的插件开发规范实现插件契约中规定的IPlugin接口,采用MVC框架进行插件的二次开发;
插件测试和部署,插件后将程序集用Maven打包完成,在路径workEnvironment\DGAF下新增配置文件,将插件标识、名称、JAR包相关信息写入配置文件中;
框架启动,插件引擎完成插件加载和解析,在框架指定位置生成相应的界面元素。
9.根据权利要求8所述的一种国产GIS应用开发方法,其特征在于,所述GIS应用开发框架自底向上包括数据层、宿主层、接口层、插件层以及应用层;
其中,数据层:提供对框架运维数据和业务数据的集中管理,其中运维数据包括图层信息、用户信息、权限信息、工作流信息,业务数据包括结构化类型和非结构化类型的空间数据;
宿主层:宿主层为框架各个模块的运行提供了基础平台,其中框架引擎包括数据库引擎、权限引擎、报表引擎、符号引擎、地图操作引擎及空间引擎;插件引擎包括插件管理中心、插件检查器、插件注册器以及插件解析器;
接口层:即插件的通信契约,开发者在扩展插件时必须要遵循统一的接口规范,同样的,框架在加载插件时也必须根据接口约定对插件进行检查,只有检查为合法的插件才能被成功加载并注册;
插件层:插件层分为基础插件和业务插件,其中基础插件提供了GIS通用功能,如放大、缩小、漫游,已包含在SuperMapiDesktopX桌面GIS软件中,开发者可直接调用;业务插件是指根据特定的需求进行二次开发的插件,是开发者对框架功能的扩展;
应用层:应用层位于整个框架的最顶层,面向具体的业务需求,基于业务插件的开发和集成可快速实现二次开发。
10.一种国产GIS应用开发系统,其特征在于,包括:
定义模块:用于定义插件类型及插件开发规范,基于插件类型及插件开发规范得到框架相关引擎和插件相关引擎;
动态装载模块:用于接收所有插件及插件配置文件,解析插件配置文件,并根据插件相关引擎,对所有插件进行动态装载;
运行管理模块:用于对动态装载后的所有插件进行运行与管理,得到运行与管理的插件;
应用开发模块:用于将框架相关引擎以及运行与管理的插件输入至预先建立的GIS应用开发框架内,得到GIS应用开发结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310832561.7A CN117311718A (zh) | 2023-07-08 | 2023-07-08 | 一种国产gis应用开发方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310832561.7A CN117311718A (zh) | 2023-07-08 | 2023-07-08 | 一种国产gis应用开发方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117311718A true CN117311718A (zh) | 2023-12-29 |
Family
ID=89254177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310832561.7A Pending CN117311718A (zh) | 2023-07-08 | 2023-07-08 | 一种国产gis应用开发方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117311718A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118037405A (zh) * | 2024-04-12 | 2024-05-14 | 张家港保税数据科技有限公司 | 一种轻量级动态交割服务方法和系统 |
-
2023
- 2023-07-08 CN CN202310832561.7A patent/CN117311718A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118037405A (zh) * | 2024-04-12 | 2024-05-14 | 张家港保税数据科技有限公司 | 一种轻量级动态交割服务方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620117B2 (en) | Systems and methods for code clustering analysis and transformation | |
US10579344B2 (en) | Converting visual diagrams into code | |
US11537552B2 (en) | Rule generation in a data governance framework | |
US11188319B2 (en) | Systems and methods for entry point-based code analysis and transformation | |
US11436006B2 (en) | Systems and methods for code analysis heat map interfaces | |
US11169784B2 (en) | Computing expression medium, development environment, and device communication and control architecture | |
US7523135B2 (en) | Risk and compliance framework | |
CN108292231B (zh) | 从数据生成应用的方法和系统 | |
CN112748908A (zh) | 基于SSM框架的Restful服务开发方法与装置 | |
CN117311718A (zh) | 一种国产gis应用开发方法及系统 | |
EP4022452A1 (en) | Document tracking through version hash linked graphs | |
KR101566855B1 (ko) | 전사적 자원 관리 시스템에서의 새로운 업무용 화면을 개발하는 방법 | |
US11442724B2 (en) | Pattern recognition | |
CN111400396A (zh) | 数据同步脚本的生成方法、装置及计算机可读存储介质 | |
Haase et al. | Application integration within an integrated design environment | |
US20240118877A1 (en) | System and method for decomposing monolith applications into software services | |
CN113342399A (zh) | 应用项目的结构配置方法、装置及可读存储介质 | |
CN117172971A (zh) | 一种基于法律监督领域建模语言的大数据法律监督模型建立方法 | |
CN114679366A (zh) | 多云环境下面向租户开放运维工具的方法、系统及介质 | |
CN114416370A (zh) | 一种任务处理方法、装置、设备、存储介质及产品 | |
Horvath | Collaborative Spaces for Increased Traceability in Knowledge-Intensive Document-Based Processes |
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 |