CN101354710B - 一种线段求交的方法及装置 - Google Patents
一种线段求交的方法及装置 Download PDFInfo
- Publication number
- CN101354710B CN101354710B CN2008101164569A CN200810116456A CN101354710B CN 101354710 B CN101354710 B CN 101354710B CN 2008101164569 A CN2008101164569 A CN 2008101164569A CN 200810116456 A CN200810116456 A CN 200810116456A CN 101354710 B CN101354710 B CN 101354710B
- Authority
- CN
- China
- Prior art keywords
- line segment
- intersection point
- intersection
- grid
- data block
- 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.)
- Active
Links
Images
Landscapes
- Image Analysis (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种线段求交的方法及装置,解决现有的线段求交方法存在的问题。所述方法包括:将待处理数据划分为数据块,并对每个数据块进行线段求交的计算,具体为:对每个数据块进行网格划分,并判断每个网格内经过的线段数量是否超过预置阈值,如果未超过,则对网格内的线段计算交点;如果超过,则对网格内的线段采用扫描线法计算交点;将计算所得的交点插入交点所在的线段中。本发明可以避免数据分布不均衡带来线段求交效率的急剧下降,而且采用并行计算的方式来处理各个数据块内的线段求交,从而进一步提高算法效率。本发明实现了对多核、多CPU硬件设备的充分利用,较大幅提升了线段求交性能,为空间分析整体性能的提升提供了坚实的技术保证。
Description
技术领域
本发明涉及空间信息处理技术,特别是涉及一种线段求交的方法及装置。
背景技术
空间分析(Spacial Analysis)是基于地理对象的位置和形态特征的空间数据分析技术,其目的在于提取和传输空间信息。空间分析的对象是空间数据,空间分析的结果直接依赖于分析对象的空间位置。空间分析是GIS(GeographicInformation System,地理信息系统)的核心和灵魂,是GIS区别于一般的信息系统、CAD(Computer Aided Design,计算机辅助设计)或者电子地图系统的主要标志之一。
在GIS空间分析的大部分功能中,都会涉及大量空间对象之间的位置关系处理,而这些问题最终会归结为“线段求交”问题。举例说明,多边形布尔操作是GIS空间分析中最常用的功能之一。比如在统计落在某个区域内的某类地块的面积时,就需要把该区域(多边形)和指定地块(多边形)进行求交运算,求交所得多边形的面积即为统计面积。多边形求交大致分两步:第一步,计算多边形之间的交点;第二步,根据交点顺序构建结果多边形。其中,第一步最终归结为“线段求交”产生交点。其他可能涉及大数据量的GIS基础空间分析功能如:道路网络拓扑处理、缓冲区分析、叠加分析等,最终都归结为“线段求交”运算。因此,提高“大数据量线段求交”算法的效率对提高整个GIS空间分析的性能有着重要意义。
目前,计算线段求交的方法主要有两种。一种是网格划分的方法,该方法将处理区域划分为一个n×m的网格,分别对落在每个网格中的线段计算交点。另一种是扫描线方法,该方法假设有一条垂直于x轴的扫描线,从左往右扫描,在扫描的过程中计算和扫描线相交的线段间的交点。
上述网格划分方法的缺点是:第一,若数据分布不均匀,某几个网格中线段分布密度较大,这样效率会大大下降;第二,线段落在多个网格中,导致不但没有简化计算,反而增加计算量。
上述扫描线方法的缺点是:扫描线处理线段求交的效率不随数据分布的不同而不同,但是在数据分布均匀、网格划分合理的情况下,扫描线处理的效率就没有网格划分处理的效率高。
综上所述,目前的两种计算线段求交的方法都各有缺点,都不能很好地解决线段求交的问题。
发明内容
本发明所要解决的技术问题是提供一种线段求交的方法及装置,以解决现有的线段求交方法存在的问题。
为解决上述技术问题,根据本发明提供的具体实施例,本发明公开了以下技术方案:
一种线段求交的方法,包括:
将待处理数据划分为数据块,并对每个数据块进行线段求交的计算,具体为:
对每个数据块进行网格划分,并判断每个网格内经过的线段数量是否超过第一预置阈值,如果未超过,则对网格内的线段计算交点;如果超过,则对网格内的线段采用扫描线法计算交点;
将计算所得的交点插入交点所在的线段中。
其中,分配并行线程,同时对多个数据块进行线段求交的计算。
所述方法还包括:将每个数据块的处理结果进行汇总。
其中,所述将待处理数据划分为数据块具体包括:采用网格分块方法初步将待处理数据划分为数据块;根据数据块内经过的线段数量,判断数据块的划分是否均衡;如果数据块的线段数量超过第二预置阈值,则采用四叉树方法对该数据块进行再次划分。
其中,所述对网格内的线段计算交点是对网格内的两两线段分别计算交点。
其中,所述采用扫描线法计算交点具体包括:设置两个存储结构,第一个结构用于保存扫描线要扫描的位置,第二个结构用于保存与扫描线相交的线段;其中,采用堆结构实现所述第一个结构,采用平衡二叉树结构实现所述第二个结构。
所述对每个数据块进行网格划分后,还包括:对网格中的每个线段,记录线段所在折线的索引ID、该线段在折线中的位置ID。
其中,所述将计算所得的交点插入交点所在的线段中具体包括:根据交点所在折线的索引ID、交点所在线段在折线中的位置ID,将计算所得的交点插入交点所在的线段中;如果线段上有多个交点,则对多个交点排序,并按顺序将计算所得的交点依次插入交点所在的线段中。
一种线段求交的装置,包括:
数据分块单元,用于将待处理数据划分为数据块;
网格划分线段求交单元,用于对每个数据块进行线段求交的计算,具体为:对每个数据块进行网格划分,并判断每个网格内经过的线段数量是否超过第一预置阈值,如果未超过,则对网格内的线段计算交点;如果超过,则触发扫描线线段求交单元;
扫描线线段求交单元,用于当网格内经过的线段数量超过第一预置阈值时,采用扫描线法计算线段交点;
交点插入单元,用于将计算所得的交点插入交点所在的线段中。
所述装置还包括:并行处理单元,用于分配并行线程,同时对多个数据块进行线段求交的计算。
其中,所述数据分块单元具体包括:网格分块单元,用于采用网格分块方法初步将待处理数据划分为数据块;并根据数据块内经过的线段数量,判断数据块的划分是否均衡;如果数据块的线段数量超过第二预置阈值,则触发四叉树分块单元;四叉树分块单元,用于当数据块的线段数量超过第二预置阈值时,采用四叉树方法对该数据块进行再次划分。
其中,所述网格划分线段求交单元对网格内的线段计算交点,是对网格内的两两线段分别计算交点。
其中,所述扫描线线段求交单元具体包括:堆存储单元,采用堆结构保存扫描线要扫描的位置;平衡二叉树存储单元,用于采用平衡二叉树结构存与扫描线相交的线段。
其中,所述交点插入单元根据交点所在折线的索引ID、交点所在线段在折线中的位置ID,将计算所得的交点插入交点所在的线段中;如果线段上有 多个交点,则对多个交点排序,并按顺序将计算所得的交点依次插入交点所在的线段中。
根据本发明提供的具体实施例,本发明具有以下技术效果:
本发明提出一种新的线段求交的方法,该方法首先利用“数据均衡分块技术”将待处理数据均衡地划分为多个数据块,避免了由于数据分布的不均衡带来线段求交效率的急剧下降,同时保证每块数据单独进行线段求交处理。然后对每个数据块,采用网格划分和扫描线相结合的方法来计算线段交点,即采用网格划分法计算线段交点,而当网格中线对象个数大于预置阈值时,该网格中用扫描线的方式来计算交点。这样就解决了由于线段分布不均匀,某个网格内计算量太大的问题。
同时,将数据进行分块后,可用并行计算的方式来处理各个数据块内的线段求交,从而进一步提高了算法效率。本发明实现了对多核、多CPU硬件设备的充分利用,较大幅提升了线段求交性能,为空间分析整体性能的提升提供了坚实的技术保证。
附图说明
图1是本发明实施例一所述一种线段求交的方法流程图;
图2是本发明实施例二所述一种线段求交的方法流程图;
图3是本发明实施例所述一种线段求交的装置结构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明提出了一种新的线段求交的方法,该方法首先利用“数据均衡分块技术”将待处理数据均衡地划分为多个数据块,然后对每个数据块采用网格划分和扫描线相结合的方法来计算线段交点。下面通过实施例进行详细说明。
实施例一:
参照图1,是实施例所述一种线段求交的方法流程图。
S101,将待处理数据均衡划分为数据块,即在逻辑上划分空间数据;
S102,对每个数据块进行线段求交的计算,首先对每个数据块进行网格划分;
网格划分是将一个数据块划分为多个网格,即网格化数据块中每条线的线对象,网格中保留经过该网格的所有线段,这时数据块中的一个线对象会被划分为多个线对象。
S103,判断每个网格内经过的线段数量是否超过预置阈值,如果未超过,则执行S104;如果超过,则执行S105;
所述判断标准用于衡量网格化后的数据分布是否均匀。如果数据分布均匀,则各个网格中线段分布的密度相近似;如果数据分布不均匀,则有些网格内经过的线段数量较多,有些网格内经过的线段数量较少。所述判断方法通过预置阈值,可以找出网格内线段分布密度较大的网格。
S104,对于数据分布均匀的情况,对网格内的线段计算交点采用的方法是,对网格内的两两线段分别计算交点;
S105,对于某些网格线段分布密度较大的情况,采用扫描线的方法计算网格内的线段交点;
S106,将计算所得的交点插入交点所在的线段中,并根据交点生成新的线对象,同时保留原始线对象的属性;
线段求交的目的不只是计算线段间的所有交点,还要把这些交点插入到相应的线段中,目的是为了把原始线段打断成多段新线段(在交点处打断)。
而且,如果一个线对象被打断生成两个或多个线对象,则新生成的线对象需要继承原始线对象的属性字段,比如对象的名称、类型等信息,所以还需要保留原始线对象的属性。其中,原始线对象是指插入交点前的线段。
S107,优选的,将每个数据块的处理结果汇总整理成全局结果。
经过S106的处理,针对每个网格得到了新的线对象。但由于一条线在经过数据分块和网格划分后,被分为多个线对象,所以最后需要将多个线对象的处理结果汇总为一条线的处理结果。汇总的过程是先将网格处理结果汇总为数据块处理结果,然后再将每个数据块的处理结果汇总为全局结果。
综上所述,本发明在计算线段交点的过程中,通过将待处理数据均衡地划分为多个数据块,避免了由于数据分布的不均衡带来线段求交效率的急剧下 降。同时,对每个数据块,采用网格划分和扫描线相结合的方法来计算线段交点,即当网格中线对象个数大于预置阈值时,该网格中用扫描线的方式来计算交点,这样就解决了由于线段分布不均匀,某个网格内计算量太大的问题。
实施例二:
随着计算机硬件设备的发展,主流计算机实现了从单核、单CPU到多核、多CPU的过度。目前,大多数GIS空间分析算法还都基于传统的单CPU实现,因此在多核、多CPU机器上难以发挥硬件优势,阻碍了性能的提升。另外,随着GIS技术的快速发展,人们对GIS软件空间分析功能的要求也越来越高,需要处理的数据量、同步访问的用户量都出现了急剧膨胀,单CPU上的空间分析功能已经越来越难以适应GIS快速发展的市场需求了。
因此,基于以上方法,本发明还提供了一种优选的实施例。该实施例充分利用计算机系统资源,采用并行计算的方式同时对多个数据块进行线段求交,实现了对多核、多CPU硬件设备的充分利用,较大幅提升了线段求交性能,为空间分析整体性能的提升提供了坚实的技术保证。
并行计算是指在并行(多核、多CPU)计算机上,将一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加快求解速度,或者提高求解应用问题规模的目的。下面通过实施例详细说明。
S201,利用“数据均衡分块技术”将待处理数据均匀划分为数据块,以保证每块数据可以单独进行线段求交处理。
本实施例所述的“数据均衡分块技术”,主要采用网格分块和四叉树相结合的方式均衡划分数据,可以避免由于数据分布的不均衡带来线段求交效率的急剧下降。结合方式是:数据整体上采用网格划分,局部不均匀数据采用四叉树划分,这样等于给数据均衡划分上了双保险,从而达到了数据均衡分块的目的。具体实现步骤如下:
1)采用网格分块方法初步将待处理数据划分为数据块;
2)根据数据块内经过的线段数量,判断数据块的划分是否均衡;
3)如果数据块的线段数量超过预置阈值,则采用四叉树方法对该数据块进行再次划分。
即判断各个数据块的线段分布密度是否较均匀,如果某些数据块的密度大而某些数据块的密度小,则划分不均匀,需要对密度较大的数据块进行再次划分,从而保证各个数据块的线段分布密度相近似。
需要说明的是,上述网格分块和四叉树划分的方法,对于本领域技术人员来说都是比较成熟的算法,因此不再详述。
S202,根据具体硬件环境计算出需要开辟的最优的并行线程数,同时分配线程。
S203,每个线程将分别单独处理S201中划分的数据块。
例如,分出N个数据块,开辟出K个线程,则K个线程将同时开始处理K个数据块,实现数据并行处理。当每个线程处理完相关数据块后,将自动进行剩余数据块的处理,直到将所有数据块处理完毕。
所述并行线程分配方法是根据实验数据多次测试总结而来,目的是高效、合理地分配并行线程数,达到最佳并行计算效果。线程分配的相关约束因素为数据量的大小以及硬件环境等。
S204,每个线程在处理单块数据块的过程中,根据数据块对象的数量进行网格划分。
网格划分需要尽量保证划分的均匀性,因此涉及到网格颗粒度的划分。如果网格颗粒度太小,将导致每个线段经过的网格数上升,增加重复计算量;而如果太大,则每个网格内平均经过的线段数量增加,局部网格内的计算复杂度上升。
此外,在网格划分的过程中,还涉及到网格内部存储结构的设计。由于一个线对象不只是有首末两个顶点的简单线段,而是由一串点组成的折线;每个网格中记录的是落在这个格网中的折线的某一部分;网格划分完毕后,分别计算每个网格内的线段间交点时,需要将线段定位到所在的原始折线对象,以得到线段坐标。因此,网格划分的过程中需要定位到原始线对象,而该存储结构记录了所有经过网格的线段的信息,所以根据该存储结构可以快速地定位到原始对象。
如何定位到原始线对象,包括以下步骤:
1)构造一个点数组,记录所有线对象的点串坐标;
2)对网格中的每个线段,记录其所在折线在数据库中的索引ID、该线段在折线中的位置ID以及线段顶点在点数组中的索引ID。
如果线段相交,则所述前两个索引ID保留在相交的原始折线信息中,方便后续处理在折线中插入交点;而通过最后一个索引ID可以判断线段是否相交。
S205,对经过每个网格的线段进行求交运算,同时记录交点相关信息。
本步骤采用的线段求交计算与扫描线法不同,本步骤是对网格内的两两线段分别计算交点,而扫描线法是对网格内的所有线段通过一条扫描线,在扫描的过程中计算交点(后面再详述)。其中,所述交点相关信息主要包括线段和所对应原始线对象的关联、线段和所对应坐标点的关联等信息,记录交点相关信息以方便后续处理在折线中插入交点。
在本步骤所述的计算方式下,线段相交的情况非常复杂,主要包括:
1)线段之间产生一个交点;分交点是某个线段的端点、交点是非端点等情况;
2)线段之间部分交迭;如果用S1E1、S2E2分别表示两条线段(S表示线段的起点,E表示终点),这里又可以细分为S1-----S2(E2)-----E1-----E2(S2)、S2(E2)-----S1-----E2(S2)-----E1两种情况;
3)线段之间具有包含关系;这里分S1E1包含S2E2和S2E2包含S 1E1两种情况;
4)线段之间完全重合。
在两两计算线段间交点的时候,需要充分考虑以上的线段相交情况,而具体采用的计算方法依程序设计可以有多种,本发明在此不作限定。
S206,如果出现某个网格内经过的线段数量超过设定的上限,则转入网格内部的扫描线线段求交方法。上限设置的依据是:根据单个网格线段两两求交效率和扫描线算法分析对比的结果,上限值即为两者的临界值。
本实施例基于传统的扫描线法,传统的扫描线法是:假设存在一条垂直于x轴的直线,从左到右的扫描整个区域的线对象,扫描的过程中计算和扫描线相交的线对象之间的交点,扫描结束便得到结果。
本实施例通过扫描线算法实现单个网格内的线段求交运算,但为了解决快 速扫描线段顶点和交点、有效维护当前扫描线相交的线段状态、交点的直接插入等问题,本实施例通过引入堆、平衡二叉树等数据结构来解决。具体如下:
扫描过程中需要两个结构:一个结构是x_structure,用于保存扫描线要扫描的位置;另一个结构是y_structure,用于保存和扫描线相交的线段。其中,对于x_structure的补充说明是:扫描过程中并不是对所有的坐标都计算交点,而是选择性的停止下来计算与其他线段的交点,x_structure就是用于保存那些选择性停止的位置。
x_structure结构支持的操作为:
1)得到结构中x值最小的对象(扫描线是沿x轴从左往右扫描x_structure中的对象,所以每次扫描扫描线都相交于x_structure结构中x值最小的对象);
2)插入对象(要把每个线段交点插入到x_structure中);
优先选用堆结构可以高效实现以上各操作。
y_structure结构支持的操作为:
1)插入对象(将左边点和扫描线相交的线段插入到y_structure中);
2)删除对象(从y_structure结构中删除右边点和扫描线相交的线段);
3)得到和结构中某个对象上下相邻的两个对象(当插入、删除或者交换结构中两个对象的位置以后,结构中对象的邻接关系发生了变化,产生了新的邻接关系的对象之间需要计算交点,插入、删除的对象以及交换位置后的两个对象上下相邻的对象的邻接关系都发生了变化,所以要得到这些对象以计算交点);
4)交换已知两个对象在结构中的位置(扫描线扫描到交点的位置时,要交换相交的两个线段对象在结构中的位置)。
优先选用平衡二叉树可以高效实现以上各操作。
S207,将计算所得的交点插入交点所在的原始折线中,根据交点生成新的线对象,并保留原始线对象的属性。
鉴于线段求交产生交点的复杂性,本实施例采取了先计算所有交点,同时记录交点关联信息,再统一提取分段线对象的处理方式,达到比较理想的效果。其中记录交点相关信息,主要用于解决两个局部线段求交产生交点后,如何有序、系统地和原始线对象进行关联。如:交点落在线对象的某一段上,如果在 同一段上产生了多个交点,则有一个交点顺序问题。
将交点插入到相应的折线中具体步骤如下:
1)找出交点所在折线的索引ID,以及交点所在线段在折线中的位置ID;
2)线段上的交点可能不止一个,优选的,对多个交点排序,然后根据1)的结果按顺序将交点依次插入到线段中。
需要说明的是,本步骤实现了多个数据块处理结果的汇总,即把每个数据块中每个网格的计算所得交点插入了原始折线中。
经过以上处理,本发明很好地实现了GIS空间分析中涉及的“线段求交”方法,该方法能够提高线段求交的效率,尤其适用于GIS空间分析中大数据量的处理。
针对上述方法的说明,本发明还提供了一种线段求交的装置实施例。参照图3,是实施例所述一种线段求交的装置结构图。所述装置主要包括数据分块单元U301、网格划分线段求交单元U302、扫描线线段求交单元U303、交点插入单元U304,其中:
数据分块单元U301,用于将待处理数据划分为数据块;
网格划分线段求交单元U302,用于对每个数据块进行线段求交的计算,具体为:对每个数据块进行网格划分,并判断每个网格内经过的线段数量是否超过预置阈值,如果未超过,则对网格内的线段计算交点;如果超过,则触发扫描线线段求交单元U303;其中,所述网格划分线段求交单元U302对网格内的线段计算交点,是对网格内的两两线段分别计算交点;
扫描线线段求交单元U303,用于当网格内经过的线段数量超过预置阈值时,采用扫描线法计算线段交点;
交点插入单元U304,用于将计算所得的交点插入交点所在的线段中;其中,所述交点插入单元U304根据交点所在折线的索引ID、交点所在线段在折线中的位置ID,将计算所得的交点插入交点所在的线段中;如果线段上有多个交点,则对多个交点排序,并按顺序将计算所得的交点依次插入交点所在的线段中。
优选的,所述数据分块单元U301具体包括:
网格分块单元,用于采用网格分块方法初步将待处理数据划分为数据块; 并根据数据块内经过的线段数量,判断数据块的划分是否均衡;如果数据块的线段数量超过预置阈值,则触发四叉树分块单元;
四叉树分块单元,用于当数据块的线段数量超过预置阈值时,采用四叉树方法对该数据块进行再次划分。
优选的,所述扫描线线段求交单元U303具体包括:堆存储单元,采用堆结构保存扫描线要扫描的位置;平衡二叉树存储单元,用于采用平衡二叉树结构存与扫描线相交的线段。
优选的,所述装置还包括:并行处理单元U305,用于分配并行线程,同时对多个数据块进行线段求交的计算。
线段求交装置的处理流程为:
首先,通过数据分块单元U301将待处理数据均衡划分为数据块,其中先通过网格分块单元从整体上进行划分,然后通过四叉树分块单元对局部不均匀的数据块进行再次划分,从而达到了数据均衡分块的目的。
然后,通过并行处理单元U305,分配多个线程对多个数据块同时进行线段求交。其中针对每一个数据块,通过网格划分线段求交单元U302对数据块进行网格划分,并对网格内的线段计算交点;当网格内经过的线段数量超过预置阈值时,通过扫描线线段求交单元U303,采用扫描线法计算线段交点。
最后,通过交点插入单元U304将计算所得的交点插入交点所在的原始折线中,根据交点生成新的线对象,并保留原始线对象的属性。
图3所示装置中未详述的部分可以参见图1、图2所示方法的相关部分,为了篇幅考虑,在此不再详述。
以上对本发明所提供的一种线段求交的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种线段求交的方法,其特征在于,包括:
将待处理数据划分为数据块,并对每个数据块进行线段求交的计算,具体为:
对每个数据块进行网格划分,并判断每个网格内经过的线段数量是否超过第一预置阈值,如果未超过,则对网格内的线段计算交点;如果超过,则对网格内的线段采用扫描线法计算交点;
将计算所得的交点插入交点所在的线段中。
2.根据权利要求1所述的方法,其特征在于:分配并行线程,同时对多个数据块进行线段求交的计算。
3.根据权利要求1所述的方法,其特征在于,还包括:将每个数据块的处理结果进行汇总。
4.根据权利要求1所述的方法,其特征在于,所述将待处理数据划分为数据块具体包括:
采用网格分块方法初步将待处理数据划分为数据块;
根据数据块内经过的线段数量,判断数据块的划分是否均衡;
如果数据块的线段数量超过第二预置阈值,则采用四叉树方法对该数据块进行再次划分。
5.根据权利要求1所述的方法,其特征在于:所述对网格内的线段计算交点是对网格内的两两线段分别计算交点。
6.根据权利要求1所述的方法,其特征在于,所述采用扫描线法计算交点具体包括:
设置两个存储结构,第一个结构用于保存扫描线要扫描的位置,第二个结构用于保存与扫描线相交的线段;
其中,采用堆结构实现所述第一个结构,采用平衡二叉树结构实现所述第二个结构。
7.根据权利要求1所述的方法,其特征在于,所述对每个数据块进行网格划分后,还包括:
对网格中的每个线段,记录线段所在折线的索引ID、该线段在折线中的位置ID。
8.根据权利要求7所述的方法,其特征在于,所述将计算所得的交点插入交点所在的线段中具体包括:
根据交点所在折线的索引ID、交点所在线段在折线中的位置ID,将计算所得的交点插入交点所在的线段中;
如果线段上有多个交点,则对多个交点排序,并按顺序将计算所得的交点依次插入交点所在的线段中。
9.一种线段求交的装置,其特征在于,包括:
数据分块单元,用于将待处理数据划分为数据块;
网格划分线段求交单元,用于对每个数据块进行线段求交的计算,具体为:对每个数据块进行网格划分,并判断每个网格内经过的线段数量是否超过第一预置阈值,如果未超过,则对网格内的线段计算交点;如果超过,则触发扫描线线段求交单元;
扫描线线段求交单元,用于当网格内经过的线段数量超过第一预置阈值时,采用扫描线法计算线段交点;
交点插入单元,用于将计算所得的交点插入交点所在的线段中。
10.根据权利要求9所述的装置,其特征在于,还包括:
并行处理单元,用于分配并行线程,同时对多个数据块进行线段求交的计算。
11.根据权利要求9所述的装置,其特征在于,所述数据分块单元具体包括:
网格分块单元,用于采用网格分块方法初步将待处理数据划分为数据块;并根据数据块内经过的线段数量,判断数据块的划分是否均衡;如果数据块的线段数量超过第二预置阈值,则触发四叉树分块单元;
四叉树分块单元,用于当数据块的线段数量超过第二预置阈值时,采用四叉树方法对该数据块进行再次划分。
12.根据权利要求9所述的装置,其特征在于:所述网格划分线段求交单元对网格内的线段计算交点,是对网格内的两两线段分别计算交点。
13.根据权利要求9所述的装置,其特征在于,所述扫描线线段求交单元具体包括:
堆存储单元,采用堆结构保存扫描线要扫描的位置;
平衡二叉树存储单元,用于采用平衡二叉树结构存与扫描线相交的线段。
14.根据权利要求9所述的装置,其特征在于:
所述交点插入单元根据交点所在折线的索引ID、交点所在线段在折线中的位置ID,将计算所得的交点插入交点所在的线段中;如果线段上有多个交点,则对多个交点排序,并按顺序将计算所得的交点依次插入交点所在的线段中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101164569A CN101354710B (zh) | 2008-07-10 | 2008-07-10 | 一种线段求交的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101164569A CN101354710B (zh) | 2008-07-10 | 2008-07-10 | 一种线段求交的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101354710A CN101354710A (zh) | 2009-01-28 |
CN101354710B true CN101354710B (zh) | 2011-09-14 |
Family
ID=40307520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101164569A Active CN101354710B (zh) | 2008-07-10 | 2008-07-10 | 一种线段求交的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101354710B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102141999B (zh) * | 2010-02-02 | 2012-12-05 | 武汉大学 | 一种基于虚拟节点的tin-dem储存方法 |
CN103399730B (zh) * | 2013-07-29 | 2016-08-10 | 中国科学院地理科学与资源研究所 | 一种基于cpu+gpu架构的空间几何体线段相交判断并行处理方法 |
CN109698010A (zh) * | 2017-10-23 | 2019-04-30 | 北京哲源科技有限责任公司 | 一种针对基因数据的处理方法 |
CN107784195A (zh) * | 2017-11-30 | 2018-03-09 | 新华三大数据技术有限公司 | 数据处理方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0841638A2 (en) * | 1996-11-01 | 1998-05-13 | Motorola, Inc. | Digitized topology data compression |
-
2008
- 2008-07-10 CN CN2008101164569A patent/CN101354710B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0841638A2 (en) * | 1996-11-01 | 1998-05-13 | Motorola, Inc. | Digitized topology data compression |
Non-Patent Citations (1)
Title |
---|
程昌秀,严泰来.关于优化n条线段求交算法的研究.测绘工程10 3.2001,10(3),29-31. * |
Also Published As
Publication number | Publication date |
---|---|
CN101354710A (zh) | 2009-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106055563B (zh) | 一种基于网格划分的并行空间查询方法及其系统 | |
Chiang et al. | Interactive out-of-core isosurface extraction | |
CN109255828A (zh) | 用于光线跟踪的混合层级 | |
CN103995861A (zh) | 一种基于空间关联的分布式数据装置、方法及系统 | |
CN102663801A (zh) | 一种提高三维模型渲染性能的方法 | |
Chen et al. | A flow-guided file layout for out-of-core streamline computation | |
CN110147377A (zh) | 大规模空间数据环境下基于二级索引的通用查询算法 | |
CN109636870A (zh) | 一种狭长图斑分块融解方法及装置 | |
CN101354710B (zh) | 一种线段求交的方法及装置 | |
CN104574449B (zh) | 基于dem的投影面积计算方法 | |
CN105160706A (zh) | 一种单机多核环境下约束地形并行构建方法 | |
Arge et al. | Cache-oblivious data structures | |
Avril et al. | Fast collision culling in large-scale environments using GPU mapping function | |
Carr et al. | Scalable contour tree computation by data parallel peak pruning | |
CN101533525B (zh) | 一种用于地理信息系统中的点面叠加分析方法 | |
CN102637227B (zh) | 基于最短路径的土地资源评价因子作用域划分方法 | |
CN111599015B (zh) | 一种约束条件下的空间多边形网格化填充方法和装置 | |
CN115393530B (zh) | 海量三维模型的单体化渲染方法、存储介质及电子设备 | |
CN104484404B (zh) | 一种改善分布式文件系统中地理栅格数据文件处理方法 | |
CN103106254A (zh) | 多边形矢量数据文件的并行拼接方法 | |
Qiao et al. | Component-based 2-/3-dimensional nearest neighbor search based on Elias method to GPU parallel 2D/3D Euclidean Minimum Spanning Tree Problem | |
Wang et al. | A parallel algorithm for constructing Voronoi diagrams based on point‐set adaptive grouping | |
Pruessner et al. | Efficient algorithm for the forest fire model | |
Marconi et al. | A novel fast online placement algorithm on 2D partially reconfigurable devices | |
Tian et al. | Roaming of large urban scenes based on Unity 3D |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100016 Six Floors, 107 Floor, IT Industrial Park, Electronic City, No. 10 Jiayuan, North Jiuxianqiao Road, Chaoyang District, Beijing Patentee after: SuperMap Software Co., Ltd. Address before: Room 1116, Jiali Hotel, 21 Jiangtai Road, Chaoyang District, Beijing Patentee before: SuperMap Software Co., Ltd. |
|
CP02 | Change in the address of a patent holder |