CN113721802A - 一种矢量捕捉方法 - Google Patents
一种矢量捕捉方法 Download PDFInfo
- Publication number
- CN113721802A CN113721802A CN202110950175.9A CN202110950175A CN113721802A CN 113721802 A CN113721802 A CN 113721802A CN 202110950175 A CN202110950175 A CN 202110950175A CN 113721802 A CN113721802 A CN 113721802A
- Authority
- CN
- China
- Prior art keywords
- vector
- layer
- capture
- entity
- rectangular
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000010276 construction Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 238000013507 mapping Methods 0.000 abstract description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 206010034701 Peroneal nerve palsy Diseases 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04812—Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04842—Selection of displayed objects or displayed text elements
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- Instructional Devices (AREA)
Abstract
本发明提出了一种矢量捕捉方法,涉及测绘技术领域,包括:构建矢量实体缓存总模块,包括若干个绑定了工程对应图层的图层缓存单元;获取矢量捕捉范围、矢量捕捉点类型和捕捉类型;根据矢量捕捉范围计算其矩形地理范围;选取有效且与矩形地理范围相交的图层缓存单元,求取图层缓存单元中所有与矩形地理范围相交的矢量实体集合,根据矢量捕捉点类型对矢量实体集合的实体逐一进行处理,求取最近顶点或最近边;根据捕捉类型确定最佳捕捉点。本发明提供的矢量捕捉方法,当用户使用该方法时,在矢量绘制或编辑过程中,可以自动地显示相应地捕捉类型图标,仅需点击鼠标或者键盘就能捕捉到需要地类型,有效地提高了作图员的工作效率与质量。
Description
技术领域
本发明涉及测绘技术领域,特别是涉及一种矢量捕捉方法。
背景技术
GIS测图软件的其中一个重要的功能就是矢量要素的绘制与建库,矢量要素的采集可通过三维模型数据、全站仪标识的关键点(碎部点)、正射影像图等方式,生成DLG即数字线划地图。而这些矢量要素彼此之间通常需要满足一定的拓扑关系,如一户农房的房屋主体的矢量要素与围墙的矢量要素要连接上(即围墙的一端要紧靠房屋的墙),而为了满足这些拓扑关系,在绘制或者编辑矢量要素的过程中,必须提供矢量捕捉功能。
目前,公开号为CN112100296A的中国发明专利申请具体公开了一种便于进行GIS矢量数据编辑的GIS系统,其通过一种便于进行GIS矢量数据编辑的GIS系统直接基于GIS数据标准的图形采集、绘制和编辑,达到能节省数据生产的时间和流程步骤,同时又保证数据质量的效果,但该系统在进行矢量捕捉时需要人为进行实际的捕捉操作,大大影响作图员的工作效率及质量。
发明内容
本发明为了解决以上至少一种技术缺陷,提供一种矢量捕捉方法,实现矢量捕捉功能,提高作图员的工作效率及质量。
为解决上述技术问题,本发明的技术方案如下:
一种矢量捕捉方法,包括以下步骤:
S1:构建矢量实体缓存总模块,包括若干个绑定了工程对应图层的图层缓存单元;
S2:获取矢量捕捉范围、矢量捕捉点类型和捕捉类型;
S3:根据矢量捕捉范围计算其矩形地理范围;
S4:选取工程中的一个图层,判断该图层的有效性,若是,则执行步骤S5,否则,重新选取工程中下一个未曾处理的图层,重新执行步骤S4;
S5:判断图层缓存单元对应图层的范围是否与矩形地理范围相交,若是,则执行步骤S6,否则,重新选取工程的图层,返回执行步骤S4;
S6:求取图层缓存单元中所有与矩形地理范围相交的矢量实体集合,根据矢量捕捉点类型对矢量实体集合的实体逐一进行处理,求取最近顶点或最近边;
S7:根据捕捉类型确定最佳捕捉点,完成对矢量实体的捕捉。
上述方案主要用于测绘行业相关的GIS测图软件,当用户使用该方法时,在矢量绘制或编辑过程中,当操作的鼠标靠近已绘制好的矢量实体时,将自动地显示相应地捕捉类型图标,仅需点击鼠标或者键盘就能捕捉到需要地类型,有效地提高了作图员的工作效率与质量。
上述方案中,矢量捕捉方法的实现依赖于捕捉的矢量实体缓存总模块,由于常规的GIS软件都是利用图层来进行矢量实体的管理划分,因此矢量实体缓存总模块包含了多个图层缓存单元,这些图层缓存单元根据图层的唯一id作为关键字(此id可以是图层的名字,索引号等)来进行管理划分。作图员有时只想捕捉特定图层的矢量实体,这样捕捉时只需捕捉特定图层缓存单元里的矢量实体就可以,因此可以有效地加快捕捉效率。
其中,所述步骤S1具体包括以下步骤:
S11:获取工程中的一个图层;
S12:初始化图层缓存单元,初始化图层缓存单元的空间索引对象(R树算法的结构),以图层的id作为关键字绑定该图层缓存单元;
S13:获取该图层中的已绘制的一个矢量实体,获取其中的几何数据(GIS的矢量实体通常包括几何数据和属性数据),计算这个几何的矩形地理范围大小,将矢量实体的矩形范围,几何和FID添加到该图层缓存单元中的空间索引对象中;
S14:重新获取该图层中的另一个矢量实体,重复执行步骤S13,直至该图层中所有矢量实体处理完成,完成后根据该图层中每个矢量实体的矩形范围,更新计算图层缓存单元的矩形地理范围使得包含该图层的所有矢量实体,执行步骤S15;
S15:获取工程中的另一个图层,返回执行步骤S12,直至工程中所有图层都完成了相应的初始化和绑定图层缓存单元完毕则结束构建。
其中,在所述步骤S6中,矢量实体集合的求取过程具体为:以矩形地理范围作为索引,利用图层缓存单元中的空间索引对象求出所有缓存下来的矢量实体的矩形范围与矩形地理范围相交的所有矢量实体的集合。
其中,在所述在步骤S2中,所述矢量捕捉点类型包括节点、端点、相交点、垂足、最近点和中点,其中,当矢量捕捉点类型为节点或端点类型时,其属于矢量实体的顶点类别;当矢量捕捉点类型为中点、交点、垂足或最近点类型时,其属于矢量实体的边类别。
其中,在所述步骤S6中,所述最近顶点的求取过程具体为:
A1:选取矢量实体集合中的一个矢量实体;
A2:根据矢量实体的几何数据,求出矩形地理范围中点对应的地理坐标与该几何中最近那个顶点,计算这个顶点与该地理坐标的欧式距离并记录;
A3:重新选取矢量实体集合中的另一个矢量实体,计算其欧式距离;若该欧式距离在矢量捕捉范围内且小于记录的距离,则将其作为最近顶点并进行记录;
A4:重复执行步骤A3,直至矢量实体集合中所有矢量实体计算完毕,得到最近顶点。
其中,在所述步骤S6中,所述最近边的求取过程具体为:
B1:选取矢量实体集合中的一个矢量实体;
B2:根据矢量实体的几何数据,求出矩形地理范围中点对应的地理坐标与该几何中所有边中最近那条边,计算这条边与该地理坐标的欧式距离;
B3:若这个欧式距离在矢量捕捉范围内,则根据矢量捕捉点类型求出这条边上的捕捉点,计算这个捕捉点与矩形地理范围中点对应的地理坐标的欧式距离并记录;
B4:重新选取矢量实体集合中的另一个矢量实体,计算对应的捕捉点的欧式距离,若该小于记录的距离,则将其作为最近边,将最近边和该边对应的捕捉点进行记录;
B5:重复执行步骤B4,直至矢量实体集合中所有矢量实体计算完毕,得到最近边和最近边对应的捕捉点。
其中,在所述步骤S2中,所述捕捉类型包括单一捕捉类型和多种捕捉类型;
在所述步骤S7中,当选择单一捕捉类型时,根据捕捉点类型判断,若属于矢量顶点类别,则计算并比较最近顶点与矩形地理范围中点对应的地理坐标的欧式距离,若属于矢量边类别,则计算并比较最近边对应的捕捉点与矩形地理范围中点对应的地理坐标的欧式距离;
在所述步骤S7中,当选择多种捕捉类型,则设置不同矢量捕捉点类型的优先级,将最近顶点和最近边分别存入矢量顶点类别集合和矢量边类别集合中,按照设置的优先级,在优先级高的类别集合中确定最佳捕捉点;若优先级高的类别集合为空,则退一优先级,在对应的类别集合中确定最佳捕捉点。
其中,当工程图层中完成一个矢量实体的绘制后,则需要进入矢量实体的增加操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
计算矢量实体中的几何的矩形地理范围大小,将矢量实体的矩形范围,几何和FID添加到图层缓存单元中的空间索引对象;
如果图层缓存单元的矩形地理范围不完全包含矢量实体的矩形地理范围,则更新图层缓存单元的矩形地理范围使其完全包含。
其中,当工程图层中对一个矢量实体进行删除后,则需要进入矢量实体的删除操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
根据矢量实体的FID,从图层缓存单元中的空间索引对象删除对应的数据(矩形范围和几何)。
其中,当工程图层中对一个矢量实体进行编辑后,几何发生改变,则需要进入矢量实体的更改操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
计算矢量实体中的几何的矩形地理范围大小,根据矢量实体的FID,从图层缓存单元中的空间索引对象更新对应的数据(矩形范围和几何);
如果图层缓存单元的矩形地理范围不完全包含矢量实体的矩形地理范围,则更新图层缓存单元的矩形地理范围使其完全包含。
上述方案中,图层缓存单元是捕捉功能操作的核心,其支持矢量实体的增加、删除和更改操作。捕捉时,捕捉到的点(如端点、垂足等)要满足设置的捕捉范围才是有效的,如设置了捕捉范围为10个像素,那么捕捉的点所在的屏幕像素位置与鼠标当前位置在10个像素内,那么这个点才是需要的,成立的,超出范围将被忽略。图层缓存单元内利用矢量实体的FID(GIS的常规定义)来作为增加、删除和更改操作的关键字。
依据上述的方法可以对测绘行业相关的GIS测图软件进行二次开发,将矢量捕捉方法应用到相关软件中,旨在快速有效地实现矢量捕捉功能,允许用户开启或关闭捕捉功能和设置指定的捕捉类型(如垂足,交点等),当用户开启捕捉功能后,在矢量绘制或者编辑过程中,当操作的鼠标靠近已绘制好的矢量实体时,将自动地显示相应的捕捉类型图标,这时仅需要点击鼠标或者键盘就能捕捉到需要的类型。
本方法采用空间索引技术(利用R树算法),软件启动后,将自动离线构建捕捉的矢量实体缓存总模块,当用户对矢量实体进行了增加、删除、更改操作时,将同步更新该矢量实体对应的图层缓冲单元,以达到快速及时响应用户的捕捉操作和满足正确性的要求。
上述方案中,针对捕捉的不同场景需求,采用了单一捕捉类型的捕捉和多种捕捉类型的混合捕捉这两种处理方式进行捕捉。如果指定了捕捉某一类型的,那么将采用单一捕捉类型的捕捉这种方式来处理,有多个点满足设置的捕捉范围,那么将离当前鼠标点最近的作为最佳的捕捉点;如果不指定要捕捉那种类型,自动获取最合适的点,那么将采用多种捕捉类型的混合捕捉这种方式来处理,假如多个不同捕捉类型的点都满足捕捉范围内,此时根据捕捉点类型的优先级作为判别来获取最佳的捕捉点,同一优先级则采用离当前鼠标点最近作为最佳的捕捉点。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出了一种矢量捕捉方法,主要用于测绘行业相关的GIS测图软件,当用户使用该方法时,在矢量绘制或编辑过程中,当操作的鼠标靠近已绘制好的矢量实体时,将自动地显示相应地捕捉类型图标,仅需点击鼠标或者键盘就能捕捉到需要地类型,有效地提高了作图员的工作效率与质量。
附图说明
图1为本发明所述方法的流程示意图;
图2为本发明所述矢量实体缓存总模块的构建流程图;
图3为本发明所述矢量实体缓存总模块的结构示意图;
图4为本发明所述最近顶点的求取过程示意图;
图5为本发明所述最近边的求取过程示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
如图1所示,一种矢量捕捉方法,包括以下步骤:
S1:构建矢量实体缓存总模块,包括若干个绑定了工程对应图层的图层缓存单元;
S2:获取矢量捕捉范围、矢量捕捉点类型和捕捉类型;
S3:根据矢量捕捉范围计算其矩形地理范围;
S4:选取工程中的一个图层,判断该图层的有效性,若是,则执行步骤S5,否则,重新选取工程中下一个未曾处理的图层,重新执行步骤S4;
S5:判断图层缓存单元对应图层的范围是否与矩形地理范围相交,若是,则执行步骤S6,否则,重新选取工程的图层,返回执行步骤S4;
S6:求取图层缓存单元中所有与矩形地理范围相交的矢量实体集合,根据矢量捕捉点类型对矢量实体集合的实体逐一进行处理,求取最近顶点或最近边;
S7:根据捕捉类型确定最佳捕捉点,完成对矢量实体的捕捉。
上述方案主要用于测绘行业相关的GIS测图软件,当用户使用该方法时,在矢量绘制或编辑过程中,当操作的鼠标靠近已绘制好的矢量实体时,将自动地显示相应地捕捉类型图标,仅需点击鼠标或者键盘就能捕捉到需要地类型,有效地提高了作图员的工作效率与质量。
实施例2
更具体的,如图2所示,所述步骤S1具体包括以下步骤:
S11:获取工程中的一个图层;
S12:初始化图层缓存单元,初始化图层缓存单元的空间索引对象(R树算法的结构),以图层的id作为关键字绑定该图层缓存单元;
S13:获取该图层中的已绘制的一个矢量实体,获取其中的几何数据(GIS的矢量实体通常包括几何数据和属性数据),计算这个几何的矩形地理范围大小,将矢量实体的矩形范围,几何和FID添加到该图层缓存单元中的空间索引对象中;
S14:重新获取该图层中的另一个矢量实体,重复执行步骤S13,直至该图层中所有矢量实体处理完成,完成后根据该图层中每个矢量实体的矩形范围,更新计算图层缓存单元的矩形地理范围使得包含该图层的所有矢量实体,执行步骤S15;
S15:获取工程中的另一个图层,返回执行步骤S12,直至工程中所有图层都完成了相应的初始化和绑定图层缓存单元完毕则结束构建。
在具体实施过程中,如图3所示,矢量捕捉方法的实现依赖于捕捉的矢量实体缓存总模块,由于常规的GIS软件都是利用图层来进行矢量实体的管理划分,因此矢量实体缓存总模块包含了多个图层缓存单元,这些图层缓存单元根据图层的唯一id作为关键字(此id可以是图层的名字,索引号等)来进行管理划分。作图员有时只想捕捉特定图层的矢量实体,这样捕捉时只需捕捉特定图层缓存单元里的矢量实体就可以,因此可以有效地加快捕捉效率。
在具体实施过程中,图层缓存单元是捕捉功能操作的核心,其支持矢量实体的增加、删除和更改操作。捕捉时,捕捉到的点(如端点、垂足等)要满足设置的捕捉范围才是有效的,如设置了捕捉范围为10个像素,那么捕捉的点所在的屏幕像素位置与鼠标当前位置在10个像素内,那么这个点才是需要的,成立的,超出范围将被忽略。图层缓存单元内利用矢量实体的FID(GIS的常规定义)来作为增加、删除和更改操作的关键字。
更具体的,在所述步骤S6中,矢量实体集合的求取过程具体为:以矩形地理范围作为索引,利用图层缓存单元中的空间索引对象求出所有缓存下来的矢量实体的矩形范围与矩形地理范围相交的所有矢量实体的集合。
更具体的,在所述在步骤S2中,所述矢量捕捉点类型包括节点、端点、相交点、垂足、最近点和中点,其中,当矢量捕捉点类型为节点或端点类型时,其属于矢量实体的顶点类别;当矢量捕捉点类型为中点、交点、垂足或最近点类型时,其属于矢量实体的边类别。
更具体的,在所述步骤S6中,所述最近顶点的求取过程如图4所示,具体为:
A1:选取矢量实体集合中的一个矢量实体;
A2:根据矢量实体的几何数据,求出矩形地理范围中点对应的地理坐标与该几何中最近那个顶点,计算这个顶点与该地理坐标的欧式距离并记录;
A3:重新选取矢量实体集合中的另一个矢量实体,计算其欧式距离;若该欧式距离在矢量捕捉范围内且小于记录的距离,则将其作为最近顶点并进行记录;
A4:重复执行步骤A3,直至矢量实体集合中所有矢量实体计算完毕,得到最近顶点。
更具体的,在所述步骤S6中,所述最近边的求取过程如图5所示,具体为:
B1:选取矢量实体集合中的一个矢量实体;
B2:根据矢量实体的几何数据,求出矩形地理范围中点对应的地理坐标与该几何中所有边中最近那条边,计算这条边与该地理坐标的欧式距离;
B3:若这个欧式距离在矢量捕捉范围内,则根据矢量捕捉点类型求出这条边上的捕捉点,计算这个捕捉点与矩形地理范围中点对应的地理坐标的欧式距离并记录;
B4:重新选取矢量实体集合中的另一个矢量实体,计算对应的捕捉点的欧式距离,若该小于记录的距离,则将其作为最近边,将最近边和该边对应的捕捉点进行记录;
B5:重复执行步骤B4,直至矢量实体集合中所有矢量实体计算完毕,得到最近边和最近边对应的捕捉点。
更具体的,在所述步骤S2中,所述捕捉类型包括单一捕捉类型和多种捕捉类型;
在所述步骤S7中,当选择单一捕捉类型时,根据捕捉点类型判断,若属于矢量顶点类别,则计算并比较最近顶点与矩形地理范围中点对应的地理坐标的欧式距离,若属于矢量边类别,则计算并比较最近边对应的捕捉点与矩形地理范围中点对应的地理坐标的欧式距离;
在所述步骤S7中,当选择多种捕捉类型,则设置不同矢量捕捉点类型的优先级,将最近顶点和最近边分别存入矢量顶点类别集合和矢量边类别集合中,按照设置的优先级,在优先级高的类别集合中确定最佳捕捉点;若优先级高的类别集合为空,则退一优先级,在对应的类别集合中确定最佳捕捉点。
在具体实施过程中,所述单一捕捉类型的过程具体为:
步骤一:根据设置的矢量捕捉范围,以当前鼠标点为中心,计算其矩形地理范围大小;
步骤二:获取工程的获取工程的一个图层,判断这个图层是否有效(如设置了只捕捉某几个特定图层,或者当前图层不显示等原因),无效将重复步骤二,再判断否则进入步骤三。
步骤三:根据图层id,从捕捉的矢量实体缓存总模块中获取对应的图层缓存单元,判断图层缓存单元的矩形地理范围与当前鼠标点为中心的矩形地理范围是否相交(这个作为快速判断,不相交代表此缓存模块中的矢量实体都不会与鼠标点为中心的矩形地理范围相交了),相交进入步骤四,否则重复步骤二。
步骤四:根据当前鼠标点为中心的矩形地理范围作为索引,利用图层缓存模块中的空间索引对象求出所有缓存下来的矢量实体的矩形范围与之相交的所有矢量实体的集合(构建时矢量实体的矩形范围与矢量实体是一一对应的)。
步骤五:从矢量实体集合中取出一个矢量实体,再根据捕捉点类型的实现方式(如表1)来进行相应的处理,基于矢量实体的顶点方式的进入步骤六,基于矢量实体的边方式的进入步骤七。
步骤六:根据矢量实体的几何数据,求出当前鼠标点对应的地理坐标与这个几何中所有顶点中最近那个顶点,计算这个顶点与当前鼠标点对应的地理坐标的欧式距离,如果这个距离在捕捉范围内而且比当前记录的最短距离要小,则记录为当前最佳捕捉点。进入步骤八。
步骤七:根据矢量实体的几何数据,求出当前鼠标点对应的地理坐标与这个几何中所有边中最近那条边,计算这条边与当前鼠标点对应的地理坐标的欧式距离,如果这个距离在捕捉范围内,则利用这条边的两个顶点或者矢量实体(对于相交点类型,还需求出与这个矢量实体相交的矢量实体,以此来求出交点),求出相应的捕捉点类型的捕捉点,计算这个捕捉点与当前鼠标点对应的地理坐标的欧式距离,比当前记录的最短距离要小,则记录为当前最佳捕捉点。进入步骤八。
步骤八:所有矢量实体集合中的矢量实体处理完,进入步骤九,否则重复步骤五。
步骤九:工程中的图层都处理完则结束,得到最佳捕捉点,否则没处理完重复步骤二。
在具体实施过程中,所述多种捕捉类型的过程具体为:
步骤一:根据设置的捕捉范围,以当前鼠标点为中心,计算其矩形地理范围大小。
步骤二:获取工程的一个图层,判断这个图层是否有效(如设置了只捕捉某几个特定图层,或者当前图层不显示等原因),无效将重复步骤二,再判断否则进入步骤三。
步骤三:根据图层id,从捕捉的矢量实体缓存总模块中获取对应的图层缓存模块,判断图层缓存模块的矩形地理范围与当前鼠标点为中心的矩形地理范围是否相交(这个作为快速判断,不相交代表此缓存模块中的矢量实体都不会与鼠标点为中心的矩形地理范围相交了),相交进入步骤四,否则重复步骤二。
步骤四:根据当前鼠标点为中心的矩形地理范围作为索引,利用图层缓存模块中的空间索引对象求出所有缓存下来的矢量实体的矩形范围与之相交的所有矢量实体的集合(构建时矢量实体的矩形范围与矢量实体是一一对应的)。
步骤五:从矢量实体集合中取出一个矢量实体,再根据捕捉点类型的实现方式(如表1)来进行相应的处理,基于矢量实体的顶点方式的进入步骤六,基于矢量实体的边方式的进入步骤七。
步骤六:根据矢量实体的几何数据,求出当前鼠标点对应的地理坐标与这个几何中所有顶点中最近那个顶点,计算这个顶点与当前鼠标点对应的地理坐标的欧式距离,如果这个距离在捕捉范围内,就把这个顶点和其计算的欧式距离记录到矢量顶点类别集合中。进入步骤八。
步骤七:根据矢量实体的几何数据,求出当前鼠标点对应的地理坐标与这个几何中所有边中最近那条边,计算这条边与当前鼠标点对应的地理坐标的欧式距离,如果这个距离在捕捉范围内,就把这条边,矢量实体和其计算的欧式距离记录到矢量边类别集合中。进入步骤八。
步骤八:所有矢量实体集合中的矢量实体处理完,进入步骤九,否则重复步骤五。
步骤九:工程中的图层都处理完则进入步骤十,否则没处理完重复步骤二。
步骤十:因为不同的捕捉点类型的优先级不一样(如表1),矢量顶点类别比矢量边类别优先级高,所以矢量顶点类别集合不为空,则从矢量顶点类别集合中取出欧式距离最小的那个顶点作为最佳捕捉点,为空则从矢量边类别集合中取出欧式距离最小的那条边或者矢量实体(对于相交点类型,还需求出与这个矢量实体相交的矢量实体,以此来求出交点),然后分别求出各个捕捉点类型对应的捕捉点,然后从这些捕捉点中求出与当前鼠标点对应的地理坐标的欧式距离最小的那个为最佳捕捉点。
表1捕捉点类型的描述
更具体的,当工程图层中完成一个矢量实体的绘制后,则需要进入矢量实体的增加操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
计算矢量实体中的几何的矩形地理范围大小,将矢量实体的矩形范围,几何和FID添加到图层缓存单元中的空间索引对象;
如果图层缓存单元的矩形地理范围不完全包含矢量实体的矩形地理范围,则更新图层缓存单元的矩形地理范围使其完全包含。
更具体的,当工程图层中对一个矢量实体进行删除后,则需要进入矢量实体的删除操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
根据矢量实体的FID,从图层缓存单元中的空间索引对象删除对应的数据(矩形范围和几何)。
更具体的,当工程图层中对一个矢量实体进行编辑后,几何发生改变,则需要进入矢量实体的更改操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
计算矢量实体中的几何的矩形地理范围大小,根据矢量实体的FID,从图层缓存单元中的空间索引对象更新对应的数据(矩形范围和几何);
如果图层缓存单元的矩形地理范围不完全包含矢量实体的矩形地理范围,则更新图层缓存单元的矩形地理范围使其完全包含。
在具体实施过程中,依据上述的方法可以对测绘行业相关的GIS测图软件进行二次开发,将矢量捕捉方法应用到相关软件中(此处不加赘述),旨在快速有效地实现矢量捕捉功能,允许用户开启或关闭捕捉功能和设置指定的捕捉类型(如垂足,交点等),当用户开启捕捉功能后,在矢量绘制或者编辑过程中,当操作的鼠标靠近已绘制好的矢量实体时,将自动地显示相应的捕捉类型图标,这时仅需要点击鼠标或者键盘就能捕捉到需要的类型。
本方法采用空间索引技术(利用R树算法),软件启动后,将自动离线构建捕捉的矢量实体缓存总模块,当用户对矢量实体进行了增加、删除、更改操作时,将同步更新该矢量实体对应的图层缓冲单元,以达到快速及时响应用户的捕捉操作和满足正确性的要求。
在具体实施过程中,针对捕捉的不同场景需求,采用了单一捕捉类型的捕捉和多种捕捉类型的混合捕捉这两种处理方式进行捕捉。如果指定了捕捉某一类型的,那么将采用单一捕捉类型的捕捉这种方式来处理,有多个点满足设置的捕捉范围,那么将离当前鼠标点最近的作为最佳的捕捉点;如果不指定要捕捉那种类型,自动获取最合适的点,那么将采用多种捕捉类型的混合捕捉这种方式来处理,假如多个不同捕捉类型的点都满足捕捉范围内,此时根据捕捉点类型的优先级作为判别来获取最佳的捕捉点,同一优先级则采用离当前鼠标点最近作为最佳的捕捉点。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种矢量捕捉方法,其特征在于,包括以下步骤:
S1:构建矢量实体缓存总模块,包括若干个绑定了工程对应图层的图层缓存单元;
S2:获取矢量捕捉范围、矢量捕捉点类型和捕捉类型;
S3:根据矢量捕捉范围计算其矩形地理范围;
S4:选取工程中的一个图层,判断该图层的有效性,若是,则执行步骤S5,否则,重新选取工程中下一个未曾处理的图层,重新执行步骤S4;
S5:判断图层缓存单元对应图层的范围是否与矩形地理范围相交,若是,则执行步骤S6,否则,重新选取工程的图层,返回执行步骤S4;
S6:求取图层缓存单元中所有与矩形地理范围相交的矢量实体集合,根据矢量捕捉点类型对矢量实体集合的实体逐一进行处理,求取最近顶点或最近边;
S7:根据捕捉类型确定最佳捕捉点,完成对矢量实体的捕捉。
2.根据权利要求1所述的一种矢量捕捉方法,其特征在于,所述步骤S1具体包括以下步骤:
S11:获取工程中的一个图层;
S12:初始化图层缓存单元,初始化图层缓存单元的空间索引对象,以图层的id作为关键字绑定该图层缓存单元;
S13:获取该图层中的已绘制的一个矢量实体,获取其中的几何数据,计算这个几何的矩形地理范围大小,将矢量实体的矩形范围,几何和FID添加到该图层缓存单元中的空间索引对象中;
S14:重新获取该图层中的另一个矢量实体,重复执行步骤S13,直至该图层中所有矢量实体处理完成,完成后根据该图层中每个矢量实体的矩形范围,更新计算图层缓存单元的矩形地理范围使得包含该图层的所有矢量实体,执行步骤S15;
S15:获取工程中的另一个图层,返回执行步骤S12,直至工程中所有图层都完成了相应的初始化和绑定图层缓存单元完毕则结束构建。
3.根据权利要求2所述的一种矢量捕捉方法,其特征在于,在所述步骤S6中,矢量实体集合的求取过程具体为:以矩形地理范围作为索引,利用图层缓存单元中的空间索引对象求出所有缓存下来的矢量实体的矩形范围与矩形地理范围相交的所有矢量实体的集合。
4.根据权利要求2所述的一种矢量捕捉方法,其特征在于,在所述在步骤S2中,所述矢量捕捉点类型包括节点、端点、相交点、垂足、最近点和中点,其中,当矢量捕捉点类型为节点或端点类型时,其属于矢量实体的顶点类别;当矢量捕捉点类型为中点、交点、垂足或最近点类型时,其属于矢量实体的边类别。
5.根据权利要求4所述的一种矢量捕捉方法,其特征在于,在所述步骤S6中,所述最近顶点的求取过程具体为:
A1:选取矢量实体集合中的一个矢量实体;
A2:根据矢量实体的几何数据,求出矩形地理范围中点对应的地理坐标与该几何中最近那个顶点,计算这个顶点与该地理坐标的欧式距离并记录;
A3:重新选取矢量实体集合中的另一个矢量实体,计算其欧式距离;若该欧式距离在矢量捕捉范围内且小于记录的距离,则将其作为最近顶点并进行记录;
A4:重复执行步骤A3,直至矢量实体集合中所有矢量实体计算完毕,得到最近顶点。
6.根据权利要求5所述的一种矢量捕捉方法,其特征在于,在所述步骤S6中,所述最近边的求取过程具体为:
B1:选取矢量实体集合中的一个矢量实体;
B2:根据矢量实体的几何数据,求出矩形地理范围中点对应的地理坐标与该几何中所有边中最近那条边,计算这条边与该地理坐标的欧式距离;
B3:若这个欧式距离在矢量捕捉范围内,则根据矢量捕捉点类型求出这条边上的捕捉点,计算这个捕捉点与矩形地理范围中点对应的地理坐标的欧式距离并记录;
B4:重新选取矢量实体集合中的另一个矢量实体,计算对应的捕捉点的欧式距离,若该小于记录的距离,则将其作为最近边,将最近边和该边对应的捕捉点进行记录;
B5:重复执行步骤B4,直至矢量实体集合中所有矢量实体计算完毕,得到最近边和最近边对应的捕捉点。
7.根据权利要求6所述的一种矢量捕捉方法,其特征在于,在所述步骤S2中,所述捕捉类型包括单一捕捉类型和多种捕捉类型;
在所述步骤S7中,当选择单一捕捉类型时,根据捕捉点类型判断,若属于矢量顶点类别,则计算并比较最近顶点与矩形地理范围中点对应的地理坐标的欧式距离,若属于矢量边类别,则计算并比较最近边对应的捕捉点与矩形地理范围中点对应的地理坐标的欧式距离;
在所述步骤S7中,当选择多种捕捉类型,则设置不同矢量捕捉点类型的优先级,将最近顶点和最近边分别存入矢量顶点类别集合和矢量边类别集合中,按照设置的优先级,在优先级高的类别集合中确定最佳捕捉点;若优先级高的类别集合为空,则退一优先级,在对应的类别集合中确定最佳捕捉点。
8.根据权利要求2~7任一项所述的一种矢量捕捉方法,其特征在于,当工程图层中完成一个矢量实体的绘制后,则需要进入矢量实体的增加操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
计算矢量实体中的几何的矩形地理范围大小,将矢量实体的矩形范围,几何和FID添加到图层缓存单元中的空间索引对象;
如果图层缓存单元的矩形地理范围不完全包含矢量实体的矩形地理范围,则更新图层缓存单元的矩形地理范围使其完全包含。
9.根据权利要求8所述的一种矢量捕捉方法,其特征在于,当工程图层中对一个矢量实体进行删除后,则需要进入矢量实体的删除操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
根据矢量实体的FID,从图层缓存单元中的空间索引对象删除对应的数据。
10.根据权利要求8所述的一种矢量捕捉方法,其特征在于,当工程图层中对一个矢量实体进行编辑后,几何发生改变,则需要进入矢量实体的更改操作过程,具体为:
根据矢量实体所在图层的id,从捕捉的矢量实体缓存总模块获取对应的图层缓存单元;
计算矢量实体中的几何的矩形地理范围大小,根据矢量实体的FID,从图层缓存单元中的空间索引对象更新对应的数据;
如果图层缓存单元的矩形地理范围不完全包含矢量实体的矩形地理范围,则更新图层缓存单元的矩形地理范围使其完全包含。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110950175.9A CN113721802A (zh) | 2021-08-18 | 2021-08-18 | 一种矢量捕捉方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110950175.9A CN113721802A (zh) | 2021-08-18 | 2021-08-18 | 一种矢量捕捉方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113721802A true CN113721802A (zh) | 2021-11-30 |
Family
ID=78676716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110950175.9A Pending CN113721802A (zh) | 2021-08-18 | 2021-08-18 | 一种矢量捕捉方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113721802A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2559678A1 (en) * | 2004-03-17 | 2005-09-29 | Seadragon Software, Inc. | Method for encoding and serving geospatial or other vector data as images |
CN103744999A (zh) * | 2014-01-23 | 2014-04-23 | 中国人民解放军国防科学技术大学 | 基于层次划分存储结构的空间矢量数据在线交互制图方法 |
GB2508617A (en) * | 2012-12-05 | 2014-06-11 | Vert Systems Ltd | Terrain-topography motion capture system, apparatus and method |
GB202013384D0 (en) * | 2020-08-26 | 2020-10-07 | Badweather Systems Inc | Device and associated method for triggering an event during capture of an image sequence |
CN112100296A (zh) * | 2020-07-24 | 2020-12-18 | 广州南方卫星导航仪器有限公司 | 一种便于进行gis矢量数据编辑的gis系统 |
CN113157665A (zh) * | 2021-04-13 | 2021-07-23 | 广西有色勘察设计研究院 | 一种智能的多测合一地理信息系统 |
-
2021
- 2021-08-18 CN CN202110950175.9A patent/CN113721802A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2559678A1 (en) * | 2004-03-17 | 2005-09-29 | Seadragon Software, Inc. | Method for encoding and serving geospatial or other vector data as images |
GB2508617A (en) * | 2012-12-05 | 2014-06-11 | Vert Systems Ltd | Terrain-topography motion capture system, apparatus and method |
CN103744999A (zh) * | 2014-01-23 | 2014-04-23 | 中国人民解放军国防科学技术大学 | 基于层次划分存储结构的空间矢量数据在线交互制图方法 |
CN112100296A (zh) * | 2020-07-24 | 2020-12-18 | 广州南方卫星导航仪器有限公司 | 一种便于进行gis矢量数据编辑的gis系统 |
GB202013384D0 (en) * | 2020-08-26 | 2020-10-07 | Badweather Systems Inc | Device and associated method for triggering an event during capture of an image sequence |
CN113157665A (zh) * | 2021-04-13 | 2021-07-23 | 广西有色勘察设计研究院 | 一种智能的多测合一地理信息系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106599493B (zh) | 一种三维大场景中bim模型的可视化实现方法 | |
CN113538708B (zh) | 二维视图中对三维bim模型进行展示和交互的方法 | |
CN112115534A (zh) | 一种将三维房屋模型转换带高度属性的二维矢量面的方法 | |
CN112419498B (zh) | 一种海量倾斜摄影数据的调度渲染方法 | |
CN101119485A (zh) | 一种基于特征保留的三维模型递进传输方法 | |
CN110070616A (zh) | 存储器、基于gis平台的统计数据呈现方法、装置和设备 | |
CN112991558A (zh) | 一种地图编辑方法和地图编辑器 | |
CN112634455A (zh) | 一种利用切割三角面片应用于三维模型棱线修复方法 | |
US11158124B2 (en) | Method of providing 3D GIS web service | |
CN113936114B (zh) | 一种bim模型构件类别级轻量化方法及系统 | |
She et al. | 3D building model simplification method considering both model mesh and building structure | |
Zhang et al. | A geometry and texture coupled flexible generalization of urban building models | |
CN113269856A (zh) | 基于分布式云存储的数据并行可视化图形渲染方法及系统 | |
JP2937937B2 (ja) | 三次元オブジェクトデータ処理方法 | |
CN112559188A (zh) | Bim模型外部轮廓分层并行快速提取方法及系统 | |
CN113721802A (zh) | 一种矢量捕捉方法 | |
CN114419256B (zh) | 基于多级抽壳算法的城市级bim数据轻量化方法及系统 | |
JP3605317B2 (ja) | 画像描画方法、画像描画装置及び記録媒体 | |
CN109509249B (zh) | 一种基于部件的虚拟场景光源智能生成方法 | |
US5850223A (en) | Editing three-dimensional vertex data with undo facility | |
JP2002024298A (ja) | 3次元形状処理装置、3次元形状表示方法およびその方法を実施するためのプログラムを記憶した記憶媒体 | |
CN110428482A (zh) | 一种离散点集的内部孔洞搜索绘制算法 | |
CN117197390B (zh) | 三维建筑模型构建方法、装置和存储介质 | |
CN112446959B (zh) | 一种倾斜摄影模型优化方法 | |
JP2675410B2 (ja) | 図形処理方式 |
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 |