CN106952324A - 矢量多边形栅格化并行叠加处理装置及方法 - Google Patents
矢量多边形栅格化并行叠加处理装置及方法 Download PDFInfo
- Publication number
- CN106952324A CN106952324A CN201710223338.7A CN201710223338A CN106952324A CN 106952324 A CN106952324 A CN 106952324A CN 201710223338 A CN201710223338 A CN 201710223338A CN 106952324 A CN106952324 A CN 106952324A
- Authority
- CN
- China
- Prior art keywords
- polygon
- vector
- characteristic point
- ring
- grid
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30181—Earth observation
Abstract
本发明实施例提供了一种矢量多边形栅格化并行叠加处理装置及方法,通过计算两个矢量多边形的叠加计算结果的外包矩形;根据外包矩形和网格大小进行矢量多边形空间离散化;在共享内存环境下的多核心处理器上,采用环绕数法进行离散网格特征点与多边形的包含关系并行计算;根据离散网格特征点与多边形的包含关系进行矩阵元素赋值填充;采用环绕边界追踪算法提取计算结果,构造整体多边形图斑;计算结果多边形图斑的面积误差;按照多边形对象属性字段的匹配规则为结果多边形要素附加属性;最终进行赋值和叠加计算结果的输出。本发明解决了现有技术中计算效率随多边形顶点数量的增加快速下降的问题。
Description
技术领域
本发明涉及测绘地理信息空间分析领域,具体而言,涉及一种利用共享内存多核心处理器加速的复杂矢量多边形栅格化并行叠加处理装置及方法。
背景技术
矢量多边形叠加分析是测绘地理信息领域中一种基础的底层空间分析方法,在复杂地理建模、空间信息提取、空间数据挖掘、地理信息快速可视化等领域有广泛的应用。随着地理信息系统应用的日益普及,空间分析方法的计算效率越来越被人们所关注。矢量多边形并行叠加分析计算过程由复杂的算法设计和并行优化技术构成,其中叠加分析方法的计算效率和处理规模对地理信息系统软件的成功应用至关重要,高效的算法不仅可以提高各类行业应用领域分析模型的计算效率,还能够缩短各类上层应用系统的应急响应时间,提升工作效率。为改善现有矢量多边形叠加分析方法的计算效率,目前采用的技术包括串行叠加分析计算过程优化、底层新型多边形裁剪算法优化、数据组织方法优化等,上述优化方法难以在根本上克服基于矢量计算过程的多边形叠加分析方法的计算效率随多边形顶点数量增加快速下降的弊端。
发明内容
鉴于以上内容,本发明实施例提供一种矢量多边形栅格化并行叠加处理方法,应用于具有多核心处理器的图形处理设备,其中,所述方法包括:
按照叠加操作算子对两个矢量多边形进行矢量叠加计算得到结果多边形,按照叠加操作算子的计算结果分别计算所述两个矢量多边形的外包矩形,所述两个矢量多边形包括一个目标多边形和一个操作多边形;
按照设定的离散网格单元大小对所述两个矢量多边形的结果外包矩形进行空间离散化;
采用环绕数法,在所述多核心处理器上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算;
根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充;
采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列;
提取结果多边形边界离散网格的中心点或顶点,构造结果多边形整体图斑;
将所述结果多边形整体图斑与采用通用多边形裁剪工具库对所述两个矢量多边形进行计算得到的结果多边形进行对比,计算得到二者的面积误差;及
对所述结果多边形进行属性赋值,输出叠加计算结果。
本发明实施例还提供一种矢量多边形栅格化并行叠加处理装置,应用于具有多核心处理器的图形处理设备,其中,所述装置包括:
外包矩形计算模块,用于按照叠加操作算子对两个矢量多边形进行矢量叠加计算得到结果多边形,按照叠加操作算子的计算结果分别计算所述两个矢量多边形的外包矩形,所述两个矢量多边形包括一个目标多边形和一个操作多边形;
多边形离散化模块,用于按照设定的离散网格单元大小对所述两个矢量多边形的结果外包矩形进行空间离散化;
多核心计算模块,用于采用环绕数法,在所述多核心处理器上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算;
矩阵填充模块,用于根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充;
边界序列提取模块,用于采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列;
图斑构造模块,用于提取结果多边形边界离散网格的中心点或顶点,构造结果多边形整体图斑;
图斑误差计算模块,用于将所述结果多边形整体图斑与采用通用多边形裁剪工具库对所述两个矢量多边形进行计算得到的结果多边形进行对比,计算得到二者的面积误差;及
结果输出模块,用于对所述结果多边形进行属性赋值,输出叠加计算结果。
优选地,所述采用环绕数法,在所述多核心处理器上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算,具体包括:
定义环绕数计数器;
将矢量多边形分解为一组环,并将所有的环区分为两种类型,即外环或内环;该矢量多边形为所述目标多边形或所述操作多边形;
对每一个环进行遍历,进行如下处理:
将环绕计数器归0,判断特征点是否在该环的外包矩形内,当特征点在外包矩形内时,判断特征点是否在构成矢量多边形的环的相邻顶点连线上,若在连线上将特征点标记为边界点;若特征点不在外包矩形内,记录特征点的环绕数为0;
将环作为一条闭合的路径,构成环的顶点先后次序决定了构成环的每条边的方向,对于闭合路径的内部区域,从特征点做水平射线,从闭合路径的起点开始行进,记录每条水平射线与特征点相交的环的边,若边自左向右穿过该水平射线,则环绕数减1,若边自右向左穿过该水平射线,则环绕数加1;
按照非零环绕数规则,若最终环绕计数器值为0,则判定特征点在环外部,若最终环绕计数器值不为0,则判定特征点在环内部;
遍历完每一个环后,若特征点在矢量多边形的任意一个外环内部且在该外环所包围的所有内环的外部,则判定该特征点在矢量多边形内。
优选地,上述根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充,具体包括:
判断特征点是否同时位于目标多边形和操作多边形内部;
如果同时位于目标多边形和操作多边形内部,则将该离散网格对应的矩阵元素赋值为3;
如果特征点位于目标多边形内部,但同时位于操作多边形外部,将其对应的矩阵元素赋值为1;
如果特征点位于目标多边形外部,但同时位于操作多边形内部,将其对应的矩阵元素赋值为2;
如果特征点同时位于目标多边形和操作多边形的外部,则将其对应的矩阵元素赋值为0。
优选地,上述采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列,具体包括:
对网格单元按照从上至下、从左至右的规则进行遍历,经过的每个网格均被标记为已访问状态;当遇到第一个未被访问的具有期望类型值的网格后,将其标记为入口网格,同时创建一个新的外环对象并将入口网格作为头结点加入外环对象,此时头结点的前驱和后继结点都为空,开始环绕追踪构环的过程;
自头结点开始的每次追踪均采用以当前网格为中心的、大小为3×3的窗口进行扫描,基于前一网格前进至当前网格的行进方向确定窗口的搜索起始位置,自搜索起始位置开始顺时针遍历窗口网格,找到的第一个期望类型的网格即为下一结点,将其加入外环对象末尾并标记为已访问状态,同时设置当前结点为新结点的前驱,新结点为当前结点的后继,移动窗口至新结点继续上述窗口扫描过程;
当窗口扫描所寻找得到的结点为外环对象的头结点时,标志环外环对象发生闭合,以该头结点为入口的追踪构环过程完成;然后继续在外环对象内部执行内环的搜索追踪过程,搜索到的内环加入预设容器,内环内部的岛将作为与外环对象同级别的外环在后续遍历过程中被追踪得到;
从上一入口网格处的下一网格开始,继续遍历剩余网格单元,直至完成所有网格的遍历,找出所有的外环及每个外环所包含的内环。
优选地,在按照叠加操作算子对两个矢量多边形进行矢量叠加计算得到结果多边形的步骤之前,首先获取参与叠加计算的两个矢量多边形,然后判断参与叠加计算的两个矢量多边形是否为自相交多边形,若为自相交多边形,则对该两个矢量多边形进行自相交分解为非自相交多边形。
与现有技术相比,本发明实施例提供的矢量多边形栅格化并行叠加处理装置及方法实现了任意多边形之间的裁剪,基于基础叠加操作算子求交、合并、求差的组合能够实现非加权多边形叠加分析算法,支持离散网格输出和构造单一多边形整体输出两种不同的结果输出方式。其中构造单一多边形整体输出的方式又可分为中心点构环和顶点构环两种不同的类型,支持相对面积误差的计算与输出。本发明实施例在共享内存和多核心处理器并行环境下,并行计算流程在得到简化的同时,提高了计算资源的利用率,与通用计算图形处理器和集群并行计算环境相比,更容易得到大范围推广和应用。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明较佳实施例提供的图形处理设备的方框示意图。
图2是本发明较佳实施例提供的应用于图1所示的图形处理设备的矢量多边形栅格化并行叠加处理方法的流程图。
图3是本发明较佳实施例中矢量多边形离散化示意图。
图4是本发明较佳实施例中并行任务划分与任务映射流程示意图。
图5是本发明较佳实施例中环绕边界追踪算法采用的扫描窗口示意图。
图6是本发明较佳实施例中矢量多边形栅格化叠加分析计算结果示意图。
主要元件符号说明
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,是本发明较佳实施例提供的图形处理设备100的方框示意图。所述图形处理设备100可以是,但不限于,个人电脑(personal computer,PC)、平板电脑、移动上网设备(mobile Internet device,MID)、智能手机等具备数据处理能力的设备。
所述图形处理设备100还包括一矢量多边形栅格化并行叠加处理装置10、存储器12以及多核心处理器13。所述图形处理设备100包括的各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
基于现有的矢量多边形叠加分析方法的计算效率。目前采用的技术包括串行叠加分析计算过程优化、底层新型多边形裁剪算法优化、数据组织方法优化等,上述优化方法不仅难以在根本上克服基于矢量计算过程的多边形叠加分析方法的计算效率随多边形顶点数量增加快速下降的弊端,也难以充分利用多核心处理器等新型计算设备的计算资源。基于上述问题,本发明实施例提供的矢量多边形栅格化并行叠加处理装置10即为改善上述问题,具体的实现方法将在以下内容进行详细说明。
本发明较佳实施例中,矢量多边形栅格化并行叠加处理装置10包括至少一个可以软件或固件(firmware)的形式存储于所述存储器12中或固化在所述图形处理设备100的操作系统(operating system,OS)中的软件功能模块。所述多核心处理器13用于执行所述存储器12中存储的可执行软件模块,例如所述矢量多边形栅格化并行叠加处理装置10所包括的软件功能模块及计算机程序等。具体地,所述矢量多边形栅格化并行叠加处理装置10包括多边形获取模块101、自相交分析处理模块102、外包矩形计算模块103、多边形离散化模块104、多核心计算模块105、矩阵填充模块106、边界序列提取模块107、图斑构造模块108、图斑误差计算模块109、结果输出模块110。所应说明的是,在其他实施例中,所述矢量多边形栅格化并行叠加处理装置10也可以只包括上述功能模块中的其中一部分或者还可以包括其它更多的功能模块。
其中,所述存储器12可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器12用于存储程序,所述多核心处理器13在接收到执行指令后,执行所述程序。
下面将结合图2对上述各功能模块做详细介绍。
请参阅图2,是本发明较佳实施例提供的应用于图1所示的图形处理设备100的基于栅格化叠加分析的图形处理方法的流程图。下面将对图2所示的具体流程和步骤进行详细阐述。
步骤S01,获取参与叠加计算的两个矢量多边形。详细地,待计算的矢量多边形可通过用户采用各种工具预先获取并存储在所述存储器12或者存储在缓存中。在需要进行叠加计算处理时,从该存储器12或缓存中取出进行计算。本实施例中,该两个矢量多边形一个可叫作目标多边形,另一个叫作操作多边形,二者优选为复杂矢量多边形,该复杂矢量多边形为本领域中常用说法,此处不做赘述和进一步解释。该步骤S01可由所述多边形获取模块101执行。
步骤S02,判断参与叠加计算的两个矢量多边形是否为自相交多边形,若为自相交多边形,则对该两个矢量多边形进行自相交分解为非自相交多边形。该步骤S01可由所述自相交分析处理模块102执行。通过自相交分解后的两个非自相交多边形即为后续需要参与叠加计算的两个矢量多边形。所应说明的是,在其它实施例中,在待处理的矢量多边形存入所述存储器12或缓存之前,可预先对自相交多边形进行处理之后再进行存储,以保证存储的矢量多边形均为非自相交多边形。因此,在其它的实施例中,该步骤S02以及所述自相交分析处理模块102也可以省略。在自相交多边形分解计算后,自相交分析处理模块102可读取并存储符合简单要素规范的目标多边形和操作多边形的矢量顶点坐标数据。
步骤S03,按照叠加操作算子对所述两个矢量多边形进行矢量叠加计算得到结果多边形,按照叠加操作算子的计算结果分别计算所述两个矢量多边形的外包矩形。该步骤S03可由所述外包矩形计算模块103执行。
步骤S04,按照设定的离散网格单元大小对所述两个矢量多边形的结果外包矩形进行空间离散化。该步骤S04可由所述多边形离散化模块104执行。所述多边形离散化模块104用于实现结果外包矩形计算、开辟矩阵内存空间、矩阵初始化,可通过遍历目标多边形和操作多边形的所有顶点,计算两者的外包矩形。
详细地,其中,上述多边形离散化模块104包括第一计算单元1041、第二计算单元1042以及第三计算单元1043。第一计算单元1041用于遍历目标多边形和操作多边形的所有顶点,计算两者的外包矩形。第二计算单元1042用于按照叠加操作算子不同,计算结果外包矩形。其中,当叠加操作为“合并”、“联合”、“更新”、“交集取反”时,结果外包矩形为输入的两多边形外包矩形之和;当叠加操作为“求差”、“标识”时,结果外包矩形为目标多边形的外包矩形;当叠加操作为“求交”时,结果外包矩形为输入的两多边形外包矩形的公共部分。第三计算单元1043用于根据设定的离散网格大小对结果外包矩形的空间范围进行离散化剖分,完成矩阵内存空间的申请和矩阵元素的初始化。
在一实例中,如图3所示,图3是对矢量多边形进行空间离散化的示意图。图3中,21中P1是一个输入或获取的矢量多边形,如上述目标多边形,虚线框代表其外包矩形。22是采用6*6的离散网格单元对矢量多边形P1进行离散化的示意图。23是采用中心点法对离散化后的矩阵元素进行填充,矩阵元素赋值的依据是:若离散网格中心点在P1内,该网格对应的矩阵元素赋值为1,否则赋值为0。
需要说明的是,离散网格特征点的选择并不局限于网格中心点,网格的左上、右上、左下和右下4个角点也可以作为网格单元的特征点,但是在一次叠加计算过程中,离散网格特征点的选择保持一致。
步骤S05,采用环绕数法,在所述多核心处理器13上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算。所述目标多边形和操作多边形均为预设的多边形。该步骤S05可由所述多核心计算模块105执行。
本实施例中,上述多核心计算模块105可包括任务划分单元1051、线程启动单元1052以及计算结果合并单元1053。其中,任务划分单元1051用于完成并行计算任务划分,根据计算核心数量平均划分计算任务量,以实现并行计算任务负载均衡,降低长尾现象对计算效率的影响。第二计算单元1052用于实现在主线程启动多个计算子线程,并将其分配至多核心处理器13的多个核心上运行。计算结果合并单元1053用于调用主线程从计算子线程收集、合并计算结果。
由于离散化后的网格数量通常比较多,计算所有网格与目标多边形和操作多边形的包含关系的时间开销很大,本发明采用共享内存机制和多核心处理器并行计算来加速这一处理过程。由主线程负责进行存储管理、数据划分、负载均衡和结果收集。如图4所示,基于多核心处理器的并行程序运行于多个计算核心(Core)上,负责在廉价消费级计算平台上完成细粒度的大规模并行计算任务。目标多边形P1和操作多边形P2按照前述方法完成多边形离散化后,构成m行、n列的矩阵,矩阵中的每一个元素对应一个离散网格(331/332),每一个离散网格都拥有一个特征点,通过判断该特征点与两个矢量多边形的包含关系,为矩阵元素赋不同的整数值。图3中,多核心处理器设备采用“主线程31/从线程33”的2级并行线程结构的形式组织并行计算任务(321),由主线程启动从线程。物理上,每个线程运行于多核心、处理器的不同的计算核心上,它们可并发地读/写存储于内部存储器共享存储区域中的数据,如网格矩阵32。
在多核心处理器设备上执行并行计算,首先需要确定数据划分方法,定义计算任务。其次需要定义在多核心处理器设备的多个计算核心上并行执行的代码段。再次需要按照定义好的计算任务数量,启动相应数量的线程,将相应的计算任务Task分配到对应的计算核心上。然后,再在各个计算核心上执行并行计算过程,遍历每一个离散网格点,判断与多边形的包含关系,按照包含关系不同对矩阵元素赋不同的值,完成矩阵填充,如331和332的不同颜色代表与多边形不同的包含关系(内或外)。最后,由主线程负责收集、合并计算结果。图4中,从矩阵元素到从线程/计算核心的虚线箭头连线表示计算任务映射过程,由从线程/计算核心到主线程/核心31的实线箭头表示结果收集合并的过程。
需要说明的是,主线程31到从线程33的任务分发和结果合并,都基于共享内存实现,不需要另外设计专用的数据结构,这样降低了并行过程实现的复杂度。
其次,上述采用环绕数法进行离散网格特征点(例如特征点p)与多边形的包含关系进行计算包括以下步骤:
定义环绕数计数器;
将矢量多边形分解为一组环,并将所有的环区分为两种类型,即外环或内环;该矢量多边形为所述目标多边形或所述操作多边形;
对每一个环进行遍历,进行如下处理:
将环绕计数器归0,判断特征点是否在该环的外包矩形内,当特征点在外包矩形内时,判断特征点是否在构成矢量多边形的环的相邻顶点连线上,若在连线上将特征点标记为边界点;若特征点不在外包矩形内,记录特征点的环绕数为0;
将环作为一条闭合的路径,构成环的顶点先后次序决定了构成环的每条边的方向,对于闭合路径的内部区域,从特征点做水平射线,从闭合路径的起点开始行进,记录每条水平射线与特征点相交的环的边,若边自左向右穿过该水平射线,则环绕数减1,若边自右向左穿过该水平射线,则环绕数加1;
按照非零环绕数规则,若最终环绕计数器值为0,则判定特征点在环外部,若最终环绕计数器值不为0,则判定特征点在环内部;
遍历完每一个环后,若特征点在矢量多边形的任意一个外环内部且在该外环所包围的所有内环的外部,则判定该特征点在矢量多边形内。
环绕数法避免了跨越数法的“奇-偶检测”规则在处理自相交多边形时无法得到准确结果的不足。上述过程在基于共享内存的多个处理器核心上并行执行完成。
步骤S06,根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充。该步骤S06可由所述矩阵填充模块106执行。
本实施例中,根据离散网格特征点与多边形的包含关系进行矩阵元素赋值填充包括:
判断特征点是否同时位于目标多边形和操作多边形内部;
如果同时位于目标多边形和操作多边形内部,则将该离散网格对应的矩阵元素赋值为3;
如果特征点位于目标多边形内部,但同时位于操作多边形外部,将其对应的矩阵元素赋值为1;
如果特征点位于目标多边形外部,但同时位于操作多边形内部,将其对应的矩阵元素赋值为2;
如果特征点同时位于目标多边形和操作多边形的外部,则将其对应的矩阵元素赋值为0。
步骤S07,采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列。该步骤S07可由所述边界序列提取模块107执行。
本实施例中,采用环绕边界追踪算法提取叠加计算结果多边形边界的离散网格有序序列,需要从左上角元素开始,采用环绕边界追踪算法按照从左至右、从上至下的顺序对离散网格矩阵进行遍历,提取结果多边形边界的离散网格有序序列。
需要说明的是,环绕边界追踪算法的流程是通过对网格单元的顺序遍历,找出结果多边形所有外环的入口,每个入口定义1个外环和指向0个或多个内环的指针。每完成一个外环的构造,立即在其内部搜索内环。环的构造过程采用从入口网格开始顺时针环绕追踪的方式完成,重复上述过程,直至所有外环被构造完毕,算法结束。具体过程如下:
(1)首先对网格单元按照从上至下、从左至右的规则进行遍历,经过的每个网格均被标记为已访问状态。当遇到第一个未被访问的具有期望类型值的网格后,将其标记为入口网格,同时创建一个新的外环对象RE并将入口网格作为头结点加入RE,此时头结点的前驱和后继结点都为空,开始环绕追踪构环的过程。
(2)自头结点开始的每次追踪均采用以当前网格为中心的、大小为3×3的窗口进行扫描(如图5所示),基于前一网格前进至当前网格的行进方向确定窗口的搜索起始位置,自搜索起始位置开始顺时针遍历窗口网格,找到的第一个期望类型的网格即为下一结点,将其加入RE末尾并标记为已访问状态,同时设置当前结点为新结点的前驱,新结点为当前结点的后继,移动窗口至新结点继续上述窗口扫描过程。图5中,3*3的窗口中心网格为当前结点,编号为0,从0结点左侧网格开始顺时针编码依次为1~8,实线箭头表示从前一结点至当前结点的前进方向(也即网格边界的走向),包围窗口的虚线箭头表示在当前前进方向条件下窗口扫描的环绕追踪顺序,Δr和Δc分别为当前网格与前一网格的行、列号之差。
(3)当窗口扫描所寻找得到的结点为RE的头结点时,标志环RE发生闭合,以该头结点为入口的追踪构环过程完成。继续在环RE内部执行内环的搜索追踪过程,搜索到的内环加入RE名为holes的vector<T>容器(预设容器),内环内部的岛将作为与RE同级别的外环在后续遍历过程中被追踪得到。
(4)从上一入口网格处的下一(右侧)网格开始,继续遍历剩余网格单元,直至完成所有网格的遍历,找出所有的外环及每个外环所包含的内环,环绕边界追踪算法结束。
需要说明的是,洞(holes)是多边形内环的表现形式,环绕边界追踪算法支持包含洞、岛的复杂多边形之间的叠加裁剪。当完成了一个外环的搜索过程之后即开始在该外环内部搜索内环,采用图斑边界跨越数统计的方式判断当前扫描窗口网格是否位于当前外环内。边界跨越计数方法是通过统计某一点沿某一方向(本发明选取水平方向)与多边形边界的交点个数来判断该点是否被多边形包围的方法,只不过相对于射线算法,本发明采用的边界跨越计数方法操作的是离散网格和由一组离散网格按照一定的次序构成的序列。
步骤S08,提取结果多边形边界离散网格的中心点或顶点,构造结果多边形整体图斑。该步骤S08可由所述图斑构造模块108执行。
其中,上述图斑构造模块108包括边界网格追踪单元1081以及整体图斑构造单元1082。所述边界网格追踪单元1081用于采用环绕边界追踪算法实现整体多边形图斑的边界网格单元有序追踪。所述整体图斑构造单元1082用于按照边界网格中心点构环方法或者边界网格顶点构环方法,根据所述边界网格环绕追踪计算结果构造结果多边形的整体图斑。
步骤S09,计算所述结果多边形整体图斑的面积误差。详细地,该图斑误差计算模块109可将所述结果多边形整体图斑与采用通用多边形裁剪(GPC)工具库对所述两个矢量多边形进行计算得到的结果多边形进行对比,计算得到二者的面积误差。该面积误差为一相对误差。该步骤S09可由所述图斑误差计算模块109执行。
本实施例中,计算所述相对面积误差,需要首先采用通用多边形裁剪(GPC)工具库计算目标多边形和操作多边形的叠加分析结果多边形的图形面积,然后与采用本发明所提出算法计算所得的所述结果多边形的整体图斑的面积进行对比,按照以下公式计算相对面积误差值e:
其中,Areavatti代表采用通用多边形裁剪(GPC)工具库计算目标多边形和操作多边形的叠加分析结果多边形的图形面积,Area代表采用本发明所提出算法计算所得的所述结果多边形的整体图斑的面积。
步骤S10,对所述结果多边形进行属性赋值,输出叠加计算结果。所述叠加计算结果可以按照不同的形式进行输出。该步骤S10可由所述结果输出模块110执行。详细地,本实施例中,对结果多边形属性赋值后,按照不同的形式输出,的具体方式如下。首先,按照3种不同的规则为多边形属性赋值,三种规则分别是:(1)保留目标多边形和操作多边形要素的所有字段;(2)仅保留目标多边形和操作多边形要素的非要素ID字段;(3)仅保留目标多边形和操作多边形要素的ID字段。完成属性赋值后,如图6所示,按照离散网格51/52、中心点构环53、离散网格顶点构环54三种不同形式输出结果多边形。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.栅格化并行叠加处理方法,应用于具有多核心处理器的图形处理设备,其特征在于,所述方法包括:
按照叠加操作算子对两个矢量多边形进行矢量叠加计算得到结果多边形,按照叠加操作算子的计算结果分别计算所述两个矢量多边形的外包矩形,所述两个矢量多边形包括一个目标多边形和一个操作多边形;
按照设定的离散网格单元大小对所述两个矢量多边形的结果外包矩形进行空间离散化;
采用环绕数法,在所述多核心处理器上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算;
根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充;
采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列;
提取结果多边形边界离散网格的中心点或顶点,构造结果多边形整体图斑;
将所述结果多边形整体图斑与采用通用多边形裁剪工具库对所述两个矢量多边形进行计算得到的结果多边形进行对比,计算得到二者的面积误差;及
对所述结果多边形进行属性赋值,输出叠加计算结果。
2.如权利要求1所述的矢量多边形栅格化并行叠加处理方法,其特征在于,所述采用环绕数法,在所述多核心处理器上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算,的步骤包括:
定义环绕数计数器;
将矢量多边形分解为一组环,并将所有的环区分为两种类型,即外环或内环;该矢量多边形为所述目标多边形或所述操作多边形;
对每一个环进行遍历,进行如下处理:
将环绕计数器归0,判断特征点是否在该环的外包矩形内,当特征点在外包矩形内时,判断特征点是否在构成矢量多边形的环的相邻顶点连线上,若在连线上将特征点标记为边界点;若特征点不在外包矩形内,记录特征点的环绕数为0;
将环作为一条闭合的路径,构成环的顶点先后次序决定了构成环的每条边的方向,对于闭合路径的内部区域,从特征点做水平射线,从闭合路径的起点开始行进,记录每条水平射线与特征点相交的环的边,若边自左向右穿过该水平射线,则环绕数减1,若边自右向左穿过该水平射线,则环绕数加1;
按照非零环绕数规则,若最终环绕计数器值为0,则判定特征点在环外部,若最终环绕计数器值不为0,则判定特征点在环内部;
遍历完每一个环后,若特征点在矢量多边形的任意一个外环内部且在该外环所包围的所有内环的外部,则判定该特征点在矢量多边形内。
3.如权利要求1所述的矢量多边形栅格化并行叠加处理方法,其特征在于,根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充,的步骤包括:
判断特征点是否同时位于目标多边形和操作多边形内部;
如果同时位于目标多边形和操作多边形内部,则将该离散网格对应的矩阵元素赋值为3;
如果特征点位于目标多边形内部,但同时位于操作多边形外部,将其对应的矩阵元素赋值为1;
如果特征点位于目标多边形外部,但同时位于操作多边形内部,将其对应的矩阵元素赋值为2;
如果特征点同时位于目标多边形和操作多边形的外部,则将其对应的矩阵元素赋值为0。
4.如权利要求1所述的矢量多边形栅格化并行叠加处理方法,其特征在于,采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列,的步骤包括:
对网格单元按照从上至下、从左至右的规则进行遍历,经过的每个网格均被标记为已访问状态;当遇到第一个未被访问的具有期望类型值的网格后,将其标记为入口网格,同时创建一个新的外环对象并将入口网格作为头结点加入外环对象,此时头结点的前驱和后继结点都为空,开始环绕追踪构环的过程;
自头结点开始的每次追踪均采用以当前网格为中心的、大小为3×3的窗口进行扫描,基于前一网格前进至当前网格的行进方向确定窗口的搜索起始位置,自搜索起始位置开始顺时针遍历窗口网格,找到的第一个期望类型的网格即为下一结点,将其加入外环对象末尾并标记为已访问状态,同时设置当前结点为新结点的前驱,新结点为当前结点的后继,移动窗口至新结点继续上述窗口扫描过程;
当窗口扫描所寻找得到的结点为外环对象的头结点时,标志环外环对象发生闭合,以该头结点为入口的追踪构环过程完成;然后继续在外环对象内部执行内环的搜索追踪过程,搜索到的内环加入预设容器,内环内部的岛将作为与外环对象同级别的外环在后续遍历过程中被追踪得到;
从上一入口网格处的下一网格开始,继续遍历剩余网格单元,直至完成所有网格的遍历,找出所有的外环及每个外环所包含的内环。
5.如权利要求1所述的矢量多边形栅格化并行叠加处理方法,其特征在于,在按照叠加操作算子对两个矢量多边形进行矢量叠加计算得到结果多边形的步骤之前,该方法还包括:
获取参与叠加计算的两个矢量多边形;
判断参与叠加计算的两个矢量多边形是否为自相交多边形,若为自相交多边形,则对该两个矢量多边形进行自相交分解为非自相交多边形。
6.一种矢量多边形栅格化并行叠加处理装置,应用于具有多核心处理器的图形处理设备,其特征在于,所述装置包括:
外包矩形计算模块,用于按照叠加操作算子对两个矢量多边形进行矢量叠加计算得到结果多边形,按照叠加操作算子的计算结果分别计算所述两个矢量多边形的外包矩形,所述两个矢量多边形包括一个目标多边形和一个操作多边形;
多边形离散化模块,用于按照设定的离散网格单元大小对所述两个矢量多边形的结果外包矩形进行空间离散化;
多核心计算模块,用于采用环绕数法,在所述多核心处理器上进行离散网格特征点与目标多边形和操作多边形的包含关系进行并行计算;
矩阵填充模块,用于根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充;
边界序列提取模块,用于采用环绕边界追踪算法提取叠加计算得到的结果多边形边界的离散网格有序序列;
图斑构造模块,用于提取结果多边形边界离散网格的中心点或顶点,构造结果多边形整体图斑;
图斑误差计算模块,用于将所述结果多边形整体图斑与采用通用多边形裁剪工具库对所述两个矢量多边形进行计算得到的结果多边形进行对比,计算得到二者的面积误差;及
结果输出模块,用于对所述结果多边形进行属性赋值,输出叠加计算结果。
7.如权利要求6所述的矢量多边形栅格化并行叠加处理装置,其特征在于,所述多核心计算模块通过以下方式对所述目标多边形和操作多边形的包含关系进行并行计算:
定义环绕数计数器;
将矢量多边形分解为一组环,并将所有的环区分为两种类型,即外环或内环;该矢量多边形为所述目标多边形或所述操作多边形;
对每一个环进行遍历,进行如下处理:
将环绕计数器归0,判断特征点是否在该环的外包矩形内,当特征点在外包矩形内时,判断特征点是否在构成矢量多边形的环的相邻顶点连线上,若在连线上将特征点标记为边界点;若特征点不在外包矩形内,记录特征点的环绕数为0;
将环作为一条闭合的路径,构成环的顶点先后次序决定了构成环的每条边的方向,对于闭合路径的内部区域,从特征点做水平射线,从闭合路径的起点开始行进,记录每条水平射线与特征点相交的环的边,若边自左向右穿过该水平射线,则环绕数减1,若边自右向左穿过该水平射线,则环绕数加1;
按照非零环绕数规则,若最终环绕计数器值为0,则判定特征点在环外部,若最终环绕计数器值不为0,则判定特征点在环内部;
遍历完每一个环后,若特征点在矢量多边形的任意一个外环内部且在该外环所包围的所有内环的外部,则判定该特征点在矢量多边形内。
8.如权利要求6所述的矢量多边形栅格化并行叠加处理装置,其特征在于,所述矩阵填充模块根据离散网格特征点与所述目标多边形和操作多边形的包含关系进行矩阵元素值填充的方式包括:
判断特征点是否同时位于目标多边形和操作多边形内部;
如果同时位于目标多边形和操作多边形内部,则将该离散网格对应的矩阵元素赋值为3;
如果特征点位于目标多边形内部,但同时位于操作多边形外部,将其对应的矩阵元素赋值为1;
如果特征点位于目标多边形外部,但同时位于操作多边形内部,将其对应的矩阵元素赋值为2;
如果特征点同时位于目标多边形和操作多边形的外部,则将其对应的矩阵元素赋值为0。
9.如权利要求6所述的矢量多边形栅格化并行叠加处理装置,其特征在于,所述边界序列提取模块通过以下方式提取叠加计算得到的结果多边形边界的离散网格有序序列:
对网格单元按照从上至下、从左至右的规则进行遍历,经过的每个网格均被标记为已访问状态;当遇到第一个未被访问的具有期望类型值的网格后,将其标记为入口网格,同时创建一个新的外环对象并将入口网格作为头结点加入外环对象,此时头结点的前驱和后继结点都为空,开始环绕追踪构环的过程;
自头结点开始的每次追踪均采用以当前网格为中心的、大小为3×3的窗口进行扫描,基于前一网格前进至当前网格的行进方向确定窗口的搜索起始位置,自搜索起始位置开始顺时针遍历窗口网格,找到的第一个期望类型的网格即为下一结点,将其加入外环对象末尾并标记为已访问状态,同时设置当前结点为新结点的前驱,新结点为当前结点的后继,移动窗口至新结点继续上述窗口扫描过程;
当窗口扫描所寻找得到的结点为外环对象的头结点时,标志环外环对象发生闭合,以该头结点为入口的追踪构环过程完成;然后继续在外环对象内部执行内环的搜索追踪过程,搜索到的内环加入预设容器,内环内部的岛将作为与外环对象同级别的外环在后续遍历过程中被追踪得到;
从上一入口网格处的下一网格开始,继续遍历剩余网格单元,直至完成所有网格的遍历,找出所有的外环及每个外环所包含的内环。
10.如权利要求6所述的矢量多边形栅格化并行叠加处理装置,其特征在于,该方法还包括:
多边形获取模块,用于获取参与叠加计算的两个矢量多边形;以及
自相交分析处理模块,用于判断所述参与叠加计算的两个矢量多边形是否为自相交多边形,若为自相交多边形,则对该两个矢量多边形进行自相交分解为非自相交多边形。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710223338.7A CN106952324A (zh) | 2017-04-07 | 2017-04-07 | 矢量多边形栅格化并行叠加处理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710223338.7A CN106952324A (zh) | 2017-04-07 | 2017-04-07 | 矢量多边形栅格化并行叠加处理装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106952324A true CN106952324A (zh) | 2017-07-14 |
Family
ID=59475419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710223338.7A Pending CN106952324A (zh) | 2017-04-07 | 2017-04-07 | 矢量多边形栅格化并行叠加处理装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106952324A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897840A (zh) * | 2018-06-27 | 2018-11-27 | 武大吉奥信息技术有限公司 | 一种并行空间叠加计算中的任务拆分方法及装置 |
CN110322556A (zh) * | 2019-04-29 | 2019-10-11 | 武汉大学 | 一种基于边界裁剪的高速高精度矢栅叠置分析方法 |
CN110335191A (zh) * | 2019-07-10 | 2019-10-15 | 武汉光庭信息技术股份有限公司 | 一种带洞多边形在电子地图中的无损压缩存储方法和装置 |
CN111091570A (zh) * | 2019-11-21 | 2020-05-01 | 招商银行股份有限公司 | 图像分割标注方法、装置、设备及存储介质 |
CN111739040A (zh) * | 2020-05-15 | 2020-10-02 | 深圳市城市规划设计研究院有限公司 | 图斑简化方法、装置、设备和计算机可读存储介质 |
CN112818074A (zh) * | 2020-11-12 | 2021-05-18 | 中国国土勘测规划院 | 一种复杂多内环矢量图形空间叠加优化方法 |
CN113590885A (zh) * | 2021-06-28 | 2021-11-02 | 源卓微电子技术(上海)有限公司 | 一种矢量图形的栅格化方法 |
CN114663316A (zh) * | 2022-05-17 | 2022-06-24 | 深圳市普渡科技有限公司 | 确定沿边路径的方法、移动设备及计算机存储介质 |
CN117349914A (zh) * | 2023-12-06 | 2024-01-05 | 南京信息工程大学 | 一种基于环绕数的布尔运算方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120320087A1 (en) * | 2011-06-14 | 2012-12-20 | Georgia Tech Research Corporation | System and Methods for Parallelizing Polygon Overlay Computation in Multiprocessing Environment |
CN102881028A (zh) * | 2012-05-22 | 2013-01-16 | 浙江大学 | 一种栅格数字图像快速矢量化方法 |
CN104821013A (zh) * | 2015-05-11 | 2015-08-05 | 武汉大学 | 基于大地坐标系数字高程模型的地表面积提取方法及系统 |
CN105184837A (zh) * | 2015-08-31 | 2015-12-23 | 武汉云空间地理信息技术有限公司 | 一种矢量多边形栅格化的算法及系统 |
CN105956994A (zh) * | 2016-05-13 | 2016-09-21 | 山东理工大学 | 基于栅格化叠加分析的图形处理方法及装置 |
-
2017
- 2017-04-07 CN CN201710223338.7A patent/CN106952324A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120320087A1 (en) * | 2011-06-14 | 2012-12-20 | Georgia Tech Research Corporation | System and Methods for Parallelizing Polygon Overlay Computation in Multiprocessing Environment |
CN102881028A (zh) * | 2012-05-22 | 2013-01-16 | 浙江大学 | 一种栅格数字图像快速矢量化方法 |
CN104821013A (zh) * | 2015-05-11 | 2015-08-05 | 武汉大学 | 基于大地坐标系数字高程模型的地表面积提取方法及系统 |
CN105184837A (zh) * | 2015-08-31 | 2015-12-23 | 武汉云空间地理信息技术有限公司 | 一种矢量多边形栅格化的算法及系统 |
CN105956994A (zh) * | 2016-05-13 | 2016-09-21 | 山东理工大学 | 基于栅格化叠加分析的图形处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
周琛 等: "矢量多边形并行栅格化数据划分方法", 《国防科技大学学报》 * |
武广臣 等: "矢量数据栅格化的一种有效方法——环绕数法", 《测绘科学》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897840A (zh) * | 2018-06-27 | 2018-11-27 | 武大吉奥信息技术有限公司 | 一种并行空间叠加计算中的任务拆分方法及装置 |
CN110322556A (zh) * | 2019-04-29 | 2019-10-11 | 武汉大学 | 一种基于边界裁剪的高速高精度矢栅叠置分析方法 |
CN110322556B (zh) * | 2019-04-29 | 2022-06-03 | 武汉大学 | 一种基于边界裁剪的高速高精度矢栅叠置分析方法 |
CN110335191A (zh) * | 2019-07-10 | 2019-10-15 | 武汉光庭信息技术股份有限公司 | 一种带洞多边形在电子地图中的无损压缩存储方法和装置 |
CN111091570A (zh) * | 2019-11-21 | 2020-05-01 | 招商银行股份有限公司 | 图像分割标注方法、装置、设备及存储介质 |
CN111739040A (zh) * | 2020-05-15 | 2020-10-02 | 深圳市城市规划设计研究院有限公司 | 图斑简化方法、装置、设备和计算机可读存储介质 |
CN112818074B (zh) * | 2020-11-12 | 2023-03-10 | 中国国土勘测规划院 | 一种复杂多内环矢量图形空间叠加优化方法 |
CN112818074A (zh) * | 2020-11-12 | 2021-05-18 | 中国国土勘测规划院 | 一种复杂多内环矢量图形空间叠加优化方法 |
CN113590885A (zh) * | 2021-06-28 | 2021-11-02 | 源卓微电子技术(上海)有限公司 | 一种矢量图形的栅格化方法 |
CN113590885B (zh) * | 2021-06-28 | 2024-04-16 | 源卓微电子技术(上海)有限公司 | 一种矢量图形的栅格化方法 |
CN114663316B (zh) * | 2022-05-17 | 2022-11-04 | 深圳市普渡科技有限公司 | 确定沿边路径的方法、移动设备及计算机存储介质 |
CN114663316A (zh) * | 2022-05-17 | 2022-06-24 | 深圳市普渡科技有限公司 | 确定沿边路径的方法、移动设备及计算机存储介质 |
CN117349914A (zh) * | 2023-12-06 | 2024-01-05 | 南京信息工程大学 | 一种基于环绕数的布尔运算方法 |
CN117349914B (zh) * | 2023-12-06 | 2024-03-08 | 南京信息工程大学 | 一种基于环绕数的布尔运算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106952324A (zh) | 矢量多边形栅格化并行叠加处理装置及方法 | |
US10083517B2 (en) | Segmentation of an image based on color and color differences | |
CN106407408A (zh) | 一种海量点云数据的空间索引构建方法及装置 | |
Berry et al. | The Land-use Change Analysis System (LUCAS) for evaluating landscape management decisions | |
CN109086683A (zh) | 一种基于点云语义增强的人手姿态回归方法和系统 | |
CN105956994A (zh) | 基于栅格化叠加分析的图形处理方法及装置 | |
CN102314711A (zh) | 矿产资源评价信息的三维可视化方法及其装置 | |
CN102279874A (zh) | 用于交互制图的快速边路由 | |
CN104966320B (zh) | 一种基于三阶Bezier曲线的伪装迷彩自动生成方法 | |
CN108255489A (zh) | 前端界面代码生成方法、装置、电子设备及存储介质 | |
Halim et al. | Quantifying and optimizing visualization: An evolutionary computing-based approach | |
CN106709503A (zh) | 一种基于密度的大型空间数据聚类算法k‑dbscan | |
Wu et al. | Mixed steepest descent algorithm for the traveling salesman problem and application in air logistics | |
CN108170807A (zh) | 地图数据的处理、地图绘制方法、装置、设备及存储介质 | |
CN106875320A (zh) | 云环境下船舶航行数据的高效可视分析方法 | |
CN107481200A (zh) | 图像处理方法和装置 | |
CN107193923A (zh) | 一种二维地理空间快速矢量叠加的方法及系统 | |
CN110489511B (zh) | 等高线接边高程错误修正方法、系统及电子设备和介质 | |
CN108153572A (zh) | Gis显示方法、装置和系统 | |
CN101533525B (zh) | 一种用于地理信息系统中的点面叠加分析方法 | |
CN109872390A (zh) | 一种海量三维模型的组织方法 | |
Wandelt et al. | An efficient and scalable approach to hub location problems based on contraction | |
CN108846875A (zh) | 形状数据处理方法和装置 | |
Hu et al. | Parallel BVH construction using locally density clustering | |
CN109345947A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170714 |
|
RJ01 | Rejection of invention patent application after publication |