CN102902876B - 一种栅格数据的交叉计算方法和装置 - Google Patents

一种栅格数据的交叉计算方法和装置 Download PDF

Info

Publication number
CN102902876B
CN102902876B CN201210289217.XA CN201210289217A CN102902876B CN 102902876 B CN102902876 B CN 102902876B CN 201210289217 A CN201210289217 A CN 201210289217A CN 102902876 B CN102902876 B CN 102902876B
Authority
CN
China
Prior art keywords
raster data
node
assignment
roota
rootb
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
Application number
CN201210289217.XA
Other languages
English (en)
Other versions
CN102902876A (zh
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.)
Beijing Datum Science & Technology Development Co Ltd
Original Assignee
Beijing Datum Science & Technology Development Co Ltd
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 Beijing Datum Science & Technology Development Co Ltd filed Critical Beijing Datum Science & Technology Development Co Ltd
Priority to CN201210289217.XA priority Critical patent/CN102902876B/zh
Publication of CN102902876A publication Critical patent/CN102902876A/zh
Application granted granted Critical
Publication of CN102902876B publication Critical patent/CN102902876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Abstract

本申请提供了一种栅格数据的交叉计算方法和装置,其中,所述方法涉及至少两组栅格数据的交叉计算,每组栅格数据包括M×N个象素单元,所述方法包括:分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元;分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点;按照预置规则对所述2w×2w个叶子节点进行赋值;采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果。本申请能够用以提高GIS系统中两个或多个栅格数据进行交叉计算的效率。

Description

一种栅格数据的交叉计算方法和装置
技术领域
本申请涉及空间数据处理的技术领域,特别是涉及一种栅格数据的交叉计算方法和装置。
背景技术
地理信息系统(Geographic Information System,GIS)是一种具有采集空间数据并存储、管理、分析与表现空间信息的计算机系统。在GIS系统应用中,栅格数据有着广泛的应用,尤其是随着硬件技术提高,海量栅格数据的存储与计算已经普遍的存在于很多系统中。
对于多个栅格数据的交叉计算,在应用中是一种非常普通的需求。“栅格数据的交叉计算”是指这样的情形:假设有一个栅格数据A,其描述的是全国范围的坡度属性,其每个栅格象素存储的是坡度值,栅格数据的分辨率假设为30米,即每个栅格象素单元代表的实际地理空间范围是30米×30米=900平方米,栅格象素单元的值含义为该900平方米的地面坡度。同时,还有另外一个栅格数据B,其描述的是全国范围的植被属性,每个栅格象素存储的是地表植被情况代码,比如用代码1表示沙地,代码2表示耕地,等等。栅格数据的分辨率也为30米,即栅格数据B的每个象素单元代表900平方米范围内的植被情况。需要指出的是,进行交叉计算的两个或多个栅格数据需要具有相同的分辨率,否则这两个或多个栅格数据的象素单元在空间上不匹配,是无法进行计算的。在实际项目中,“全国范围内坡度大于10度的耕地的分布情况怎么样?以及总面积多少?”,类似这样的多个栅格数据的交叉性计算问题很多。但是,现在的GIS系统中,对多个栅格数据的交叉计算,往往涉及到海量数据的多次分析处理,计算性能是个核心的技术瓶颈。
因此,本领域技术人员迫切需要解决的问题是:如何在目前的GIS系统计算性能条件下,提高多个栅格数据交叉计算的效率。
发明内容
本申请所要解决的技术问题是提供一种栅格数据的交叉计算方法和装置,能够用以提高GIS系统中两个或多个栅格数据进行交叉计算的效率。
为了解决上述问题,本申请公开了一种栅格数据的交叉计算方法,所述方法涉及至少两组栅格数据的交叉计算,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述方法包括:
分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元;
分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点;
按照预置规则对所述2w×2w个叶子节点进行赋值;
采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果。
优选地,所述分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点的步骤包括:
分别针对每组栅格数据的所有栅格块,按照四叉树进行划分,直到划分到节点只对应1个栅格块为止,获得包括从第1层至第w+1层的四叉树结构,所述第w+1层包括2w×2w个叶子节点。
优选地,所述预置规则包括:
判断所述叶子节点中各象素单元的值,是否满足预置的计算条件,若是,则对所述叶子节点赋第一特征值;若否,则对所述叶子节点赋第二特征值;
以及,
当属于同一父节点的叶子节点均被赋予第二特征值时,对所述父节点赋第二特征值,并删除所述父节点下的叶子节点。
优选地,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的交集计算,所述采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果的步骤包括:
子步骤S11,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
子步骤S12,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行子步骤S13;若均为第一特征值,则执行子步骤S14;若均为第二特征值,则执行子步骤S15;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则执行子步骤S15;若其中一节点没有赋值,另一节点有赋值,则执行子步骤S 15;
子步骤S13,继续逐个读取该节点的下一层子节点的赋值,返回子步骤S12;
子步骤S14,获得当前节点的交叉计算结果不为空;
子步骤S15,获得当前节点的交叉计算结果为空。
优选地,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的并集计算,所述采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果的步骤包括:
子步骤S21,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
子步骤S22,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行子步骤S23;若均为第一特征值,则执行子步骤S24;若均为第二特征值,则执行子步骤S25;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则执行子步骤S24;若其中一节点没有赋值,另一节点有赋值,则执行子步骤S24;
子步骤S23,继续逐个读取该节点的下一层子节点的赋值,返回子步骤S22;
子步骤S24,获得当前节点的交叉计算结果不为空;
子步骤S25,获得当前节点的交叉计算结果为空。
优选地,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的差集计算,所述采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果的步骤包括:
子步骤S31,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
子步骤S32,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行子步骤S33;若均为第一特征值,则执行子步骤S34;若均为第二特征值,则执行子步骤S34;若第一栅格数据rootA的节点赋值为第一特征值,第二栅格数据rootB中对应的节点赋值为第二特征值,则执行子步骤S35;若第一栅格数据rootA的节点赋值为第二特征值,第二栅格数据rootB中对应的节点赋值为第一特征值,则执行子步骤S34;若第一栅格数据rootA的节点没有赋值,第二栅格数据rootB中对应的节点有赋值,则执行子步骤S35;若第一栅格数据rootA的节点有赋值,第二栅格数据rootB中对应的节点有赋值,则执行子步骤S34;
子步骤S33,继续逐个读取该节点的下一层子节点的赋值,返回子步骤S32;
子步骤S34,获得当前节点的交叉计算结果为空;
子步骤S35,获得当前节点的交叉计算结果不为空。
本申请实施例还公开了一种栅格数据的交叉计算装置,所述装置用于至少两组栅格数据的交叉计算,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述装置包括:
栅格块划分模块:用于将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元;
四叉树生成模块:用于对每组栅格数据的栅格块建立四叉树结构,形成2w×2w个叶子节点;
叶子节点赋值模块:用于按照预置规则对所述2w×2w个叶子节点进行赋值;
交叉计算模块:用于采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果。
优选地,叶子节点赋值模块包括以下子模块:
第一赋值子模块:用于判断所述叶子节点中各象素单元的值,是否满足预置的计算条件,若是,则对所述叶子节点赋第一特征值;若否,则对所述叶子节点赋第二特征值;
第二赋值子模块:用于在属于同一父节点的叶子节点均被赋予第二特征值时,对所述父节点赋第二特征值,并删除所述父节点下的叶子节点。
优选地,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的交集计算,所述交叉计算模块包括:
第一赋值读取子模块:用于从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
第一赋值判断子模块:用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则调用第一处理子模块;若均为第一特征值,则调用第一交集计算结果子模块;若均为第二特征值,则调用第二交集计算结果子模块;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则调用第二交集计算结果子模块;若其中一节点没有赋值,另一节点有赋值,则调用第二交集计算结果子模块;
第一处理子模块:继续逐个读取该节点的下一层子节点的赋值,返回调用赋值判断子模块;
第一交集计算结果子模块:用于获得当前节点的交叉计算结果不为空;
第二交集计算结果子模块:用于获得当前节点的交叉计算结果为空。
优选地,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的并集计算,所述交叉计算模块包括:
第二赋值读取子模块:用于分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
第二赋值判断子模块:用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值,若均没有赋值,则调用第二处理子模块;若均为第一特征值,则调用第一并集计算结果子模块;若均为第二特征值,则调用第二并集计算结果子模块;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则调用第一并集计算结果子模块;若其中一节点没有赋值,另一节点有赋值,则调用第一并集计算结果子模块;
第二处理子模块:用于继续逐个读取该节点的下一层子节点的赋值,返回调用第二赋值判断子模块;
第一并集计算结果子模块:用于获得当前节点的交叉计算结果不为空;
第二并集计算结果子模块:用于获得当前节点的交叉计算结果为空。
优选地,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的差集计算,所述交叉计算模块包括:
第三赋值读取子模块:用于分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
第三赋值判断子模块:用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值,若均没有赋值,则调用第三处理子模块;若均为第一特征值,则调用第一差集计算结果子模块;若均为第二特征值,则调用第一差集计算结果子模块;若第一栅格数据rootA的节点赋值为第一特征值,第二栅格数据rootB中对应的节点赋值为第二特征值,则调用第二差集计算结果子模块;若第一栅格数据rootA的节点赋值为第二特征值,第二栅格数据rootB中对应的节点赋值为第一特征值,则调用第一差集计算结果子模块;若第一栅格数据rootA的节点没有赋值,第二栅格数据rootB中对应的节点有赋值,则调用第二差集计算结果子模块;若第一栅格数据rootA的节点有赋值,第二栅格数据rootB中对应的节点有赋值,则调用第一差集计算结果子模块;
第三处理子模块:用于继续逐个读取该节点的下一层子节点的赋值,返回调用第三赋值判断子模块;
第一差集计算结果子模块:用于获得当前节点的交叉计算结果为空;
第二差集计算结果子模块:用于获得当前节点的交叉计算结果不为空。
与现有技术相比,本申请包括以下优点:
本申请在栅格数据的交叉计算方法中,首先对GIS系统中两个或多个栅格数据进行分块处理,获得满足要求的栅格数据的栅格块,然后运用四叉树的思想,对所述栅格数据的栅格块建立四叉树结构,对所述四叉树结构中的叶子节点进行赋值,然后读取赋值来确定满足交叉计算的计算条件的栅格块,再进行计算。在这一过程中,根据预置规则给四叉树结构中的叶子节点进行赋值,然后通过判断栅格数据的赋值状态确定栅格数据的交叉计算结果是否为空,若为空则过滤掉不需要处理的栅格块,若不为空则再进行交叉计算,即只对确实满足交叉计算的计算条件的区域数据进行计算,大大提高了栅格数据进行交叉计算的效率。
附图说明
图1是本申请的一种栅格数据的交叉计算方法实施例1的步骤流程图;
图2是本申请的一种栅格数据的交叉计算方法实施例1中栅格数据M×N象素单元的示意图;
图3是本申请的一种栅格数据的交叉计算方法实施例1中栅格数据的栅格块的示意图;
图4是本申请的一种栅格数据的交叉计算方法实施例1中第一栅格数据rootA第一次划分的四叉树结构示意图;
图5是本申请的一种栅格数据的交叉计算方法实施例1中第一栅格数据rootA第一次划分的栅格块结构示意图;
图6是本申请的一种栅格数据的交叉计算方法实施例1中8×8个栅格块最终所得的四叉树结构示意图;
图7是本申请的一种栅格数据的交叉计算方法实施例1中第一栅格数据rootA的叶子节点赋值示意图;
图8是本申请的一种栅格数据的交叉计算方法实施例2的步骤流程图;
图9是本申请的一种栅格数据的交叉计算方法实施例3的步骤流程图;
图10是本申请的一种栅格数据的交叉计算方法实施例4的步骤流程图;
图11是本申请应用实例中全国坡度栅格数据的示意图;
图12是本申请应用实例中全国植被栅格数据的示意图;
图13是本申请应用实例中全国坡度栅格数据和植被栅格数据的交叉计算结果示意图;
图14是本申请的一种栅格数据的交叉计算装置实施例1的步骤流程图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的核心思想之一在于,在栅格数据的交叉计算方法中,首先对栅格数据进行分块处理,获得满足要求的栅格数据的栅格块,然后运用四叉树的思想,对所述栅格数据的栅格块建立四叉树结构,对所述四叉树结构进行赋值和读取赋值的过程,快速过滤掉不需要处理的栅格块,只对满足预置计算条件的栅格块中的数据进行计算。
参照图1,示出了本申请一种栅格数据的交叉计算方法实施例1的步骤流程图,所述方法涉及至少两组栅格数据的交叉计算,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述方法实施例具体可以包括以下步骤:
步骤101,分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元。
实际应用中,栅格数据可以是由行列的二维矩阵的形式来表达空间地物或属性分布的数据组织方式,每个矩阵的格子代表一个象素单元。
如图2所示,在本申请的一种优选实施例中,每组栅格数据可以包括M×N个象素单元,其中,所述M为行,N为列。应用本实施例,可以将所述M×N个象素单元,按照每个栅格块包括T×T个象素单元进行分块,从而得到s×t个栅格块。
如图3所示,在栅格数据的列象素单元上,按T个象素单元进行划分,最后剩下的象素单元如果不足T个象素单元,则补齐,得到s列个块。对栅格数据的行象素单元,也进行同样的划分补齐,得到t行个块。划分后得到的栅格块为s×t个栅格块。
为了方便本申请所述的方法应用,划分并补齐上述所得的栅格块后栅格块数量s×t=2w×2w,即栅格块的行数和列数相同,均为2的幂次方。并且,栅格块所包括的象素单元的行数和列数也相同,一般而言,所述栅格块所包括的T×T个象素单元可以为256×256个象素单元或512×512个象素单元。
步骤102,分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点。
四叉树是一种每个节点最多有四个子节点的数据结构,它可以用来在数据库中放置和定位文件(称作记录或键),也可以用于在二维图片(如栅格数据)中定位像素。因为栅格数据中,像素单元可以重复的被分为四部分,四叉树的层数可以由图片、计算机内存和栅格数据的复杂度决定。举例来说,四叉树的算法可以通过不断的把要查找的记录分成4部分来进行匹配查找,直到仅剩下一条记录为止。四叉树中的分支被称作节点,而叶子节点是用于描述没有子节点的节点。在四叉树结构中,记录被存储在叶子节点的位置。
在本申请实施例的一种实际应用中,所述步骤102可以为:
分别针对每组栅格数据的所有栅格块,按照四叉树进行划分,直到划分到节点只对应1个栅格块为止,获得包括从第1层至第w+1层的四叉树结构,所述第w+1层包括2w×2w个叶子节点。
具体地,以第一栅格数据rootA为例进行说明。如图4所示以rootA代表第一栅格数据rootA的整个栅格块范围,按照四叉树进行第一次划分,得到第一次划分的四叉树结构。同时,图5示出了第一栅格数据rootA第一次划分的栅格块结构示意图。若w=3,即第一栅格数据rootA包括8×8个栅格块,按照四叉树进行第一次划分,得到4个子节点00,01,10,11,其中每个节点都包括4×4个栅格块,然后,继续按照四叉树进行划分。直到划分到节点只对应1个栅格块为止,获得包括从第1层至第4层的四叉树结构,所述第4层包括8×8个叶子节点,最终所得的四叉树结构如图6所示。
步骤103,按照预置规则对所述2w×2w个叶子节点进行赋值。
在实际应用中,所述预置规则可以包括:
判断所述叶子节点中各象素单元的值,是否满足预置的计算条件,若是,则对所述叶子节点赋第一特征值;若否,则对所述叶子节点赋第二特征值;
以及,
当属于同一父节点的叶子节点均被赋予第二特征值时,对所述父节点赋第二特征值,并删除所述父节点下的叶子节点。
在这种情况下,所述预置的计算条件可以用来描述由实际应用的业务需求而确定的限定性条件,比如,第一栅格数据rootA表示坡度属性,则计算条件可以为坡度值在10度到15度范围内。
在本申请的一种优选实施例中,所获得的第一栅格数据rootA的四叉树结构中最终层包括了2w×2w个叶子节点,预置的计算条件可以为坡度值在10度到15度范围内,所述第一特征值可以为1,所述第二特征值可以为0,则所述步骤103可以采用如下方式对所述2w×2w个叶子节点进行赋值:
读取每个叶子节点对应的栅格块数据,从第1个象素单元开始,逐个判断所述叶子节点中各象素单元的值,是否满足预置的计算条件,若是,则给所述叶子节点赋1,此栅格块处理完毕;否则继续判断下一个象素单元是否满足预置的计算条件,直到此栅格块所有象素单元判断完毕,若所有象素单元都不满足预置的计算条件,则给所述叶子节点赋0。当属于同一父节点的叶子节点均被赋予0时,对所述父节点赋0,并删除所述父节点下的叶子节点。否则,所述父节点不需要赋值。只给叶子节点(即没有子节点的节点)赋值。第一栅格数据rootA的叶子节点赋值示意图如图7所示,图中对父节点赋值,并删除不满足预置的计算条件的叶子节点后,即大方框内四叉树结构为赋值后的四叉树结构示意图。
步骤104,采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果。
以两组栅格数据的交叉计算为例,所述栅格数据可以包括第一栅格数据rootA和第二栅格数据rootB,在获得第一栅格数据A和第二栅格数据B的赋值四叉树结构后,可以进行第一栅格数据A和第二栅格数据B的交叉计算。所述的交叉计算可以是第一栅格数据A的计算条件和第二栅格数据B计算条件的交集运算,并集运算,差集运算等等。具体地,可以分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值,根据预置的计算条件和赋值情况,获得计算结果。具体应用中,本申请实施例还可以对N组栅格数据进行交叉计算。其方法是根据获得的N组栅格数据的赋值四叉树结构,从上层到下层,逐个读取每一层中相对应节点的赋值进行交叉计算,获得计算结果。
参照图8,示出了本申请一种栅格数据的交叉计算方法实施例2的步骤流程图,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的交集计算,所述方法可以包括以下步骤:
步骤201,分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元。
步骤202,分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点。
步骤203,按照预置规则对所述2w×2w个叶子节点进行赋值。
步骤204,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
步骤205,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行步骤206;若均为第一特征值,则执行步骤207;若均为第二特征值,则执行步骤208;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则执行步骤208;若其中一节点没有赋值,另一节点有赋值,则执行步骤208;
步骤206,继续逐个读取该节点的下一层子节点的赋值,返回步骤205;
步骤207,获得当前节点的交叉计算结果不为空;
步骤208,获得当前节点的交叉计算结果为空。
具体地,进一步对步骤204至步骤208进行说明如下:对第一栅格数据rootA和第二栅格数据rootB的赋值四叉树结构,从第1层开始,读取第一栅格数据rootA是否有赋值,如果有赋值则其赋值为第二特征值,说明整个第一栅格数据A的所有栅格块都不满足对栅格数据A设定的计算条件,则交叉计算结果为空;同样,读取第二栅格数据rootB是否有赋值,如果有赋值,则交叉计算结果为空;当第一栅格数据rootA和第二栅格数据rootB,都存在4个子节点时,分别处理这4个子节点;分别读取第一栅格数据rootA和第二栅格数据rootB对应的子节点00的赋值,若有一个或两个所述子节点被赋值,则说明所述子节点00下所有栅格块不满足计算条件,则进行交叉计算后,所述子节点00所对应的栅格象素单元结果为空;当第一栅格数据rootA和第二栅格数据rootB的子节点都没有被赋值时,说明它们都存在4个子节点,分别判断这4个子节点的赋值,并且逐渐从上层到下层,直到只包含一个栅格块的叶子节点,然后分别提取第一栅格数据rootA中的叶子节点赋值v1和第二栅格数据rootB中的叶子节点赋值v2,若v1=v2=1,则说明所述叶子节点在第一栅格数据rootA中对应的栅格数据块满足第一栅格数据rootA的计算条件,同时在第二栅格数据rootB中对应的栅格数据块满足第二栅格数据rootB的计算条件,当前节点的交叉计算结果不为空。获得交叉计算结果不为空的结果之后还可以分别读取第一栅格数据rootA和第二栅格数据rootB中所述叶子节点对应的栅格块数据,再进行计算。
参照图9,示出了本申请一种栅格数据的交叉计算方法实施例3的步骤流程图,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的并集计算,所述方法可以包括以下步骤:
步骤301,分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元。
步骤302,分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点。
步骤303,按照预置规则对所述2w×2w个叶子节点进行赋值。
步骤304,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
步骤305,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行步骤306;若均为第一特征值,则执行步骤307;若均为第二特征值,则执行步骤308;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则执行步骤307;若其中一节点没有赋值,另一节点有赋值,则执行步骤307;
步骤306,继续逐个读取该节点的下一层子节点的赋值,返回步骤305;
步骤307,获得当前节点的交叉计算结果不为空;
步骤308,获得当前节点的交叉计算结果为空。
参照图10,示出了本申请一种栅格数据的交叉计算方法实施例4的步骤流程图,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的差集计算,所述方法可以包括以下步骤:
步骤401,分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元。
步骤402,分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点。
步骤403,按照预置规则对所述2w×2w个叶子节点进行赋值。
步骤404,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
步骤405,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,包括以下A1-A7几种情况:
A1:若均没有赋值,则执行步骤406;
A2:若均为第一特征值,则执行步骤407;
A3:若均为第二特征值,则执行步骤407;
A4:若栅格数据rootA的节点赋值为第一特征值,栅格数据rootB中对应的节点赋值为第二特征值,则执行步骤408;
A5:若栅格数据rootA的节点赋值为第二特征值,栅格数据rootB中对应的节点赋值为第一特征值,则执行步骤407;
A6:若栅格数据rootA的节点没有赋值,栅格数据rootB中对应的节点有赋值,则执行步骤408;
A7:若栅格数据rootA的节点有赋值,栅格数据rootB中对应的节点没有赋值,则执行步骤407;
步骤406,继续逐个读取该节点的下一层子节点的赋值,返回步骤405;
步骤407,获得当前节点的交叉计算结果为空;
步骤408,获得当前节点的交叉计算结果不为空。
本申请一种栅格数据的交叉计算方法实施例2、3和4分别示出了所述第一栅格数据rootA和第二栅格数据rootB的交叉计算为交集计算、并集计算和差集计算的情况下,本申请的方法应用步骤流程图,是对本申请一种栅格数据的交叉计算方法实施例1的进一步细化和补充。其中,在本申请方法实施例4中所述的差集运算不同于方法实施例2或3中所述的交集运算或者并集运算,所述第一栅格数据rootA和第二栅格数据rootB的差集计算是不可逆运算,而所述第一栅格数据rootA和第二栅格数据rootB的交集计算和并集计算都是可逆运算;所述的差集运算是指第一栅格数据rootA差第二栅格数据rootB的运算。
如图11所示为全国坡度栅格数据,分辨率为30米,栅格象素大小为134724×161360,按栅格块大小为512×512进行划分,并补齐成2的幂次栅格块数量,得到512×512个栅格块。同样,如图12所示为全国的植被类型栅格数据,栅格边界分辨率与坡度栅格数据完全相同。实际应用中,需要计算“满足坡度条件在5度到8度之间,同时植被亚热带常绿阔叶林区域分布情况”。
对坡度栅格数据和植被栅格数据分别建立四叉树结构并对其叶子节点进行赋值,构建好坡度栅格数据和植被栅格数据的四叉树结构后,进行这2个栅格数据的交叉计算,计算需要312秒;而在同样测试环境下,用普通的栅格象素单元之间直接计算,则需要15分钟处理完,采用本申请实施例的方法使得栅格数据交叉计算的效率提高非常明显;如图13所示为满足交叉计算预置的计算条件的结果分布图。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参照图14,示出本申请的一种栅格数据的交叉计算装置实施例1的结构示意图,所述装置用于至少两组栅格数据的交叉计算,每组栅格数据包括M×N个象素单元,其中,所述M为行,N为列,所述装置具体可以包括如下模块:
栅格块划分模块501,用于将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个象素单元。
四叉树生成模块502,用于对每组栅格数据的栅格块建立四叉树结构,形成2w×2w个叶子节点。
叶子节点赋值模块503,用于按照预置规则对所述2w×2w个叶子节点进行赋值。
交叉计算模块504,用于采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果。
在本申请的一种优选实施例中,叶子节点赋值模块503还可以包括以下子模块:
第一赋值子模块5031,用于判断所述叶子节点中各象素单元的值,是否满足预置的计算条件,若是,则对所述叶子节点赋第一特征值;若否,则对所述叶子节点赋第二特征值。
第二赋值子模块5032,用于在属于同一父节点的叶子节点均被赋予第二特征值时,对所述父节点赋第二特征值,并删除所述父节点下的叶子节点。
在本申请的一种优选实施例中,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的交集计算,所述交叉计算模块504包括:
第一赋值读取子模块5041,用于从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值。
第一赋值判断子模块5042,用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则调用第一处理子模块;若均为第一特征值,则调用第一交集计算结果子模块;若均为第二特征值,则调用第二交集计算结果子模块;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则调用第二交集计算结果子模块;若其中一节点没有赋值,另一节点有赋值,则调用第二交集计算结果子模块。
第一处理子模块5043,继续逐个读取该节点的下一层子节点的赋值,返回调用赋值判断子模块。
第一交集计算结果子模块5044,用于获得当前节点的交叉计算结果不为空。
第二交集计算结果子模块5045,用于获得当前节点的交叉计算结果为空。
在本申请的一种优选实施例中,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的并集计算,所述交叉计算模块504包括:
第二赋值读取子模块5046,用于分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值。
第二赋值判断子模块5047,用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值,若均没有赋值,则调用第二处理子模块;若均为第一特征值,则调用第一并集计算结果子模块;若均为第二特征值,则调用第二并集计算结果子模块;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则调用第一并集计算结果子模块;若其中一节点没有赋值,另一节点有赋值,则调用第一并集计算结果子模块。
第二处理子模块5048,用于继续逐个读取该节点的下一层子节点的赋值,返回调用第二赋值判断子模块。
第一并集计算结果子模块5049,用于获得当前节点的交叉计算结果不为空。
第二并集计算结果子模块5050,用于获得当前节点的交叉计算结果为空。
在本申请的一种优选实施例中,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的差集计算,所述交叉计算模块504包括:
第三赋值读取子模块5051,用于分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值。
第三赋值判断子模块5052,用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值,若均没有赋值,则调用第三处理子模块;若均为第一特征值,则调用第一差集计算结果子模块;若均为第二特征值,则调用第一差集计算结果子模块;若第一栅格数据rootA的节点赋值为第一特征值,第二栅格数据rootB中对应的节点赋值为第二特征值,则调用第二差集计算结果子模块;若第一栅格数据rootA的节点赋值为第二特征值,第二栅格数据rootB中对应的节点赋值为第一特征值,则调用第一差集计算结果子模块;若第一栅格数据rootA的节点没有赋值,第二栅格数据rootB中对应的节点有赋值,则调用第二差集计算结果子模块;若第一栅格数据rootA的节点有赋值,第二栅格数据rootB中对应的节点有赋值,则调用第一差集计算结果子模块。
第三处理子模块5053,用于继续逐个读取该节点的下一层子节点的赋值,返回调用第三赋值判断子模块。
第一差集计算结果子模块5054,用于获得当前节点的交叉计算结果为空。
第二差集计算结果子模块5055,用于获得当前节点的交叉计算结果不为空。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种栅格数据的交叉计算方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (7)

1.一种栅格数据的交叉计算方法,其特征在于,所述方法涉及至少两组栅格数据的交叉计算,每组栅格数据包括M×N个像素单元,其中,所述M为行,N为列,所述方法包括:
分别将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个像素单元;其中,对于栅格数据的列像素单元或行像素单元,在划分栅格块时按T个像素单元进行划分;对栅格块中列像素单元或行像素单元不足T个的,进行补齐;
分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点;
按照预置规则对所述2w×2w个叶子节点进行赋值;
采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果;
其中,所述预置规则包括:
判断所述叶子节点中各像素单元的值,是否满足预置的计算条件,若是,则对所述叶子节点赋第一特征值;若否,则对所述叶子节点赋第二特征值;
以及,
当属于同一父节点的叶子节点均被赋予第二特征值时,对所述父节点赋第二特征值,并删除所述父节点下的叶子节点;
所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的差集计算,所述采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果的步骤包括:
子步骤S31,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
子步骤S32,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行子步骤S33;若均为第一特征值,则执行子步骤S34;若均为第二特征值,则执行子步骤S34;若第一栅格数据rootA的节点赋值为第一特征值,第二栅格数据rootB中对应的节点赋值为第二特征值,则执行子步骤S35;若第一栅格数据rootA的节点赋值为第二特征值,第二栅格数据rootB中对应的节点赋值为第一特征值,则执行子步骤S34;若第一栅格数据rootA的节点没有赋值,第二栅格数据rootB中对应的节点有赋值,则执行子步骤S35;若第一栅格数据rootA的节点有赋值,第二栅格数据rootB中对应的节点没有赋值,则执行子步骤S34;
子步骤S33,继续逐个读取该节点的下一层子节点的赋值,返回子步骤S32;
子步骤S34,获得当前节点的交叉计算结果为空;
子步骤S35,获得当前节点的交叉计算结果不为空。
2.根据权利要求1所述的方法,其特征在于,所述分别针对每组栅格数据的栅格块,建立四叉树结构,形成2w×2w个叶子节点的步骤包括:
分别针对每组栅格数据的所有栅格块,按照四叉树进行划分,直到划分到节点只对应1个栅格块为止,获得包括从第1层至第w+1层的四叉树结构,所述第w+1层包括2w×2w个叶子节点。
3.根据权利要求1或2所述的方法,其特征在于,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的交集计算,所述采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果的步骤包括:
子步骤S11,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
子步骤S12,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行子步骤S13;若均为第一特征值,则执行子步骤S14;若均为第二特征值,则执行子步骤S15;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则执行子步骤S15;若其中一节点没有赋值,另一节点有赋值,则执行子步骤S15;
子步骤S13,继续逐个读取该节点的下一层子节点的赋值,返回子步骤S12;
子步骤S14,获得当前节点的交叉计算结果不为空;
子步骤S15,获得当前节点的交叉计算结果为空。
4.根据权利要求1或2所述的方法,其特征在于,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的并集计算,所述采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果的步骤包括:
子步骤S21,分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
子步骤S22,判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则执行子步骤S23;若均为第一特征值,则执行子步骤S24;若均为第二特征值,则执行子步骤S25;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则执行子步骤S24;若其中一节点没有赋值,另一节点有赋值,则执行子步骤S24;
子步骤S23,继续逐个读取该节点的下一层子节点的赋值,返回子步骤S22;
子步骤S24,获得当前节点的交叉计算结果不为空;
子步骤S25,获得当前节点的交叉计算结果为空。
5.一种栅格数据的交叉计算装置,其特征在于,所述装置用于至少两组栅格数据的交叉计算,每组栅格数据包括M×N个像素单元,其中,所述M为行,N为列,所述装置包括:
栅格块划分模块:用于将每组栅格数据划分成2w×2w个栅格块,其中每个栅格块包括T×T个像素单元;其中,对于栅格数据的列像素单元或行像素单元,在划分栅格块时按T个像素单元进行划分;对栅格块中列像素单元或行像素单元不足T个的,进行补齐;
四叉树生成模块:用于对每组栅格数据的栅格块建立四叉树结构,形成2w×2w个叶子节点;
叶子节点赋值模块:用于按照预置规则对所述2w×2w个叶子节点进行赋值;
交叉计算模块:用于采用每组栅格数据对应栅格块的叶子节点赋值进行交叉计算,获得计算结果;
其中,所述叶子节点赋值模块包括以下子模块:
第一赋值子模块:用于判断所述叶子节点中各像素单元的值,是否满足预置的计算条件,若是,则对所述叶子节点赋第一特征值;若否,则对所述叶子节点赋第二特征值;
第二赋值子模块:用于在属于同一父节点的叶子节点均被赋予第二特征值时,对所述父节点赋第二特征值,并删除所述父节点下的叶子节点;
所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的差集计算,所述交叉计算模块包括:
第三赋值读取子模块:用于分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
第三赋值判断子模块:用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值,若均没有赋值,则调用第三处理子模块;若均为第一特征值,则调用第一差集计算结果子模块;若均为第二特征值,则调用第一差集计算结果子模块;若第一栅格数据rootA的节点赋值为第一特征值,第二栅格数据rootB中对应的节点赋值为第二特征值,则调用第二差集计算结果子模块;若第一栅格数据rootA的节点赋值为第二特征值,第二栅格数据rootB中对应的节点赋值为第一特征值,则调用第一差集计算结果子模块;若第一栅格数据rootA的节点没有赋值,第二栅格数据rootB中对应的节点有赋值,则调用第二差集计算结果子模块;若第一栅格数据rootA的节点有赋值,第二栅格数据rootB中对应的节点没有赋值,则调用第一差集计算结果子模块;
第三处理子模块:用于继续逐个读取该节点的下一层子节点的赋值,返回调用第三赋值判断子模块;
第一差集计算结果子模块:用于获得当前节点的交叉计算结果为空;
第二差集计算结果子模块:用于获得当前节点的交叉计算结果不为空。
6.根据权利要求5所述的装置,其特征在于,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的交集计算,所述交叉计算模块包括:
第一赋值读取子模块:用于从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
第一赋值判断子模块:用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值的状态,若均没有赋值,则调用第一处理子模块;若均为第一特征值,则调用第一交集计算结果子模块;若均为第二特征值,则调用第二交集计算结果子模块;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则调用第二交集计算结果子模块;若其中一节点没有赋值,另一节点有赋值,则调用第二交集计算结果子模块;
第一处理子模块:继续逐个读取该节点的下一层子节点的赋值,返回调用赋值判断子模块;
第一交集计算结果子模块:用于获得当前节点的交叉计算结果不为空;
第二交集计算结果子模块:用于获得当前节点的交叉计算结果为空。
7.根据权利要求5所述的装置,其特征在于,所述栅格数据包括第一栅格数据rootA和第二栅格数据rootB,所述交叉计算为所述第一栅格数据rootA和第二栅格数据rootB的并集计算,所述交叉计算模块包括:
第二赋值读取子模块:用于分别从所述第一栅格数据rootA和第二栅格数据rootB四叉树结构的第1层到第w+1层,自上而下逐个读取每一层中相对应的节点的赋值;
第二赋值判断子模块:用于判断所述第一栅格数据rootA和第二栅格数据rootB相对应的节点赋值,若均没有赋值,则调用第二处理子模块;若均为第一特征值,则调用第一并集计算结果子模块;若均为第二特征值,则调用第二并集计算结果子模块;若其中一节点赋值为第一特征值,另一节点赋值为第二特征值,则调用第一并集计算结果子模块;若其中一节点没有赋值,另一节点有赋值,则调用第一并集计算结果子模块;
第二处理子模块:用于继续逐个读取该节点的下一层子节点的赋值,返回调用第二赋值判断子模块;
第一并集计算结果子模块:用于获得当前节点的交叉计算结果不为空;
第二并集计算结果子模块:用于获得当前节点的交叉计算结果为空。
CN201210289217.XA 2012-08-14 2012-08-14 一种栅格数据的交叉计算方法和装置 Active CN102902876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210289217.XA CN102902876B (zh) 2012-08-14 2012-08-14 一种栅格数据的交叉计算方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210289217.XA CN102902876B (zh) 2012-08-14 2012-08-14 一种栅格数据的交叉计算方法和装置

Publications (2)

Publication Number Publication Date
CN102902876A CN102902876A (zh) 2013-01-30
CN102902876B true CN102902876B (zh) 2016-10-12

Family

ID=47575104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210289217.XA Active CN102902876B (zh) 2012-08-14 2012-08-14 一种栅格数据的交叉计算方法和装置

Country Status (1)

Country Link
CN (1) CN102902876B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765299B (zh) * 2021-01-26 2023-03-10 中国科学院西北生态环境资源研究院 非规则栅格数据的可视化方法、装置、电子设备、存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054009A (zh) * 2009-11-03 2011-05-11 武汉大学 分布式异构栅格空间数据无缝集成方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8665266B2 (en) * 2010-06-23 2014-03-04 The United States Of America, As Represented By The Secretary Of The Navy Global visualization process terrain database builder
CN102609457B (zh) * 2012-01-12 2013-12-04 北京地拓科技发展有限公司 栅格数据的多应用服务方法和栅格数据的多应用服务器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054009A (zh) * 2009-11-03 2011-05-11 武汉大学 分布式异构栅格空间数据无缝集成方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Parallel Quadtree Coding of Large-Scale Raster Geospatial Data on Multicore CPUs and GPGPUs;Jiangting Zhang,Simin You,Le Gruenwald;《A Short Version to Appear in ACMGIS 2011 Conference》;20111231;第3页第3节,图1 *
一种基于自然数的线性四叉树编码;龚健雅;《测绘学报》;19920531;第21卷(第2期);全文 *
关于空间数据结构及四叉树研究;赵捧未,梁新来;《西安电子科技大学学报》;19911231;第18卷(第4期);第71页第3.2节,第72页第4节,图2 *

Also Published As

Publication number Publication date
CN102902876A (zh) 2013-01-30

Similar Documents

Publication Publication Date Title
CN105718480B (zh) 一种基于地理信息的海量三维数据调度的方法
CN104915817A (zh) 一种集装箱的装箱方法和装置
JP2020504866A (ja) 物品整理タスクの生成、物品整理方法及び装置
CN104408055B (zh) 一种激光雷达点云数据的存储方法及装置
CN106250568A (zh) 服务范围确定方法、物流服务提供方推荐方法及相应装置
CN105204920B (zh) 一种基于映射聚合的分布式计算作业的实现方法及装置
CN104599324A (zh) 一种基于gis平台的地图数据加载方法及装置
CN114238488B (zh) 一种多专业数字化成果集成与数据交互方法及系统
CN105550344A (zh) 一种基于格网及权重关系的矢量点要素抽稀方法
CN105404898A (zh) 一种松散型点云数据分割方法和设备
CN103714124B (zh) 超大规模低压数据处理方法
CN105488176A (zh) 数据处理方法和装置
CN116383144A (zh) 一种多源异构遥感数据存储方法和装置
CN110309622B (zh) 一种输电塔结构倒塌分析方法
CN102968404B (zh) 地震资料的初至信息处理方法及装置
CN102902876B (zh) 一种栅格数据的交叉计算方法和装置
CN114064707A (zh) 一种用于数据虚拟化服务器的数据查询方法、装置及存储介质
CN103838680A (zh) 一种数据缓存方法和装置
US20150293971A1 (en) Distributed queries over geometric objects
CN105210059A (zh) 一种数据处理方法及系统
CN106021770A (zh) 飞机结构矩形平板的稳定性分析方法和装置
CN109800857A (zh) 一种空洞卷积加速系统及其方法
CN102117288A (zh) 一种三维建模中搜索建模数据的方法及装置
Ferreira et al. An efficient external memory algorithm for terrain viewshed computation
CN104484404A (zh) 一种改善分布式文件系统中地理栅格数据文件处理方法

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