CN112035588A - 构建空间数据规则库引擎的方法及gis数据质量检查方法 - Google Patents
构建空间数据规则库引擎的方法及gis数据质量检查方法 Download PDFInfo
- Publication number
- CN112035588A CN112035588A CN202010895302.5A CN202010895302A CN112035588A CN 112035588 A CN112035588 A CN 112035588A CN 202010895302 A CN202010895302 A CN 202010895302A CN 112035588 A CN112035588 A CN 112035588A
- Authority
- CN
- China
- Prior art keywords
- rule
- node
- data
- list
- action
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种构建空间数据规则库引擎的方法及GIS数据质量检查方法,包括对每项空间数据规则按照特征映射方式进行抽象剥离,实现对数据对象和数据对象之间的数据逻辑关系细化后,生成相应的规则要素因子;利用可视化模型化构建方法,根据每个规则要素因子之间的组合连接关系,绘制规则检查流程图;其中,规则检查流程图中通过绘制相应的图形来反映不同的规则要素因子;基于图形和图形之间的连接关系,对规则检查流程图进行序列化处理,在完成对数据检查规则描述内容的获取和存储后,实现空间数据规则库引擎的构建。本发明通过可视化模型构建技术,将数据通过规则模型组合得到的规则进行数据检查,该技术极大的提高了数据检查执行效率。
Description
技术领域
本发明涉及GIS底层数据引擎重构领域,更具体地说,涉及一种构建空间数据规则库引擎的方法及GIS数据质量检查方法。
背景技术
地理信息系统是集成空间数据获取、管理、分析、模拟和可视化表达功能与一体的计算机系统,GIS数据质量的好坏能够直接影响到空间数据的各方面效益。
目前各大GIS厂商,以及地理信息产业相关的企事业单位,在执行GIS数据的质量检查的过程中,基本上都会根据数据业务类型、数据结构等定制开发相应的数据质检软件,而数据质检软件采用的质检方案,基本上都是在商业软件SDK、开源GIS类库的基础上进行的二次开发,通过计算机编码,编写相应的数据检查规则,来实现GIS数据的质量检查。然而,在现有软件SDK、开源GIS类库的基础上进行的二次开发,对于很大一部分的GIS厂商,以及相关的地理信息产业的企事业单位存在很大的阻碍,特别是在面临不同种类、不同主题的空间数据的检查时,都缺乏一个通用适配的数据检查技术来做支撑,导致在数据检查方面浪费太多人力物力,底层的数据引擎依赖于第三方软件SDK,在进行底层性能优化方面缺少相应的控制权。
发明内容
本发明要解决的技术问题在于,针对现有技术缺乏一个通用适配的数据检查技术来做支撑,导致在数据检查方面浪费太多人力物力缺陷,提供一种GIS数据质量检查方法、系统及终端设备。
本发明解决其技术问题第一方面所采用的技术方案是:构造一种构建空间数据规则库引擎的方法,包括以下步骤:
对每项空间数据规则按照特征映射方式进行抽象剥离,实现对数据对象和数据对象之间的数据逻辑关系细化后,生成相应的规则要素因子;
利用可视化模型化构建方法,根据每个规则要素因子之间的组合连接关系,绘制规则检查流程图;其中,规则检查流程图中通过绘制相应的图形来反映不同的规则要素因子,图形与图形间通过连接线进行连接;
基于图形和图形之间的连接关系即不同规则要素因子之间的逻辑关系,对规则检查流程图进行序列化处理,在完成对数据检查规则描述内容的获取和存储后,实现空间数据规则库引擎的构建。
本发明第二方面公开的一种本发明第一方面公开的任意一种构建空间数据规则库引擎的方法的GIS数据质量检查方法,包括:
由所述规则检查流程图确定可视化模型规则,对可视化模型规则进行解析转换,得到具有逻辑连接关系的规则描述,并生成模型规则数据节点列表;其中,基于数据节点确定基本的执行元素;所述数据节点包括节点索引号、连接线索引号列表、前置节点索引号列表、后置节点索引号列表、ID号字段名称、节点的动作、是否是开始、是否是结果、是否完成、结果描述、图层类型和图层名称;其中,节点的动作包括属性筛选类型、属性筛选参数字符串、空间筛选参数列表、图层名称集合和动作类型;所述动作类型包括无动作、属性筛选和空间筛选;
设置一个最外层的外置循环H;
遍历所述模型规则数据节点列表下所有的节点,在所有节点的工作完成标志为true时,跳出循环H,输出检查结果;其中,未完成检查工作的节点将进入检查工作流程包括:
遍历该节点的前置节点索引号列表,在该节点的前置节点工作完成标志为false时,继续下一次的节点遍历;否则,设置所有节点的工作完成标志为false;
新建一个混合规则数据节点列表,该列表中包括的各节点动作类型初始化为无动作;
基于当前节点的动作类型执行空间筛选或属性筛选;
读取筛选后的数据;
在当前节点是结果时,输出筛选后的数据结果。
在本发明所述的一种构建空间数据规则库引擎的方法及GIS数据质量检查方法中,利用知识抽象表达技术,将空间数据按照特征映射方式进行抽离,最后通过可视化模型构建技术,将数据通过规则模型组合得到的规则进行数据检查,得到相应的检查结果。
实施本发明的构建空间数据规则库引擎的方法及GIS数据质量检查方法,具有以下有益效果:
1、基于可视化模型构建可以复制、修改的空间数据检查规则,形成用户自定义的空间数据检查规则,适用于绝大数的数据检查构建场景;
2、通过构建的空间数据规则库引擎进行GIS数据检查,提高了数据检查的可适配性、易用性和直观性,同时也在很大程度上提高了数据检查的执行效率。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明构建空间数据规则库引擎的方法的一个实施例的流程图;
图2是本发明构建空间数据规则库引擎的方法的另一个实施例的流程图;
图3是本发明构建空间数据规则库引擎的方法中对已获取的数据检查规则进行编辑的流程图;
图4是绘制的流程图实例;
图5是本发明GIS数据质量检查方法的一个实施例的流程图;
图6是本发明GIS数据质量检查方法中的一个实施例的进入检查工作流程的流程图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
实施例1:
本发明的一个实施例,如图1所示,一种构建空间数据规则库引擎的方法,包括以下步骤:
S100、对每项空间数据规则按照特征映射方式进行抽象剥离,实现对数据对象和数据对象之间的数据逻辑关系细化后,生成相应的规则要素因子;
具体的,在进行抽象剥离的时候,将不同主题类型的数据按照特征映射方式进行抽象剥离,将数据对象细化为不可分割的单元因子。
S200、利用可视化模型构建方法,根据每个规则要素因子之间的组合连接关系,绘制规则检查流程图;其中,规则检查流程图中通过绘制相应的图形来反映不同的规则要素因子,图形与图形间通过连接线进行连接。
具体的,规则检查流程图中绘制的图形包括输入数据集图形绘制项、空间筛选图形绘制项、属性筛选图形绘制项、中间数据集图形绘制项和输出结果图形绘制项;在确定每个图形之间连接关系后,通过连接线进行图形与图形间的连接,绘制规则检查流程图;其中:
在对空间筛选图形或属性筛选图形进行编辑的时候包括根据输入数据集的类型进行空间规则或属性规则的选择;编辑所需输入到空间规则或属性规则的规则参数后,实现对空间筛选图形或属性筛选图形的编辑。
需要说明的是,执行空间筛选同时也是一次空间规则的检查过程,当前实施例下认为可以将空间筛选的结果或者其补集,作为空间数据检查规则获取到的结果,属性筛选的编辑原理同空间筛选保持一致。
在对空间筛选图形进行编辑时,可通过空间筛选进入线连接的数据集类型,来确定可以挑选的空间规则,在确定了空间规则后,只需编辑输入空间规则要填写的规则参数,即可完成对空间筛选图形的编辑。
在对属性筛选的图形进行编辑时,可通过属性筛选进入线连接的数据集,来提供展示给用户的属性包括字段列表和图形类型;其中,在绘图软件中,提供一个可编辑的且可以让用户自定义属性规则的编辑项,来对属性筛选图形进行编辑,另外在对属性筛选图形进行编辑时,也可以通过拼接SQL语句的方式,来编辑、形成属性筛选规则。
需要说明的是,最终的属性筛选规则在执行时都会生成为相应的SQL语句,来确保一个统一的执行结果输出;其中,输出结果可由属性筛选或者空间筛选来连接,一个检查规则至少需要包含一个输出结果,输出结果可以进行编辑来选择是取筛选结果还是筛选结果的补集,同时也可以编辑输出结果的描述内容,即向用户显示“检查结果是否成功”、“在什么步骤得到此输出结果”等。
另外在设置输入数据集的数据集名称时,可以通过绘图软件中已经加载的图层树进行设定。对于中间数据集,则可以考虑不编辑其数据集名称,当通过连接线连接到中间数据集的时候,通过判断其进入连接线的另一端的图形类型,来确定数据集名称,例如,如果是属性筛选,则由属性筛选参与的数据集名称,得到中间数据集名称。
输出结果图形可由属性筛选图形或者空间筛选图形来连接,其中,一个检查规则至少需要包含一个输出结果。在输出结果时,可以对输出结果图像进行编辑,即可以选择取筛选结果进行输出,也可以通过获取选择筛选结果的补集进行输出,同时也可以编辑输出结果图像的描述内容,其中,输出结果图像的描述内容包括描述检查结果是否成功,或在什么步骤得到的此输出结果。
具体的,可以利用任意一款能够绘制流程图的软件,进行可视化模型的构建。执行流程图绘制程序的时候,首先,新建一个空的检查规则项目;其次,在软件的用户操作界面上,选择几个绘制工具进行流程绘制。其中,绘制工具可以包括:输入数据集、中间数据集、空间筛选、属性筛选、输出结果、连接线。需要说明的是,当前除连接线外,其他绘制工具绘制的均为图形。绘制流程图时,通过连接线将对应的图形连接到一起,基于输入数据之间的逻辑关系形成检查规则逻辑。
最后,在规则检查流程图编辑完成之后,确保没有孤立的图形和逻辑连接错误的情况下,保存流程图,并退出当前的编辑程序,绘制的流程图实例可参考图4。
S300、基于图形和图形之间的连接关系即不同规则要素因子之间的逻辑关系,对规则检查流程图进行序列化处理,在完成对数据检查规则描述内容的获取和存储后,实现空间数据规则库引擎的构建。其中,可以采用json序列化或xml序列化方法,实现对数据检查规则描述内容的获取和存储。
具体的,对编辑好的流程图进行序列化即采用软件控件自带的json序列化或xml序列化,序列化为得到相应的字符串即可。需要说明的是,通过可视化模型化构建技术来构建数据检查规则,即可将规则保存起来,也可以在特定应用场景下,通过复制、修改,来形成用户所需的自定义规则,便于进行数据检查。
本实施例公开的一种构建空间数据规则库引擎的方法,利用可视化模型构建技术进行数据检查规则的构建,该构建方案具有直观性、便捷性、易操作行;同时,由于该构建方案适用于绝大数的数据检查构建场景,所以该构建方案还具有高度的普适性。经过程序优化后,通过运行规则库构建得到的数据检查规则能保持高效的运行效查软件。
实施例2:
如图2所示,其为本发明构建空间数据规则库引擎的方法的另一个实施例的流程图,在需要对已获取的数据检查规则进行编辑时,基于实施例1在完成了步骤S300的空间数据规则库引擎的构建之后,还包括:
S400、对已获取的数据检查规则进行编辑;其中(可参考图3,其为本发明构建空间数据规则库引擎的方法中对已获取的数据检查规则进行编辑的流程图),当前步骤下包括以下子步骤:
S410、对规则检查流程图进行序列化处理后得到的规则字符串进行反序列化处理,得到反序列化对象。
S420、使用规则检查流程图初始化函数,对反序列化对象进行初始化,还原出对应的规则检查流程图。
S430、重新编辑所需输入到空间规则或属性规则的规则参数后,完成对数据检查规则的更新。
具体的,在将可视化模型规则进行解析并执行的过程中,基本元素是使用的模型规则数据节点,该节点包含以下要素:节点索引、节点对象编号、节点的前置节点索引号列表、节点的动作、节点的后置节点索引号列表、输入连接线的索引号列表、输出连接线的索引号列表、是否是结果、是否是开始、是否完成、是否取补集、结果描述、中间数据库路径、图层名称、ID号字段名称、图层类型、对象列表等等。节点的动作成员为:节点对象编号、属性筛选类型、属性筛选参数字符串、属性筛选sql语句、规则代码、空间筛选参数列表、图层名称集合、动作类型等等。动作类型则包括:无动作、属性筛选、空间筛选单数据集、空间筛选双数据集等等。
本实施例2的公开的一种构建空间数据规则库引擎的方法,在进行规则编辑的时候,通过反序列化方式根据字节流中保存的对象状态及描述信息,通过反序列化重建对象,可以将对象转为字节流存储到硬盘上,当系统停机的时候,字节流还会在硬盘上默默等待,等待下一次系统的启动,把序列化的对象,通过反序列化为原来的对象,并且序列化的二进制序列能够减少存储空间。
实施例3:
请参考图5,其为本发明GIS数据质量检查方法的一个实施例的流程图,基于实施例1的执行方法,该方法是在步骤S300之后还包括:
S500、由所述规则检查流程图确定可视化模型规则,对可视化模型规则进行解析转换,得到具有逻辑连接关系的规则描述,并生成模型规则数据节点列表;其中,基于数据节点确定基本的执行元素;所述数据节点包括节点索引号、连接线索引号列表、前置节点索引号列表、后置节点索引号列表、I D号字段名称、节点的动作、是否是开始、是否是结果、是否完成、结果描述、图层类型和图层名称;其中,节点的动作包括属性筛选类型、属性筛选参数字符串、空间筛选参数列表、图层名称集合和动作类型;所述动作类型包括无动作、属性筛选和空间筛选;
其中,在生成模型规则数据节点列表的时候:
遍历流程图中的对象,确定对象的动作类型,并将每个对象的索引号存入对象字典;设每个对象的索引号记为i,每个对象的索引号将进一步记录并存储到对象字典里。其中,如果对象为连接线,则将对象的索引号存储到记录连接线的字典里,并继续下一次循环。定义包括多项混合规则数据节点的列表,需要说明的是,每个混合规则数据节点的动作类型将被初始化为无动作,是否是结果,是否是开始,是否完成,是否取补集均初始化为否。在初始化的过程中还包括:
清空对象列表,中间数据库路径设为空,节点对象编号初始化为i,节点索引初始化为当前节点混合规则数据节点列表的大小。
具体的,根据流程图中的对象的类型不同,会有不同的动作,将对象的动作类型分为无动作和执行属性筛选动作或空间筛选动作,其中:
1、当动作类型为无动作时,将对应的节点存入模型规则数据节点列表,并将节点索引号存入第一索引字典;
2、当动作类型为属性筛选或空间筛选时,将对应的节点动作对象存入模型规则数据节点列表,并将节点索引号存入第二索引字典;为了进行阶段动作对象的关联操作,还需遍历第二索引字典,并针对每个节点动作对象包括:
取出对象对应的出去线所指向的数据集对象edit,从对象字典中获取对象edit的索引号edit_index;基于获取到的索引号edit_index和第一索引字典,从第一索引字典中取出以edit_index为键值的混合规则数据节点对象o1,并将当前节点动作对象赋值到对象o1的节点动作中。
确定、遍历节点动作对象的进入线,得到每条进入线对应的数据集对象对应的模型规则数据节点对象o2;具体的,通过连接线字典取出节点动作对象对应的出去线的索引号,并将其记录到对象o1的进入连接线的索引号列表中。其中,在确定对象o2时,将对象o1的节点索引加入到对象o2的后置节点索引列表中。并将该当前对象下对应的索引号加入到对象o2的出去连接线的索引号列表中。
S600、设置一个最外层的外置循环H;
S700、遍历所述模型规则数据节点列表下所有的节点,在所有节点的工作完成标志为true时,跳出循环H,输出检查结果。其中,对于未完成检查工作的节点,其将进入检查工作流程,并执行以下的检查步骤(请参考图6):
S710、遍历该节点的前置节点索引号列表,查看当前节点的前置节点是否完成了检查工作,在该节点的前置节点工作完成标志为false时,继续下一次的节点遍历;否则,设置所有节点的工作完成标志为false;需要说明的时,前置节点与其混合规则数据节点j的工作完成标志保持一致,当节点j的工作完成标志为false时,可只晓得是相应的前置节点工作完成标志也为false。
S720、新建一个混合规则数据节点列表,该列表中包括的各节点动作类型初始化为无动作;
S730、基于当前节点的动作类型执行空间筛选或属性筛选;
S740、读取筛选后的数据;
S750、在当前节点是结果时,输出筛选后的数据结果。
具体的,将步骤S730-S750设为part1、part2和part3,即结合part1、part2和part3这三步,完成对应节点下的数据检查工作。将执行part1、part2和part3所消耗的时间比例的初始值分别设为0.5,0.4和0.1。后续在执行的时候,如果当前的可视化模型规则数据节点的节点动作的动作类型为无动作,则将执行part1所消耗的时间比例赋值为0;获取当前的可视化模型规则数据节点的图层名称layername,如果在预定义的要素数据字典mapAllFeatures中包含了当前的图层名称layername,则将执行part2所消耗的时间比例赋值为0,即表示当前图层layername下对应的数据已经加载到内存中,接下来所需要做的工作就是检查是否需要加载要素的属性,设其执行过程为A。
过程A的执行流程为:初始化的时候,设置包含要加载要素的属性标志HasAttr为false。依次遍历当前节点的后置节点索引号列表,并从模型规则数据节点列表得到该后置节点索引号对应的模型规则数据节点j1,如果节点j1的动作类型为属性筛选,则将属性标志HasAttr设为true,并跳出循环。如果遍历完当前节点的后置节点索引号列表后,属性标志HasAttr仍然为false,则将执行part3所消耗的时间比例赋值为0,即不需要加载属性。
根据前述的内容,执行part1、part2或part3所消耗的时间比例均有可能赋值为0时,然而,为了有效的记录检查进度,本申请中考虑将part1、part2、part3对应的消耗时间比例均设为0.1,计算part1、part2和part3分别占总执行时间的比例,设为ratio1、ratio2、ratio3。
在初始化的时候,即还未开始记录节点检查工作进度的时候,设进度记录值sumnow为0,其将作为之后进度计算需要用到的参数。以下开始执行part1部分的工作,即获取上一步的数据并进行空间筛选或者属性筛选运算。
①Part1的工作开始:
新建一个记录要素对象ID的列表listIDS,根据当前节点对应的节点动作类型不同,分为不同情况讨论:
首先,如果动作类型为属性筛选,则取当前节点的前置节点索引号prevIndex,得到前置节点索引号prevIndex对应的混合规则数据节点j3,获取节点j3的中间数据库路径dbPath。根据当前属性筛选的筛选类型,分不同情况得到查询条件whereClause。具体为:若属性筛选类型为根据筛选步骤得到的简单的筛选条件,则根据不同的属性筛选参数字符串,解析其内容,生成不同的查询条件whereClause。若属性筛选类型本身为sql语句,则直接取节点动作对应的sql语句作为查询条件whereClause。若当前节点的是否取补集为是,则将查询条件whereClause加上一个not条件,即取反。其次,打开节点j3的中间数据库路径dbPath对应的数据库,并执行查询条件whereClause,得到在查询条件whereClause下图层含有的对象数allcnt1。接着,执行sql语句,将搜索的内容变成ID号字段名称。新建一个索引号列表vecItems,将当前节点的节点动作的索引号,以及节点的进入连接线的索引号列表里的所有索引号,加入到索引号列表vecItems中,初始化一个计数变量docnt,设为0。
接下来遍历数据库打开的查询语句,逐步读取ID号。读取每个记录中的ID号字段名称为字段的值,并添加到前述listIDS中。其中,每读取一个ID号时,计数变量docnt都会加1即代表当前读取了一个ID内容。这时,计算系统运行总进度的计算公式为:
(int)((docnt*ratio1/(allcnt1*calctimes)+sumnow/calctimes)*100.0f+100.0f*time/calctimes);
其中,calctimes是总的可视化模型规则节点数量,time代表目前已经完成检查工作的节点数量。为了使得执行进度更加直观化,也可以将索引号列表vecItems传递出去,以便通知外部系统当前是哪个节点正在发生变化,以及改变节点的进入线样式使得流程图看起来是正在进行动作的。
如果动作类型为空间筛选,则可以通过当前节点的节点动作的规则代码,得到规则实例对象。具体的,可以先定义两个对象列表featlist1和featlist2,如果当前节点的前置节点的个数为1,则将列表featlist1赋值为当前节点的前置节点的对象列表;如果当前节点的前置节点个数为2,则列表featlist1赋值为当前节点的第一个前置节点的对象列表,featlist2赋值为当前节点的第二个前置节点的对象列表。之后新建一个四叉树tree,和外包矩形列表lstEnvelopes。如果判断得到该节点对应规则的作用对象个数不为1(比如判断多边形是否自相交,作用对象为1个,判断点和面是否包含,则作用对象为2个),当列表featlist2有值并且列表featlist2包括的对象个数要比列表featlist1包括的对象个数多时,获取列表featlist2中所有对象的外包矩形,并将其作为key,添加到tree中;否则是将列表featlist1的所有对象加入到tree中。再定义两个ID号列表listResults和listResults2,其分别存储可能存在的两个数据集的筛选ID。
接下来,当该节点对应规则的作用对象个数为1时,遍历列表featlist1里的所有对象,并取出单个feat(将规则设置的参与对象定义为feat),执行规则,获得执行结果。如果执行结果为通过,并且若当前节点的是否取补集为否,则将当前的对象feat的ID号加入到ID号列表listResults中。否则若执行结果不通过,并且若当前节点的是否取补集为是,则将当前的对象feat的ID号加入到ID号列表listResults中。
当该节点对应规则的作用对象个数为2时,设置要遍历的对象列表candidate为列表featlist1;如果当前规则为两个数据集,并且之前tree里加载的是列表featlist1中的所有对象,则设置要遍历的对象列表candidate为featlist2。遍历、并从对象列表candidate中取出对象feat。获取对象feat的外包矩形,并根据设置的空间参数中的容限参数,将外包矩形进行扩展。基于四叉树tree进行所得外包矩形空间对象的查询,并遍历这些查询到的空间对象。设每次遍历的空间对象为feat2。如果当前节点的前置节点数量为1即:规则为只有一个数据集参加的规则,且对象feat和对象feat2的ID号相同,则跳过;如果四叉树tree之前加载的是列表featlist1,则对规则设置作用对象的顺序为feat2,feat,否则为feat,feat2,即:一个是被检查要素,一个是检查要素。执行规则,如果执行结果为通过,且当前节点的“是否取补集”为否,或者执行结果不通过,且当前节点的“是否取补集”为是,则tree之前加载的是列表featlist1,将当前对象feat的ID号加入到listResults中,将对象feat2的ID号加入到listResults2中,否则将当前的对象feat的ID号加入到listResults2中,将对象feat2的ID号加入到listResults中。执行完所有的遍历之后,将listResults结果加入到listIDS中作为结果输出。
在空间筛选中,每次遍历时,参数docnt也会加1,其用同样的方法,可以计算当前节点的工作执行进度,这里不再详细赘述。
上述执行完part1部分,将sumnow加上ratio1,代表进度已经进行到part2。以下详述part2的内容,Part2主要工作是读取数据部分。
②Part2的工作开始:
首先新建一个对象ID号和对象的字典mapFeatures,若要素数据字典mapAllFeatures包含当前的图层,则字典mapFeatures取关键字为当前图层名称的mapAllFeatures里的值即可,否则进行数据读取操作。在进行数据读取的收,首先,通过图层名称,打开图层对象,获取图层里包含的对象个数allcnt1;其次,遍历图层对象,并将其插入到字典mapFeatures中,对应插入的关键字为对象的id,同时,设置总体进度的内容;最后,将图层数据全部读取到字典mapFeatures中后,再以图层名称为关键字,将字典mapFeatures插入到要素数据字典mapAllFeatures中,这样就完成了数据读取。
需要说明的时,在执行完part2部分的工作之后,sumnow将加上ratio2的值,并开始执行part3的工作。
③Part3的工作开始,该部分工作主要任务是整理输出结果,为下一步的空间和属性的工作做准备,具体的:
若当前节点是结果,则整理输出结果。其主要过程是,将前面所得到的listIDS,节点的图层名称,以及当前节点的结果描述,存储到一个结构体中,再将这个结构体存储到所有的输出结果列表中,以备后续输出结果数据使用;
若当前节点不是结果,若当前节点是开始,则listIDS等于mapFeatures的keys。初始化变量HasSpatial为false,HasAttr为false,遍历当前节点的后置节点,若某一后置节点的节点动作为属性筛选,则HasAttr为true。若某一后置节点的节点动作为空间筛选,则HasSpatial为true。如果HasSpatial为true,则遍历listIDS,通过字典mapFeatures取出每一个id号对应的feature插入到当前节点的要素列表中。如果HasAttr为true,则新建一个随机路径下的数据库,和一个不重复的索引号字段名,将数据库路径和字段名赋值到当前节点对应部分,遍历listIDS,通过字典mapFeatures取出每一个id对应的feature。通过feature可以获取字段名列表和其值列表,并拼凑为相应的插入语句,执行此插入语句,将数据插入到数据库中。
执行第三步之后,sumnow加上ratio3的值。并设置当前节点的是否完成标志为完成即true,并且donecnt自增,最终完成了一个外置循环H的一个节点的过程。
之所以通过可视化模型构建的空间数据规则能够顺利执行,关键点在于数据检查的逻辑分割成了数据节点和动作节点。数据节点和动作节点环环相扣,相互依赖,通过遍历这个循环,每次都能找到下一步的工作,以及工作内容、工作流程。比如:需要做空间筛选或者属性筛选,那就要求能得到上一步的数据。如果没有执行完,就先不执行这一步,直到上一步的任务执行完,循环到这个节点时才会开始执行。因此,该技术专利采取多线程的方式来运行最外层的外置循环检查,能够最大的限度利用服务器资源,实现每个线程都能同步做相应的事务,从而最大程度的提高运行效率。由于可视化模型构建的相互依赖关系被存储到结点中,所有步骤全部被执行完成时,流程就执行完毕,意味着数据检查也就成功了。
本发明的构建空间数据规则库引擎的方法及GIS数据质量检查方法,基于可视化模型构建可以复制、修改的空间数据检查规则,形成用户自定义的空间数据检查规则,适用于绝大数的数据检查构建场景;通过构建的空间数据规则库引擎进行GIS数据检查,提高了数据检查的可适配性、易用性和直观性,同时也在很大程度上提高了数据检查的执行效率。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种构建空间数据规则库引擎的方法,其特征在于,包括以下步骤:
对每项空间数据规则按照特征映射方式进行抽象剥离,实现对数据对象和数据对象之间的数据逻辑关系细化后,生成相应的规则要素因子;
利用可视化模型化构建方法,根据每个规则要素因子之间的组合连接关系,绘制规则检查流程图;其中,规则检查流程图中通过绘制相应的图形来反映不同的规则要素因子,图形与图形间通过连接线进行连接;
基于图形和图形之间的连接关系即不同规则要素因子之间的逻辑关系,对规则检查流程图进行序列化处理,在完成对数据检查规则描述内容的获取和存储后,实现空间数据规则库引擎的构建。
2.根据权利要求1所述的一种构建空间数据规则库引擎的方法,其特征在于,所述规则检查流程图中绘制的图形包括输入数据集图形绘制项、空间筛选图形绘制项、属性筛选图形绘制项、中间数据集图形绘制项和输出结果图形绘制项;在确定每个图形之间连接关系后,通过连接线进行图形与图形间的连接,绘制规则检查流程图;其中:
在对空间筛选图形或属性筛选图形进行编辑的时候包括根据输入数据集的类型进行空间规则或属性规则的选择;编辑所需输入到空间规则或属性规则的规则参数后,实现对空间筛选图形或属性筛选图形的编辑。
3.根据权利要求1所述的一种构建空间数据规则库引擎的方法,其特征在于,在需要对已获取的数据检查规则进行编辑时包括:
对规则检查流程图进行序列化处理后得到的规则字符串进行反序列化处理,得到反序列化对象;
使用规则检查流程图初始化函数对反序列化对象进行初始化,还原出对应的规则检查流程图;
重新编辑所需输入到空间规则或属性规则的规则参数后,完成对数据检查规则的更新。
4.一种根据权利要求1-3所述的任意一种构建空间数据规则库引擎的方法的GIS数据质量检查方法,其特征在于,包括:
由所述规则检查流程图确定可视化模型规则,对可视化模型规则进行解析转换,得到具有逻辑连接关系的规则描述,并生成模型规则数据节点列表;其中,基于数据节点确定基本的执行元素;所述数据节点包括节点索引号、连接线索引号列表、前置节点索引号列表、后置节点索引号列表、ID号字段名称、节点的动作、是否是开始、是否是结果、是否完成、结果描述、图层类型和图层名称;其中,节点的动作包括属性筛选类型、属性筛选参数字符串、空间筛选参数列表、图层名称集合和动作类型;所述动作类型包括无动作、属性筛选和空间筛选;
设置一个最外层的外置循环H;
遍历所述模型规则数据节点列表下所有的节点,在所有节点的工作完成标志为true时,跳出循环H,输出检查结果;其中,未完成检查工作的节点将进入检查工作流程包括:
遍历该节点的前置节点索引号列表,在该节点的前置节点工作完成标志为false时,继续下一次的节点遍历;否则,设置所有节点的工作完成标志为false;
新建一个混合规则数据节点列表,该列表中包括的各节点动作类型初始化为无动作;
基于当前节点的动作类型执行空间筛选或属性筛选;
读取筛选后的数据;
在当前节点是结果时,输出筛选后的数据结果。
5.根据权利要求4所述的一种GIS数据质量检查方法,其特征在于,所述对可视化模型规则进行解析转换,得到具有逻辑连接关系的规则描述,并生成模型规则数据节点列表具体为:
遍历流程图中的对象,确定对象的动作类型,并将每个对象的索引号存入对象字典;
根据对象的动作类型,当动作类型为无动作时,将对应的节点存入模型规则数据节点列表,并将节点索引号存入第一索引字典;当动作类型为属性筛选或空间筛选时,将对应的节点动作对象存入模型规则数据节点列表,并将节点索引号存入第二索引字典;
遍历第二索引字典,针对每个节点动作对象包括:
取出其出去线所指向的数据集对象edit,从对象字典中获取对象edit的索引号edit_index;基于索引号edit_index和第一索引字典,确定节点动作对象对应的混合规则数据节点对象o1;
确定、遍历节点动作对象的进入线,得到每条进入线对应的数据集对象对应的模型规则数据节点对象o2。
6.根据权利要求5所述的一种GIS数据质量检查方法,其特征在于,所述遍历流程图中的节点对象,确定节点对象的动作类型具体为:
当对象类型为属性筛选时,则将对象转化为属性筛选对象,并设置模型规则数据节点的节点动作的动作类型为属性筛选;属性筛选对象的sql语句、属性筛选类型和属性筛选参数字符串将赋值到模型规则数据节点的节点动作中;
当对象类型为空间筛选时,则将对象转化为空间筛选对象,并将空间筛选对象的图层名称列表赋值到节点动作中;其中,根据空间筛选对象的接入线数量,定义节点动作的动作类型为空间筛选单数据集或空间筛选双数据集;
当对象类型为输入数据集时,则将对象转化为输入数据集对象;当对象类型为中间数据集时,则将对象转化为中间数据集对象;当对象类型为输出数据集时,则将对象转化为输出数据集对象;其中:
定义输入数据集对象、中间数据集对象和输出数据集对象的动作类型为无动作类型;
输入数据集节点、中间数据集节点和输出数据集节点将存入模型规则数据节点列表。
7.根据权利要求5所述的一种GIS数据质量检查方法,其特征在于,当节点动作对象的进入线的数量为2,取出当前节点动作对象第一条进入线对应的模型规则数据节点对象的图层名称,若图层名称与空间筛选对象的第一个图层名称相同,则先添加第一条进入线对应的模型规则数据节点对象的节点索引,再添加第二条进入连接线对应的模型规则数据节点对象的节点索引,到对象的前置节点索引号列表中;
否则,先添加第二条进入线对应的模型规则数据节点对象的节点索引,再添加第一条进入线对应的模型规则数据节点对象的节点索引,到对象的前置节点索引号列表中。
8.根据权利要求4所述的一种GIS数据质量检查方法,其特征在于,在检查的过程中,当基于当前节点的动作类型执行空间筛选时包括:
通过当前节点的节点动作的规则代码,得到规则实例对象;
定义对象列表featlist,并将列表featlist作为当前节点的前置节点的对象列表;
定义用于存储对象ID的ID号列表listResults;
遍历列表featlist里的对象,取出规则设置参与对象,并执行规则,获得执行结果;其中,如果执行结果为通过即执行成功,并且若当前节点的是否取补集为否,则将当前参与对象的ID号加入到listResults中;否则若执行结果为不通过,并且当前节点的是否取补集为是,则将当前参与对象的ID号加入到listResults中;
记录空间筛选的执行进度,在执行完对列表featlist的遍历之后,将listResults中记录的数据作为结果输出。
9.根据权利要求8所述的一种GIS数据质量检查方法,其特征在于,在遍历列表featlist里的对象,取出规则设置参与对象的时候包括:
新建一个四叉树tree和外包矩形列表lstEnvelopes;
遍历列表featlist里的对象,并获取对象的外包矩形,根据先前设置的空间参数中的容限参数,进行外包矩形的扩展;
对四叉树tree进行查询,得到外包矩形查询到的空间对象,并遍历这些对象;
定义每次遍历的对象为feat2,根据四叉树tree之前加载的列表featlist,设定规则设置作用对象的顺序,即确定被检查要素以及检查要素。
10.根据权利要求4所述的一种GIS数据质量检查方法,其特征在于,在检查的过程中,基于当前节点的动作类型执行属性筛选时包括:
获取当前节点的前置节点索引号prevIndex,从混合规则数据节点列表获取prevIndex对应的混合规则数据节点j,以及节点j的存储路径dbpath;
根据属性筛选参数字符串进行查询条件的解析;
基于存储路径dbpath,执行查询条件条件得到图层含有的对象数allcnt1,逐步读取ID号;
记录属性筛选的执行进度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010895302.5A CN112035588B (zh) | 2020-08-31 | 2020-08-31 | 构建空间数据规则库引擎的方法及gis数据质量检查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010895302.5A CN112035588B (zh) | 2020-08-31 | 2020-08-31 | 构建空间数据规则库引擎的方法及gis数据质量检查方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035588A true CN112035588A (zh) | 2020-12-04 |
CN112035588B CN112035588B (zh) | 2021-05-25 |
Family
ID=73587149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010895302.5A Active CN112035588B (zh) | 2020-08-31 | 2020-08-31 | 构建空间数据规则库引擎的方法及gis数据质量检查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035588B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434938A (zh) * | 2021-06-29 | 2021-09-24 | 广联达科技股份有限公司 | Bim模型的检查方法、装置、计算机设备及存储介质 |
CN115080681A (zh) * | 2022-07-21 | 2022-09-20 | 上海叁零肆零科技有限公司 | 一种gis数据检查方法及系统 |
CN116167365A (zh) * | 2023-04-18 | 2023-05-26 | 安徽思高智能科技有限公司 | 一种基于表格模板的流程图生成方法 |
CN117573327A (zh) * | 2024-01-15 | 2024-02-20 | 吉奥时空信息技术股份有限公司 | 一种智能调度和趋势监控的方法、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976424A (zh) * | 2010-10-18 | 2011-02-16 | 江西省电力科学研究院 | 利用智能规则库引擎生成电力系统污区分布图的方法 |
CN102306166A (zh) * | 2011-08-22 | 2012-01-04 | 河南理工大学 | 一种移动地理信息空间索引方法 |
WO2017206484A1 (zh) * | 2016-05-30 | 2017-12-07 | 中兴通讯股份有限公司 | 地理数据呈现方法及装置 |
US10198521B2 (en) * | 2005-06-27 | 2019-02-05 | Google Llc | Processing ambiguous search requests in a geographic information system |
CN110243354A (zh) * | 2019-07-04 | 2019-09-17 | 桂林理工大学 | 一种城市违法建筑物动态监测方法和系统 |
CN110659342A (zh) * | 2019-08-21 | 2020-01-07 | 北京吉威数源信息技术有限公司 | 基于信息提取特征的规则库自动制图综合处理方法及系统 |
CN111221514A (zh) * | 2020-01-13 | 2020-06-02 | 陕西心像信息科技有限公司 | 基于OsgEarth的三维可视化组件实现方法及系统 |
-
2020
- 2020-08-31 CN CN202010895302.5A patent/CN112035588B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10198521B2 (en) * | 2005-06-27 | 2019-02-05 | Google Llc | Processing ambiguous search requests in a geographic information system |
CN101976424A (zh) * | 2010-10-18 | 2011-02-16 | 江西省电力科学研究院 | 利用智能规则库引擎生成电力系统污区分布图的方法 |
CN102306166A (zh) * | 2011-08-22 | 2012-01-04 | 河南理工大学 | 一种移动地理信息空间索引方法 |
WO2017206484A1 (zh) * | 2016-05-30 | 2017-12-07 | 中兴通讯股份有限公司 | 地理数据呈现方法及装置 |
CN110243354A (zh) * | 2019-07-04 | 2019-09-17 | 桂林理工大学 | 一种城市违法建筑物动态监测方法和系统 |
CN110659342A (zh) * | 2019-08-21 | 2020-01-07 | 北京吉威数源信息技术有限公司 | 基于信息提取特征的规则库自动制图综合处理方法及系统 |
CN111221514A (zh) * | 2020-01-13 | 2020-06-02 | 陕西心像信息科技有限公司 | 基于OsgEarth的三维可视化组件实现方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113434938A (zh) * | 2021-06-29 | 2021-09-24 | 广联达科技股份有限公司 | Bim模型的检查方法、装置、计算机设备及存储介质 |
CN113434938B (zh) * | 2021-06-29 | 2024-02-13 | 广联达科技股份有限公司 | Bim模型的检查方法、装置、计算机设备及存储介质 |
CN115080681A (zh) * | 2022-07-21 | 2022-09-20 | 上海叁零肆零科技有限公司 | 一种gis数据检查方法及系统 |
CN115080681B (zh) * | 2022-07-21 | 2022-11-25 | 上海叁零肆零科技有限公司 | 一种gis数据检查方法及系统 |
CN116167365A (zh) * | 2023-04-18 | 2023-05-26 | 安徽思高智能科技有限公司 | 一种基于表格模板的流程图生成方法 |
CN117573327A (zh) * | 2024-01-15 | 2024-02-20 | 吉奥时空信息技术股份有限公司 | 一种智能调度和趋势监控的方法、设备及存储介质 |
CN117573327B (zh) * | 2024-01-15 | 2024-04-16 | 吉奥时空信息技术股份有限公司 | 一种智能调度和趋势监控的方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112035588B (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035588B (zh) | 构建空间数据规则库引擎的方法及gis数据质量检查方法 | |
CN105511873B (zh) | 用户界面控件展示方法及装置 | |
CN109189469B (zh) | 基于反射的安卓应用微服务化方法及系统 | |
CN108549605B (zh) | 一种自动化测试方法 | |
CN109189374B (zh) | 基于对象引用链的对象构造代码生成方法及系统 | |
CN108897567B (zh) | 基于Unity的软件加载文件的方法、装置、设备及存储介质 | |
US10489130B2 (en) | Configurable memory layouts for software programs | |
KR20030074647A (ko) | 제품 구성 방법 | |
CN109240666B (zh) | 基于调用栈和依赖路径的函数调用代码生成方法及系统 | |
JP4588295B2 (ja) | シーケンス解析方法およびシーケンス解析装置 | |
WO2020140940A1 (zh) | 代码的生成方法、装置、设备及存储介质 | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
EP3721354A1 (en) | Systems and methods for querying databases using interactive search paths | |
US8935657B2 (en) | Model-to-model transformation by kind | |
US10127136B2 (en) | Identifying and visualizing suboptimal memory layouts in software programs | |
Sahraoui et al. | A concept formation based approach to object identification in procedural code | |
CN115469860B (zh) | 基于指令集的需求到软件领域模型的自动生成方法及系统 | |
WO2019144852A1 (zh) | 一种新型计算机编程语言 | |
Komendantskaya et al. | Proof mining with dependent types | |
US8010572B1 (en) | Kstore scenario simulator processor and XML file | |
CN111026776B (zh) | 关系型数据库中的查询方法及装置 | |
CN114296726A (zh) | 一种代码生成方法、装置、计算机设备和存储介质 | |
CN113672509A (zh) | 自动化测试方法、装置、测试平台及存储介质 | |
CN113778541A (zh) | 一种小程序生成方法、装置、电子设备和存储介质 | |
US10217254B2 (en) | Graphical editing of memory layout rules for software programs |
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 |