本发明涉及数据处理,具体涉及一种基于key-value的不合理悬挂点质检方法及系统。
背景技术:
1、悬挂点是线层矢量数据的一种表示形式,若某节点位于线要素的端点,且不与其他线要素完全相邻,这个节点就是悬挂点。有些悬挂点在线图层中是合理的,如道路、河流、管线等线状地物的尽头,或是在图廓的边界处等。有些悬挂点则是不合理的,如两条本该捕捉的折线(实际未完全相邻)、一条折线本应捕捉到另一条折线(实际差一点未捕捉或捕捉出去了)、一条折线捕捉到了另一条折线本应相交打断(实际未打断)。这些不合理悬挂点会影响项目成果数据的质量和相关统计分析,甚至会影响后期的制图效果。
2、不合理悬挂点的质检几乎是所有矢量数据的必查质检项,工作量巨大,人工检查非常费时费力,极容易出现漏检或误报极多的情况。
3、针对不合理悬挂点的检查方法,刘雨霞充分利用micro station中fence工具功能,提出了一种基于fence判断悬挂点质检的方法,即在每一条弧段的端点构建半径为限差的围栅,再由围栅去选择弧段,如果只选择了一条弧段,则判断其为悬挂点。赵永兰提出了基于重心坐标自动检查悬挂点的方法,即两个要素的重心坐标如果超出了设定阈值则不可能出现悬挂点,如果小于阈值则逐个计算比较是否存在悬挂点。陈琰如提出了一种基于过滤条件的不合理悬挂点检查方法,针对所有存在的悬挂点,根据一定的特征和过滤条件,先将合理的悬挂点提取出来并进行滤除,剩下的悬挂点再进行人工排查,进而提高检查效率。
4、已有的悬挂点检查方法,虽然一定程度上提高了检查质量,但其仍存在如下缺陷:
5、1)如果是针对一个市或一个省的海量矢量数据成果时,计算量大,运算时间长,检查效率较低,不能满足实际生产需求;
6、2)部分算法误报太多,后期人工排查量巨大,严重影响项目进度;
7、3)部分算法容易出现漏检的情况,不能保证成果质量。
技术实现思路
1、针对现有技术中存在的不足之处,为了对海量矢量数据悬挂点错误进行质检,本发明提供一种基于key-value的不合理悬挂点质检方法及系统,其能够高效、准确、全面的识别不合理悬挂点错误,不会出现误报、漏报的情况,经过实践推广应用表明:该方法能够在保证成果质量的前提下,提高生产效率,降低生产成本,产生良好的社会价值和经济价值。
2、本发明公开了一种基于key-value的不合理悬挂点质检方法,包括:
3、步骤1、依次读取待检查矢量数据库中的每个图层,判断图层类型,若是线图层,则进入步骤2;
4、步骤2、读取线图层的每个折线要素,判断该要素是否闭合;若不闭合,则记录该要素的端点,并将所有端点保存在列表lstallnodes中;
5、步骤3、定义字典dictionary<key,value>dic,其中key为string字符串类型,value为countandpoint,countandpoint为一种自定义数据结构,count表示string的个数,point即lstallnodes列表中的点元素;
6、步骤4、将lstallnodes转换为字典dic,依次读取lstallnodes中的每个点坐标(x,y),按照项目要求的保存小数位个数,并将其组成x′+y′的字符串形式;当dic的键值不包含x′+y′时,添加键值,此时countandpoint中的count为1;当dic的键值包含x′+y′时,dic的键不变,countandpoint中的count自加1,point不变;
7、步骤5、将dic转换为列表lstalldangles,lstalldangles表示线图层中的所有悬挂点,根据键依次读取字典dic中的值countandpoint,当count为1时,则表示countandpoint中的point为悬挂点,并将其保存在列表lstalldangles中;
8、步骤6、依次读取lstalldangles中的悬挂点,判断该悬挂点与线图层中在阈值范围内的要素个数,当个数大于1时,表明此悬挂点是该图层中的不合理悬挂点,并将其保存。
9、作为本发明的进一步改进,所述步骤1,还包括:
10、若不是线图层,则进行下个图层类型的判断。
11、作为本发明的进一步改进,所述步骤2,还包括:
12、若折线要素闭合,则进行下个折线要素的判断。
13、本发明还公开了一种基于key-value的不合理悬挂点质检系统,包括:
14、第一读取及判断模块,用于依次读取待检查矢量数据库中的每个图层,判断图层类型,若是线图层,则进行折线要素的读取;
15、第二读取及判断模块,用于当图层类型是线图层时,读取线图层的每个折线要素,判断该要素是否闭合;若不闭合,则记录该要素的端点,并将所有端点保存在列表lstallnodes中;
16、定义模块,用于定义字典dictionary<key,value>dic,其中key为string字符串类型,value为countandpoint,countandpoint为一种自定义数据结构,count表示string的个数,point即lstallnodes列表中的点元素;
17、第一转换模块,用于将lstallnodes转换为字典dic,依次读取lstallnodes中的每个点坐标(x,y),按照项目要求的保存小数位个数,并将其组成x′+y′的字符串形式;当dic的键值不包含x′+y′时,添加键值,此时countandpoint中的count为1;当dic的键值包含x′+y′时,dic的键不变,countandpoint中的count自加1,point不变;
18、第二转换模块,用于将dic转换为列表lstalldangles,lstalldangles表示线图层中的所有悬挂点,根据键依次读取字典dic中的值countandpoint,当count为1时,则表示countandpoint中的point为悬挂点,并将其保存在列表lstalldangles中;
19、第三读取及判断模块,用于依次读取lstalldangles中的悬挂点,判断该悬挂点与线图层中在阈值范围内的要素个数,当个数大于1时,表明此悬挂点是该图层中的不合理悬挂点,并将其保存。
20、作为本发明的进一步改进,所述第一读取及判断模块,还包括:
21、若不是线图层,则进行下个图层类型的判断。
22、作为本发明的进一步改进,所述第二读取及判断模块,还包括:
23、若折线要素闭合,则进行下个折线要素的判断。
24、与现有技术相比,本发明的有益效果为:
25、1.针对矢量数据,本发明自定义了dictionary<string,countandpoint>字典类型,解决了不合理悬挂点的质检漏报、误报难题;
26、2.本发明主要涉及矢量数据的读取和相关的数学计算,中间未涉及数据的存储,因此效率较高,能够很好的满足实际生产项目的相关质检;
27、3.本发明可以一键实现以下四种不合理悬挂的质检:(a)l1和l2为两条折线,p1是l1的端点,p2是l2的端点,p1与p2两点之间距离小于软件设置的阈值,表明p1、p2是不合理悬挂点;(b)l1和l2为两条折线,p1是l2的端点,p1点距离l1的距离小于软件设置的阈值,表明p1是不合理悬挂点;(c)l1和l2为两条折线,p1是l2的端点,p1点距离l1的距离小于软件设置的阈值,表明p1是不合理悬挂点;(d)l1和l2为两条折线,l1与l2相交,p1是l2的端点,p1点距离l1的距离为0,小于软件设置的阈值,表明p1是不合理悬挂点,同时表明此处相交未打断。
1.一种基于key-value的不合理悬挂点质检方法,其特征在于,包括:
2.如权利要求1所述的基于key-value的不合理悬挂点质检方法,其特征在于,所述步骤1,还包括:
3.如权利要求1所述的基于key-value的不合理悬挂点质检方法,其特征在于,所述步骤2,还包括:
4.一种基于key-value的不合理悬挂点质检系统,其特征在于,包括:
5.如权利要求4所述的基于key-value的不合理悬挂点质检系统,其特征在于,所述第一读取及判断模块,还包括:
6.如权利要求4所述的基于key-value的不合理悬挂点质检系统,其特征在于,所述第二读取及判断模块,还包括:
