CN101515284A - 一种基于离散网格的并行空间拓扑分析方法 - Google Patents

一种基于离散网格的并行空间拓扑分析方法 Download PDF

Info

Publication number
CN101515284A
CN101515284A CNA2009100248824A CN200910024882A CN101515284A CN 101515284 A CN101515284 A CN 101515284A CN A2009100248824 A CNA2009100248824 A CN A2009100248824A CN 200910024882 A CN200910024882 A CN 200910024882A CN 101515284 A CN101515284 A CN 101515284A
Authority
CN
China
Prior art keywords
segment
data
regions
spatial
sub
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
Application number
CNA2009100248824A
Other languages
English (en)
Inventor
秦小麟
段安利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Aeronautics and Astronautics
Original Assignee
Nanjing University of Aeronautics and Astronautics
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Aeronautics and Astronautics filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CNA2009100248824A priority Critical patent/CN101515284A/zh
Publication of CN101515284A publication Critical patent/CN101515284A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公布了一种基于离散网格的并行空间拓扑分析方法,本发明所述方法在并行空间拓扑分析过程中,先加载数据,再由Root进程对空间对象进行数据划分,将划分后的子数据传送给多个Sub进程,各Sub进程并行地对其接受到的任务进行空间拓扑分析。本发明具有良好的拓扑健壮性,减少了数据通信,并行空间拓扑分析方法的效率与串行方法相比有了类线性提高。

Description

一种基于离散网格的并行空间拓扑分析方法
技术领域
本发明涉及一种并行空间拓扑分析的方法,尤其涉及一种基于离散网格的并行空间拓扑分析方法。
背景技术
空间数据的特点是不仅包括物体本身的空间位置及状态信息,还包括表示物体的空间关系的信息。空间关系主要包括度量关系、方向关系、拓扑关系等,其中拓扑关系是最为重要和复杂,也是蕴含信息最多的一种关系。拓扑性质是空间对象在连续变形下保持不变的性质,如包含关系、邻接关系等。在拓扑学里没有不能弯曲的元素,每一个图形的大小、形状可以改变。对拓扑关系的研究最初起源于哥尼斯堡七桥问题,数学家欧拉将桥的空间关系抽象简化为4个点及其连线,并给出了问题的解。通过简化和抽象,所保留的就是空间对象的拓扑关系。可见,研究拓扑关系可以发现空间信息中蕴藏的复杂逻辑关系,从而从信息中发现知识。
拓扑关系贯穿于诸多空间数据分析过程中,但其复杂度高,处理海量的空间数据时,难以满足用户实时响应的需求。对空间拓扑关系分析的并行技术的研究能够充分利用目前计算机集群高性能的CPU、大容量内存、高速磁盘阵列以及高带宽通信网络所构成的高性能处理环境,来提高拓扑分析操作的性能。
目前暂无此方面的相关专利。应用并行技术解决空间关系分析时间长的问题,具体原因可分为如下几点:
(1)空间拓扑关系分析在空间查询、更新等数据库操作中使用频率很高,且拓扑操作是CPU密集型操作,操作十分耗时,在拥有海量数据的空间数据库中,涉及拓扑分析操作的响应时间并不能完全满足用户实时响应的要求。
(2)目前的硬件发展趋势是基于传统的内存、处理器和磁盘开发廉价的并行计算机系统,以处理复杂的运算,比较明确的是,这样的硬件需要空间数据库操作也具备并行化才可能发挥效用。
(3)随着微处理机技术和磁盘阵列技术的进步,并行计算机的发展十分迅速,出现了像Sequent,Tandem,Teradata和曙光机这样一些商品化的并行计算机系统。并行计算技术利用多处理机并行处理产生的规模效益来提高系统的整体性能,为GIS数据库系统提供了一个良好的硬件平台。
目前,国内外在并行空间数据操作方面也有相关研究,但他们的侧重点与本专利有所差别,具体如下:
(1)由Thomas Brinkhoff,Hans-Peter Kriegel和Bernhard Seeger于1996年发表在Proceedingof the 12th International Conference上的Parallel Processing of Spatial Joins Using R-trees以及由X Zhou,David J Abel和David Truffet于1998年发表在GeoInformatica上的Data Partitioningfor Parallel Spatial Join Processing均未对空间对象进行划分,而是将不同的空间对象划分给不同的磁盘,对于单个空间对象未进行划分,若对单个的大空间对象按照其中的方法进行划分后会造成空间对象间的拓扑关系错误或者缺失;
(2)现有的空间拓扑分析操作种类不全,例如Warnill Chung,Soon-Young Park和Hae-Young Bae于2005年在LNCS 3605上发表的Efficient Parallel Spatial Join ProcessingMethodin a Shared-Nothing Database Cluster System没有对空间数据划分的结果进行保存,不能对划分结果进行再次利用,而只在Join等操作过程中对空间对象进行划分,进行并行处理。
发明内容
本发明要解决的技术问题是针对现有技术存在的缺陷提出一种基于离散网格的并行空间拓扑分析方法。
本发明一种基于离散网格的并行空间拓扑分析方法,其特征在于该方法包含如下步骤:
步骤1:用户对空间对象发出拓扑查询语句;
步骤2:Root进程接收步骤1所述的拓扑查询语句并选取空间对象的最小包含矩形MBR作为待划分区域;
步骤3:Root进程将步骤2中选取的空间对象的最小包含矩形MBR分割成均等的m个区域LPAi,1≤i≤m,i和m都为自然数,下同;
步骤4:Root进程将步骤3所述的m个区域LPAi分别划分成m份空间数据,对几种不同类型的数据作不同处理:
当空间数据是点集数据Points中的点,则转步骤5,
当空间数据是线段集数据Lines中左半线段,则转步骤6,
当空间数据是线段集数据Lines中右半线段,则转步骤7,
当空间数据是区域集数据Regions中左半线段,则转步骤8,
当空间数据是区域集数据Regions中右半线段,则转步骤9;
步骤5:将步骤4所述的空间数据发送至相对应的进程Subi
步骤6:线段集数据Lines对象L中的左半线段的左端点是pl、右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m,j为自然数,下同;
当当前线段集数据Lines对象L是左算子,则将步骤4所述的空间数据发送至相对应的进程Subi
当当前线段集数据Lines对象L是右算子,则将步骤4所述的空间数据发送至相对应的进程Subj,其中,pl是线段集数据Lines对象L中的左半线段的主导点;
步骤7:Lines对象L中的右半线段的主导点是pr,且pr∈LPAj,将步骤4所述的空间数据发送至相对应的进程Subj
步骤8:区域集数据Regions对象R中的左半线段的左端点是pl、右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m;
当当前区域集数据Regions对象R是左算子,则将步骤4所述的空间数据发送至相对应的进程Subi
当当前区域集数据Regions对象R是右算子,则将步骤4所述的空间数据发送至相对应的进程Subj,其中,pl是区域集数据Regions对象R中的左半线段的的主导点。
步骤9:区域集数据Regions对象R中的右半线段的主导点是pr,且pr∈LPAj,则步骤4所述的空间数据发送至相对应的进程Subj
步骤10:Root进程将步骤4所述的m份空间数据按照轮转法分配给p个不同的Sub进程,其中m≥p,p为自然数,下同;
步骤11:对步骤10所述的p个不同的Sub进程接收到的几种不同类型的数据作不同处理:
当空间数据是点集数据Points中的点,则转步骤12,
当空间数据是线段集数据Lines中左半线段,则转步骤13,
当空间数据是线段集数据Lines中右半线段,则转步骤14,
当空间数据是区域集数据Regions中左半线段,则转步骤15,
当空间数据是区域集数据Regions中右半线段,则转步骤16;
步骤12:当步骤11所述的空间数据是线段集数据Lines对象L或区域集数据Regions对象R中半线段hs的起始点,则将用户对当前空间数据查询的拓扑关系,保存在与之对应的Sub进程,转至步骤11,否则,在扫描线状态中查找步骤11所述的空间数据的前趋;
当步骤11所述的空间数据的前趋不存在,则将用户对将步骤11所述的空间数据查询的拓扑关系保存在与之对应的Sub进程,转至步骤11;
当步骤11所述的空间数据的前趋存在,则将步骤11所述的空间数据和其前趋之间的拓扑关系保存在与之对应的Sub进程,转至步骤11;
步骤13:当当前线段集数据Lines对象L是左算子,则取线段集数据Lines对象L左半线段的主导点,转至步骤12;当当前线段集数据Lines对象L是右算子,则将线段集数据Lines对象L左半线段按照从小到大的顺序插入扫描线状态,转至步骤11;
步骤14:当当前线段集数据Lines对象L是左算子,则取线段集数据Lines对象L右半线段的主导点,转至步骤12;当当前线段集数据Lines对象L是右算子,则将扫描线状态中与线段集数据Lines对象L右半线段对应的左半线段删除,转至步骤11;
步骤15:当当前区域集数据Regions对象R是左算子,则取区域集数据Regions对象R中左半线段的主导点,转至步骤12;当当前区域集数据Regions对象R是右算子,则将区域集数据Regions对象R中左半线段按照从小到大的顺序插入扫描线状态,转至步骤11;
步骤16:当当前区域集数据Regions对象R是左算子,则取区域集数据Regions对象R中右半线段的主导点,转至步骤12;当当前区域集数据Regions对象R是右算子,则将扫描线状态中与区域集数据Regions对象R中右半线段对应的左半线段删除,转至步骤11;
步骤17:Sub进程得到步骤12至步骤16拓扑分析结果,并将拓扑分析结果传送回Root进程;
步骤18:当Root进程有任务未分配完毕,则转至步骤19;
当Root进程没有任务未分配完毕,转至步骤20;
步骤19:将未完成的任务分配给空闲Sub进程,转步骤10;
步骤20:Root进程完成回收步骤10所述的p个部分拓扑分析结果;
步骤21:Root进程将拓扑分析结果传送给用户,任务处理完毕。
本发明提出了一种基于离散网格的并行空间拓扑分析方法,优点如下:
(1)提出一种空间数据划分方法使空间对象划分后空间拓扑关系仍维持不变,具有良好的拓扑健壮性。
(2)由于空间对象间拓扑关系复杂多变,本发明方法采用“一次划分,多次并行”的策略最大限度的减少数据通信。
(3)并行空间拓扑分析方法的效率与串行方法相比有了类线性提高。
附图说明
图1是并行空间拓扑分析的通信图。由Root进程按照该数据划分方法对空间对象进行划分,再由多个Sub进程并行进行空间拓扑分析,最后返回拓扑分析结果。
图2是基于离散网格的并行空间拓扑分析方法的流程图,它与发明内容中的详细描述相对应,是用户从提出拓扑请求到获得分析结果的流程。
图3是拓扑分析中Points对象和Regions对象的划分图。图中有一个带孔的多边形和一个点集。其中,R是一个带孔的多边形,由l1至l1818条线段组成,l1至l14是多边形的外边界,l15至l18构成多边形的内边界;P是一个点集,由A至K共11个点组成。
图4是并行空间拓扑分析时间随Sub进程数目增加而递减的实验结果图。图中四条曲线是空间数据大小分别为7.5M、11.25M、15M、18.75M时并行空间拓扑分析的时间随进程数增加而递减的变化图。
具体实施方式
本发明的发法是提出一种空间数据划分方法,通过将二维空间数据一维线性化,保证划分后空间数据间仍维持原空间关系不变。由于空间对象间拓扑关系种类多达上百种,在同一个系统中,对同样两个对象可以进行多种拓扑查询,因此本发明采用“一次划分,多次并行”的策略,减小通信代价,应用平面扫描法,使得空间拓扑分析问题得到并行化解决。
根据本技术方案进行并行空间拓扑分析的过程中用到的术语概念定义如下:
离散网格(Grid):N*N点阵,N={0,1,...,n-1}。
NPoint:Grid上所有点的集合,其中的点记作np(x,y),0≤x≤N,0≤y≤N。
NSegment:Grid上所有线段的集合,其中的线段记作ns表示为ns(np1,np2),其中np1,np2∈NPoint。
半线段Halfsegment:带有方向的线段,NSegment中的线段被分成两个半线段ls=(p1,p2,left)和rs=(p1,p2,right),其中p1,p2∈NPoint,left和right是该半线段的方向,左或者右。本文对左右半线段的记法如下:设存在线段l,则与其对应的左半线段记作ll,与其对应的右半线段记作lr
主导点:带有方向的半线段的起始点,ll的主导点是l的左端点,lr的主导点是l的右端点。
R-point:NPoint中点的集合。
R-segment:NSegment中半线段的集合。
R-block:相连的R-segment集合S, ∀ r , t ∈ S : ∃ s 1 , . . . s n , si∈S:r=s1,t=sn ∀ i ∈ { 1,2 , . . . , n - 1 } : Meet ( s i , s i + 1 ) , 其中,
Figure A20091002488200084
R-cycle:R-segment的一个集合S。S={s1,s2,…,sn}, ∀ i ∈ { 1,2 , . . . , n } : Meet ( s i , s ( i + 1 ) mod n ) ; 在S中再不存在其他线段对有Meet(si,sj)关系,j≠i+1。R-cycle实际上就是平面图上由多个线段拼接而成的一个圈,在该圈中不再嵌套其他的圈。
R-face f可用(c,H)来表示,c是一个R-cycle,而H={h1,h2,...,hm},它是一个R-cycle的一个集合,H可能为空,令S(f)表示f的所有线段集:
①i∈{1,2,...,n}:hi edge-inside c(即hi在c内部);
②i,j∈{1,2,...,n},i≠j:hi edge-disjoint hj(即hi与hj相离);
③S(f)中的每一个圈o,要么o等于c,要么等于H中的一个圈。
R-face可以表示带空洞的多边形区域。
Points:R-point的集合,是点集数据类型。
Lines:一个不相邻的R-block集合,是线段集数据类型。
Regions:一个边不相邻的R-face集合(边不相邻是指两个面可以由公共点但无公共边),是区域集数据类型。
InsideAbove属性:Regions对象的组成线段的一个属性,它表示这条线段的上方或者左侧是区域的内部。
MBR:Minimum Bounding Rectangle,三种空间数据类型的最小外包矩形。
LPA:logical partition area,一个空间区域被分成多个大小相同或不同的分区称为逻辑分区。
Root进程:在空间数据通信过程中向其他所有的进程发送消息或接受消息的进程,Root进程一般只有一个。
Sub进程:在空间数据通信过程中负责接受Root进程发送的消息的进程或是向Root进程发送消息的多个进程,Sub进程一般有多个。
左算子:在对两个空间对象进行拓扑分析的过程中的被判断对象。例如,判断一个渔船是否在一片海域范围内,渔船是左算子。
右算子:在对两个空间对象进行拓扑分析的过程中的参照对象。例如,判断一个渔船是否在一片海域范围内,海域范围是左算子。
另外,在平面扫描方法中运用到的几个定义如下:
事件点列表:依照系统确定的空间排序关系,事先确定的或在扫描过程中计算出的算法感兴趣的空间元素的有序序列。在基于离散网格的并行空间拓扑分析过程中,有三种不同类型的事件点:①Points类型对象中的点;②Lines和Regions类型对象中的左半线段;③Lines和Regions类型对象中的右半线段。
扫描线状态:依照确定的排序规则记录当前与扫描线相交的空间元素的有序表。
前趋:存在于扫描线状态中且按照扫描线的排序规则比当前元素小的元素的集合中最大元素的位置。
时间点触发的动作:扫描到事件点时做出的分析或操作。
Root进程和Sub进程的通信流程如图1所示。在并行空间拓扑分析过程中,先加载数据,再由Root进程对空间对象进行数据划分,将划分后的子数据传送给多个Sub进程,各Sub进程并行地对其接受到的任务进行空间拓扑分析。
其具体流程图如图2所示。为方便描述,记Points类型对象为P,Lines类型对象为L,Regions类型对象为R。一种基于离散网格的并行空间拓扑分析方法的主要工作流程为:
步骤1:用户向系统提交拓扑查询语句。
步骤2:Root进程选取空间对象的MBR作为待划分区域,MBR为该空间对象的最小包含矩形。
步骤3:Root进程将步骤2中选取的MBR分割成均等的几个区域,分别记作LPAi(1≤i≤m)。
步骤4:Root进程根据LPAi将空间对象划分成m份空间数据,直至空间对象处理完毕,转步骤10。对几种不同类型的数据作不同处理:如果是Points中的点转步骤5;如果是Lines中左半线段转步骤6;如果是Lines中右半线段转步骤7;如果是Regions中左半线段转步骤8;如果是Regions中右半线段转步骤9。
步骤5:Points对象P中的点p:设p∈LPAi,则p→Sub进程i。
步骤6:Lines对象L中的左半线段ll:设ll的左端点是pl,右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m,若当前L是左算子,则ll→Sub进程i;若当前L是右算子,则ll→Sub进程i...Sub进程j。其中,pl是ll的主导点。
步骤7:Lines对象中的右半线段lr:设lr的主导点是pr,且pr∈LPAj,则lr→Sub进程j。
步骤8:Regions对象R中的左半线段ll:设ll的左端点是pl,右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m,若当前R是左算子,则ll→Sub进程i;若当前R是右算子,则ll→Sub进程i...Sub进程j。其中,pl是ll的主导点。
步骤9:Regions对象中的右半线段lr:设lr的主导点是pr,若pr∈LPAj,则lr→Sub进程j。
步骤10:Root进程将划分好的m份空间数据按照轮转法分配给p个空闲的Sub进程,其中m≥p。
步骤11:Sub进程接受Root进程传送过来的空间数据。
步骤12:每个Sub进程用改进的平面扫描方法并行地对空间数据进行空间拓扑分析,依次处理事件点列表中的数据,直至数据处理完毕,转步骤18。对几种不同类型的空间数据作不同的处理:P中点p转步骤13,Lines对象中左右半线段分别转步骤14和步骤15,Regions对象中左右半线段分别转步骤16和步骤17。
步骤13:P中点p:如果p是L(R)中半线段hs的起始点,则p在L(R)中;否则,在扫描线状态中查找p的前趋。p的前趋是指L(R)中位于点p下方且距离p最近的左半线段。若p的前趋不存在,则p与L(R)不存在用户查找的拓扑关系,转至步骤12;如果p的前趋存在,则判断p和其前趋之间是否具有用户需求的拓扑关系,取得结果后保存在本地,转至步骤12。
步骤14:L中左半线段ll:若当前L是左算子,则取ll的主导点p,转至步骤13;若当前L是右算子,则将ll按照从小到大的顺序插入扫描线状态,转至步骤12。
步骤15:L中右半线段lr:若当前L是左算子,则取lr的主导点p,转至步骤13;若当前L是右算子,则将扫描线状态中与lr对应的左半线段删除,转至步骤12。
步骤16:R中左半线段ll:若当前R是左算子,则取ll的主导点p,转至步骤13;若当前R是右算子,则将ll按照从小到大的顺序插入扫描线状态,并检查它是否具备InsideAbove属性,转至步骤12。
步骤17:R中右半线段lr:若当前R是左算子,则取lr的主导点p,转至步骤13;若当前R是右算子,则将扫描线状态中与lr对应的左半线段删除,转至步骤12。
步骤18:Sub进程得到拓扑分析结果,并将本地拓扑分析结果传送回Root进程。
步骤19:Root进程接受Sub进程传送回来的部分拓扑分析结果。
步骤20:Sub进程询问Root进程是否有任务未分配完毕,有则转至步骤21,无则Sub进程处理完毕,转至步骤22。
步骤21:将未完成的任务分配给空闲Sub进程,转步骤11。
步骤22:Root进程完成回收p个部分拓扑分析结果,对p个部分拓扑分析结果进行逻辑处理,得到拓扑分析结果。
步骤23:Root进程将拓扑分析结果传送给用户,任务处理完毕。
如图3所示,为了方便具体实施的描述,我们假定有两个对象和一个实例,其中包含一个点集合对象P和一个区域集合对象R,具体实例是判断P是否在R中,即pr_inside(P,R)。另外,我们假定在用户进行拓扑查询之前,空间对象已经加载到集群中的多个处理器内存上,并且允许存在一定的数据冗余。
其具体实施方式为:
(1)用户进行空间对象拓扑查询:pr_inside(P,R)。
(2)Root进程选取P和R的联合MBR作为待划分区域。
(3)Root进程将(2)中选取的MBR分割成均等的四个区域,分别记作LPAi(1≤i≤4)。
(4)Root进程根据LPAi将空间对象划分成4份空间数据,对几种不同类型的数据作不同处理:
①P中的点p:设p∈LPAi,则p→Sub进程i。
②R中的左半线段ll:设ll的左端点是pl,右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m,则ll→Sub进程i...Sub进程j。其中,pl是ll的主导点。
③R中的右半线段lr:设lr的主导点是pr,若pr∈LPAj,则lr→Sub进程j。
(5)Root进程将(4)中划分好的4份空间数据按照轮转法分配给p个不同的Sub进程,其中p≤4。
(6)p个Sub进程接受Root进程传送过来的不同的空间数据。
(7)每个Sub进程用改进的平面扫描方法并行地对空间数据进行空间拓扑分析。对几种不同类型的空间数据作不同的处理:
①P中点p:如果p是R中半线段hs的起始点,则p在R中;否则,在扫描线状态中查找p的前趋。p的前趋是指R中位于点p下方且距离p最近的左半线段。如果p的前趋不存在,则p与R不在R内部;如果p的前趋存在,则判断p的前趋是否具有InsideAbove属性,若有则P在R内部,若无则P不在R内部。
②R中左半线段ll:则将ll按照从小到大的顺序插入扫描线状态,并检查它是否具备InsideAbove属性。
③R中右半线段lr:将扫描线状态中与lr对应的左半线段删除。
(8)各Sub进程根据(7)的规则得到部分拓扑分析结果。
(9)各Sub进程拓扑分析完毕后,将各个子拓扑分析结果传送回Root进程。
(10)各空闲Sub进程询问Root进程是否有下一步任务。
(11)Root进程接受Sub进程传送回来的部分拓扑分析结果,并将未完成的任务分配给空闲Sub进程运行。
(12)Root进程完成回收p个部分拓扑分析结果。
(13)Root进程对p个部分拓扑分析结果进行逻辑处理。
(14)Root进程得到拓扑分析结果。
(15)Root进程将拓扑分析结果传送给用户,任务处理完毕。
在本方案实施流程中Root进程数据划分和Sub进程并行空间拓扑分析是关键,其中,数据划分的好坏直接影响并行方法的效率。表1是Root进程数据划分的结果。
表1图3中空间对象数据划分结果
Figure A20091002488200121
该数据划分规则能够使划分后的空间对象保持空间拓扑关系不变。对于图3中的对象P和R,要维持划分后的P和R的空间拓扑关系不变,必须使得划分后的P中的所有点仍能够如期找到其前驱,因此对Regions对象R包含的左右半线段采取了不同的划分规则:R中的每条左半线段被分配给它所经过的一个或多个划分区域LPAi,每条右半线段被分配给该线段的右端点所在的划分区域。例如,点E和G的前驱都是l16 l,但是E和G分别属于不同的划分区域LPA2和LPA3,所以l16 l要同时被划分给LPA2和LPA3,因此对于经过多个划分区域的左半线段,应将其划分给它经过的所有划分区域,各划分区域处理左半线段时,将其加入各自的扫描线状态。当扫描线经过R中右半线段时意味着当前线段已经被扫描结束,应从扫描线状态中删除相应的左半线段,所以右半线段只需分配给它的主导点所在的划分区域。
从技术方案可以看出,这种数据划分算法的特点是擅于进行涉及线段和区域的空间拓扑分析。Root进程对空间对象进行数据划分时,将点集中的点分配给它所在的LPA;将区域中的左半线段分配给它所经过的全部LPA,将区域中的右半线段分配给它的主导点所在的LPA。划分结束后Root进程将子数据集传送给各Sub进程,待各Sub进程拓扑分析结束后,回收结果,并行拓扑分析执行完毕。
根据技术方案的流程在集群上对基于离散网格的并行空间拓扑分析方法进行了实验,实验结果如图4所示,由此可以验证本实验方案的第二和三个效益:并行空间拓扑分析方法在尽量减小通信代价的情况下其效率与串行方法相比有了类线性提高。

Claims (1)

1.一种基于离散网格的并行空间拓扑分析方法,其特征在于该方法包含如下步骤:
步骤1:用户对空间对象发出拓扑查询语句;
步骤2:Root进程接收步骤1所述的拓扑查询语句并选取空间对象的最小包含矩形MBR作为待划分区域;
步骤3:Root进程将步骤2中选取的空间对象的最小包含矩形MBR分割成均等的m个区域LPAi,1≤i≤m,i和m都为自然数,下同;
步骤4:Root进程将步骤3所述的m个区域LPAi分别划分成m份空间数据,对几种不同类型的数据作不同处理:
当空间数据是点集数据Points中的点,则转步骤5,
当空间数据是线段集数据Lines中左半线段,则转步骤6,
当空间数据是线段集数据Lines中右半线段,则转步骤7,
当空间数据是区域集数据Regions中左半线段,则转步骤8,
当空间数据是区域集数据Regions中右半线段,则转步骤9;
步骤5:将步骤4所述的空间数据发送至相对应的进程Subi
步骤6:线段集数据Lines对象L中的左半线段的左端点是pl、右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m,j为自然数,下同;
当当前线段集数据Lines对象L是左算子,则将步骤4所述的空间数据发送至相对应的进程Subi
当当前线段集数据Lines对象L是右算子,则将步骤4所述的空间数据发送至相对应的进程Subj,其中,pl是线段集数据Lines对象L中的左半线段的主导点;
步骤7:Lines对象L中的右半线段的主导点是pr,且pr∈LPAj,将步骤4所述的空间数据发送至相对应的进程Subj
步骤8:区域集数据Regions对象R中的左半线段的左端点是pl、右端点是pr,且pl∈LPAi,pr∈LPAj,1≤i≤j≤m;
当当前区域集数据Regions对象R是左算子,则将步骤4所述的空间数据发送至相对应的进程Subi
当当前区域集数据Regions对象R是右算子,则将步骤4所述的空间数据发送至相对应的进程Subj,其中,pl是区域集数据Regions对象R中的左半线段的的主导点。
步骤9:区域集数据Regions对象R中的右半线段的主导点是pr,且pr∈LPAj,则步骤4所述的空间数据发送至相对应的进程Subj
步骤10:Root进程将步骤4所述的m份空间数据按照轮转法分配给p个不同的Sub进程,其中m≥p,p为自然数,下同;
步骤11:对步骤10所述的p个不同的Sub进程接收到的几种不同类型的数据作不同处理:
当空间数据是点集数据Points中的点,则转步骤12,
当空间数据是线段集数据Lines中左半线段,则转步骤13,
当空间数据是线段集数据Lines中右半线段,则转步骤14,
当空间数据是区域集数据Regions中左半线段,则转步骤15,
当空间数据是区域集数据Regions中右半线段,则转步骤16;
步骤12:当步骤11所述的空间数据是线段集数据Lines对象L或区域集数据Regions对象R中半线段hs的起始点,则将用户对当前空间数据查询的拓扑关系保存在与之对应的Sub进程,转至步骤11,否则,在扫描线状态中查找步骤11所述的空间数据的前趋;
当步骤11所述的空间数据的前趋不存在,则将用户对步骤11所述的空间数据查询的拓扑关系保存在与之对应的Sub进程,转至步骤11;
当步骤11所述的空间数据的前趋存在,则将步骤11所述的空间数据和其前趋之间的拓扑关系保存在与之对应的Sub进程,转至步骤11;
步骤13:当当前线段集数据Lines对象L是左算子,则取线段集数据Lines对象L左半线段的主导点,转至步骤12;当当前线段集数据Lines对象L是右算子,则将线段集数据Lines对象L左半线段按照从小到大的顺序插入扫描线状态,转至步骤11;
步骤14:当当前线段集数据Lines对象L是左算子,则取线段集数据Lines对象L右半线段的主导点,转至步骤12;当当前线段集数据Lines对象L是右算子,则将扫描线状态中与线段集数据Lines对象L右半线段对应的左半线段删除,转至步骤11;
步骤15:当当前区域集数据Regions对象R是左算子,则取区域集数据Regions对象R中左半线段的主导点,转至步骤12;当当前区域集数据Regions对象R是右算子,则将区域集数据Regions对象R中左半线段按照从小到大的顺序插入扫描线状态,转至步骤11;
步骤16:当当前区域集数据Regions对象R是左算子,则取区域集数据Regions对象R中右半线段的主导点,转至步骤12;当当前区域集数据Regions对象R是右算子,则将扫描线状态中与区域集数据Regions对象R中右半线段对应的左半线段删除,转至步骤11;
步骤17:Sub进程得到步骤12至步骤16拓扑分析结果,并将所述拓扑分析结果传送回Root进程;
步骤18:当Root进程有任务未分配完毕,则转至步骤19;
当Root进程没有任务未分配完毕,转至步骤20;
步骤19:将未完成的任务分配给空闲Sub进程,转步骤10;
步骤20:Root进程完成回收步骤10所述的p个部分拓扑分析结果;
步骤21:Root进程将拓扑分析结果传送给用户,任务处理完毕。
CNA2009100248824A 2009-03-02 2009-03-02 一种基于离散网格的并行空间拓扑分析方法 Pending CN101515284A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2009100248824A CN101515284A (zh) 2009-03-02 2009-03-02 一种基于离散网格的并行空间拓扑分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2009100248824A CN101515284A (zh) 2009-03-02 2009-03-02 一种基于离散网格的并行空间拓扑分析方法

Publications (1)

Publication Number Publication Date
CN101515284A true CN101515284A (zh) 2009-08-26

Family

ID=41039737

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2009100248824A Pending CN101515284A (zh) 2009-03-02 2009-03-02 一种基于离散网格的并行空间拓扑分析方法

Country Status (1)

Country Link
CN (1) CN101515284A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345505A (zh) * 2013-07-03 2013-10-09 武汉大学 一种基于全球尺度剖分面片的空间对象拓扑关系判断方法
CN104572575A (zh) * 2015-01-27 2015-04-29 南京航空航天大学 一种特大变形动态网格生成方法
CN104753866A (zh) * 2013-12-27 2015-07-01 中国移动通信集团公司 一种数据传输方法及装置
CN107480096A (zh) * 2017-08-21 2017-12-15 西安交通大学 一种大规模群体仿真中的高速并行计算方法
CN109213758A (zh) * 2018-07-24 2019-01-15 中国联合网络通信集团有限公司 数据存取方法、装置、设备及计算机可读存储介质
CN111835592A (zh) * 2020-07-14 2020-10-27 北京百度网讯科技有限公司 用于确定健壮性的方法、装置、电子设备及可读存储介质

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345505A (zh) * 2013-07-03 2013-10-09 武汉大学 一种基于全球尺度剖分面片的空间对象拓扑关系判断方法
CN103345505B (zh) * 2013-07-03 2016-05-11 武汉大学 一种基于全球尺度剖分面片的空间对象拓扑关系判断方法
CN104753866A (zh) * 2013-12-27 2015-07-01 中国移动通信集团公司 一种数据传输方法及装置
CN104572575A (zh) * 2015-01-27 2015-04-29 南京航空航天大学 一种特大变形动态网格生成方法
CN104572575B (zh) * 2015-01-27 2017-10-13 南京航空航天大学 一种特大变形动态网格生成方法
CN107480096A (zh) * 2017-08-21 2017-12-15 西安交通大学 一种大规模群体仿真中的高速并行计算方法
CN107480096B (zh) * 2017-08-21 2020-03-31 西安交通大学 一种大规模群体仿真中的高速并行计算方法
CN109213758A (zh) * 2018-07-24 2019-01-15 中国联合网络通信集团有限公司 数据存取方法、装置、设备及计算机可读存储介质
CN109213758B (zh) * 2018-07-24 2021-03-30 中国联合网络通信集团有限公司 数据存取方法、装置、设备及计算机可读存储介质
CN111835592A (zh) * 2020-07-14 2020-10-27 北京百度网讯科技有限公司 用于确定健壮性的方法、装置、电子设备及可读存储介质
CN111835592B (zh) * 2020-07-14 2022-09-27 北京百度网讯科技有限公司 用于确定健壮性的方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN105589951B (zh) 一种海量遥感影像元数据分布式存储方法及并行查询方法
US5884320A (en) Method and system for performing proximity joins on high-dimensional data points in parallel
US10789231B2 (en) Spatial indexing for distributed storage using local indexes
CN101739281B (zh) 用于机器集群的并行编程的方法和设备
CN101515284A (zh) 一种基于离散网格的并行空间拓扑分析方法
CN110147377B (zh) 大规模空间数据环境下基于二级索引的通用查询方法
JPH06214843A (ja) データベース管理システムおよび問合せの処理方法
CN109033340A (zh) 一种基于Spark平台的点云K邻域的搜索方法及装置
CN110175175A (zh) 一种基于spark的分布式空间二级索引与范围查询算法
JP2011090351A (ja) 検索データ管理装置
CN104111958A (zh) 一种数据查询方法及装置
CN102158533B (zh) 基于QoS的分布式web服务选择方法
CN101299213A (zh) N维聚类排序记录树空间索引方法
CN101719148A (zh) 三维空间信息的存储方法、装置、系统及调度系统
CN105138607B (zh) 一种基于混合粒度分布式内存网格索引的knn查询方法
Wang et al. Sparkarray: An array-based scientific data management system built on apache spark
CN108733781A (zh) 基于内存计算的集群时态数据索引方法
CN112632303A (zh) 一种影像数据的分布式存储方法、分析方法及装置
CN106776810A (zh) 一种大数据的数据处理系统及方法
US20220215021A1 (en) Data Query Method and Apparatus, Computing Device, and Storage Medium
CN115205699B (zh) 一种基于cfsfdp改进算法的地图图斑聚类融合处理方法
CN107291875B (zh) 一种基于元数据图的元数据组织管理方法和系统
CN115422205A (zh) 数据处理方法、装置、电子设备及存储介质
CN104361090A (zh) 数据查询方法及装置
Wang Finding a k-tree core and a k-tree center of a tree network in parallel

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090826