CN108363808A - 海量数据的动态调度与显示方法、装置、设备及存储介质 - Google Patents
海量数据的动态调度与显示方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN108363808A CN108363808A CN201810185578.7A CN201810185578A CN108363808A CN 108363808 A CN108363808 A CN 108363808A CN 201810185578 A CN201810185578 A CN 201810185578A CN 108363808 A CN108363808 A CN 108363808A
- Authority
- CN
- China
- Prior art keywords
- tile
- node
- initial level
- vector data
- quad
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例公开了一种海量数据的动态调度与显示方法、装置、设备及计算机可读存储介质,包括在全球范围中、依据矢量数据的矢量数据图层范围计算四叉树结构的初始层级;依据四叉树结构的初始层级范围及预设瓦片大小确定四叉树结构的层数;初始化初始层级的瓦片节点;按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;依据请求到的每条矢量数据构建相应的绘制节点,并将各个绘制节点挂接至目标瓦片节点上。本发明实施例能够实现海量矢量数据在三维场景中的动态调度,有效减小了内存中的数据量,提高系统性能。
Description
技术领域
本发明实施例涉及地理信息系统技术领域,特别是涉及一种海量数据的动态调度与显示方法、装置、设备及计算机可读存储介质。
背景技术
随着科技的发展,地理信息系统等三维场景技术在生活中的应用越来越广泛,在三维场景中对矢量数据进行有效调度对三维场景技术的发展尤为重要。
目前,现有技术中在对三维场景中的矢量数据进行调度时,通过对矢量数据一次性解析完毕,将所有空间数据全部加载到内存中,但是由于内存大小是有限的,所以所调度的矢量数据的大小受到限制,当所需调度的数据为海量数据时,现有技术中的调度方法便不能实现对海量数据的调度。
因此,如何在三维场景中实现对海量矢量数据的动态调度是目前本领域技术人员亟需解决的问题。
发明内容
本发明实施例的目的是提供一种海量数据的动态调度与显示方法、装置、设备及计算机可读存储介质,在使用过中能够实现海量矢量数据在三维场景中的动态调度,从而避免在进行矢量数据调度时将所有的矢量数据加载至内存中,有效减小了内存中的数据量,有助于提供系统性能。
为解决上述技术问题,本发明实施例提供了一种海量数据的动态调度与显示方法,包括:
S11:获取在地理坐标参考下矢量数据的矢量数据图层范围;
S12:在全球范围中、依据所述矢量数据图层范围计算四叉树结构的初始层级;
S13:获取所述四叉树结构的初始层级对应的初始层级范围,并依据所述初始层级范围及预设瓦片大小确定所述四叉树结构的层数;
S14:初始化所述初始层级的瓦片节点;
S15:按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与所述目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;所述预设条件依据所述四叉树结构的层数进行确定;
S16:依据请求到的每条所述矢量数据构建相应的绘制节点,并将各个所述绘制节点挂接至所述目标瓦片节点上。
可选的,按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点的过程为:
S150:将所述初始层级的瓦片节点作为当前瓦片节点;
S151:判断所述当前瓦片节点是否在当前场景视景体内,如果是,则进入S152;否则,则当所述当前瓦片节点是初始层级的瓦片节点时进入S156,当所述当前瓦片节点不是初始层级的瓦片节点时进入S157;
S152:判断所述当前瓦片节点是否具有与其对应的孩子节点,如果是,则进入S153;否则,则进入S154;
S153:将是瓦片节点的孩子节点作为当前瓦片节点,并返回S151;
S154:计算所述当前瓦片节点的空间中心点和视点之间的距离,并判断所述距离是否在相应的显示距离范围内,如果是,则进入S155;
S155:判断所述当前瓦片节点的层级是否等于所述四叉树结构的层数与初始层级之和,如果是,则所述当前瓦片节点为目标瓦片节点;否则,进入S156;
S156:对所述当前瓦片节点进行四等分以构建新的瓦片,并对所述新的瓦片构建相应的瓦片节点,将所构建的各个瓦片节点挂接至所述当前瓦片节点上,返回S150,进入下一轮遍历;
S157:删除所述当前瓦片节点,以及删除所述当前瓦片节点的孩子节点,并将下一个瓦片节点作为当前瓦片节点,返回S151。
可选的,所述在全球范围中、依据所述矢量数据图层范围计算四叉树结构的初始层级的过程为:
S120:将全球范围作为四叉树结构的根节点进行四叉树划分,每次划分得到的当前瓦片所在层数均相比上次划分得到的瓦片所在层数加一;
S121:若划分的当前瓦片完全包括所述矢量数据图层范围、且下一层对所述当前瓦片进行四叉树划分时切分所述矢量数据图层范围,则所述当前瓦片所在层数为所述四叉树结构的初始层级。
可选的,所述依据所述初始层级范围及预设瓦片大小确定所述四叉树结构的层数的过程为:
S130:获取所述初始层级范围的左下角经纬度坐标,和所述初始层级范围的瓦片中心点的经纬度坐标;
S131:将所述左下角的经纬度坐标转换为直角坐标系下的左下角直角坐标;将所述瓦片中心点的经纬度坐标转换为直角坐标系下的瓦片中心点直角坐标;
S132:依据所述左下角直角坐标和所述瓦片中心点直角坐标计算所述初始层级的工作范围对应的空间半径;
S133:依据预设瓦片大小和所述空间半径确定所述四叉树结构的层数;所述预设瓦片大小为双精度型值大于预设阈值。
可选的,在所述依据请求到的每条所述矢量数据构建相应的绘制节点之后,还包括:
依据各个所述绘制节点对相应的矢量数据进行绘制显示。
可选的,在所述获取在地理坐标参考下矢量数据的矢量数据图层范围之前,所述方法还包括:
通过坐标参考转换将矢量数据从当前的坐标参考下转换至地理坐标参考下;所述地理坐标系为CGCS2000地理坐标系。
本发明实施例相应的提供了一种海量数据的动态调度与显示装置,包括:
获取模块,用于获取在地理坐标参考下矢量数据的矢量数据图层范围;
四叉树结构构建模块,用于在全球范围中、依据所述矢量数据图层范围计算四叉树结构的初始层级;
确定模块,用于获取所述四叉树结构的初始层级对应的初始层级范围,并依据所述初始层级范围及预设瓦片大小确定所述四叉树结构的层数;
瓦片节点构建模块,用于初始化所述初始层级的瓦片节点;
调度模块,用于按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与所述目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;所述预设条件依据所述四叉树结构的层数进行确定;
绘制模块,用于依据请求到的每条所述矢量数据构建相应的绘制节点,并将各个所述绘制节点挂接至所述目标瓦片节点上。
可选的,所述装置还包括:
显示模块,用于依据各个所述绘制节点对相应的矢量数据进行绘制显示。
本发明实施例提供了一种海量数据的动态调度与显示设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述所述海量数据的动态调度与显示方法的步骤。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述海量数据的动态调度与显示方法的步骤。
本发明实施例提供了一种海量数据的动态调度与显示方法、装置、设备及计算机可读存储介质,包括获取在地理坐标参考下矢量数据的矢量数据图层范围;在全球范围中、依据矢量数据图层范围计算四叉树结构的初始层级;获取四叉树结构的初始层级对应的初始层级范围,并依据初始层级范围及预设瓦片大小确定四叉树结构的层数;初始化初始层级的瓦片节点;按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;依据请求到的每条矢量数据构建相应的绘制节点,并将各个绘制节点挂接至目标瓦片节点上。
本发明通过对矢量数据所在的矢量数据图层范围构建与其相应的四叉树结构,计算出四叉树结构的初始层级和层数,再构建初始层级的瓦片节点,并按照预设规则对初始层级的瓦片节点进行处理,从而确定出满足预设条件的瓦片节点,并将满足预设条件的瓦片节点作为目标瓦片节点,请求目标瓦片节点的瓦片范围相交的矢量数据,并对所请求出的每条矢量数据构建相应的绘制节点,再将各个绘制节点挂接至目标瓦片节点上。在遍历过程中可以确定出各个目标瓦片节点,并请求出与每个目标瓦片节点相应的矢量数据,从而实现对矢量数据的动态调度。本发明在使用过中能够实现海量矢量数据在三维场景中的动态调度,从而避免在进行矢量数据调度时将所有的矢量数据加载至内存中,有效减小了内存中的数据量,有助于提供系统性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种海量数据的动态调度与显示方法的流程示意图;
图2为本发明实施例提供的一种全球范围示意图;
图3为本发明实施例提供的一种四叉树结构第0层0列0行示意图;
图4为对图3中的第0层0列0行进行切分后的示意图;
图5为对图4中的第1层0列0行进行切分后的示意图;
图6为本发明实施例提供的一种海量数据的动态调度与显示装置的结构示意图。
具体实施方式
本发明实施例提供了一种海量数据的动态调度与显示方法、装置、设备及计算机可读存储介质,在使用过中能够实现海量矢量数据在三维场景中的动态调度,从而避免在进行矢量数据调度时将所有的矢量数据加载至内存中,有效减小了内存中的数据量,有助于提供系统性能。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,图1为本发明实施例提供的一种海量数据的动态调度与显示方法的流程示意图。
为解决上述技术问题,本发明实施例提供了一种海量数据的动态调度与显示方法,包括:
S11:获取在地理坐标参考下矢量数据的矢量数据图层范围;
需要说明的是,在地理信息中有坐标参考这一概念,本申请中优选的以CGCS2000地里坐标参考为参考框架,全球范围作为构建矢量四叉树初级层级的基准,其中,全球范围(即经纬度表示范围)如图2所示。
具体的,对于矢量数据若其当前的坐标参考就是在地理坐标参考下,则可以直接获取在地理坐标参考下矢量数据的经纬度表示,从而获取其矢量数据图层范围;若矢量数据的当前坐标参考不是地理坐标参考,则获取矢量数据的坐标参考后,可以通过坐标参考转换将矢量数据转换到地理坐标参考下,具体可以转换到CGCS2000地理坐标参考下,从而得在地理坐标参考下的矢量数据的经纬度表示,进一步可以得到地理坐标参考下矢量数据的矢量数据图层范围。
S12:在全球范围中、依据矢量数据图层范围计算四叉树结构的初始层级;
需要说明的是,当在全球范围中构建四叉树结构时,四叉树结构的层级会非常高,瓦片数量会很多,从而会大量消耗内存,并且所构建的四叉树结构中的大多数四叉树节点是没有用的,所以需要求出矢量图层范围所归属的瓦片所在层级,从而便可以大大降低内存消耗,提高运算效率。
具体的,在获取矢量数据在地理坐标参考下的矢量数据图层范围后,依据该矢量数据图层范围就可以计算出所要构建的四叉树结构的初始层级,其中,将四叉树结构的根节点作为初始层级,并确定出矢量图层范围所归属的瓦片,并计算出该瓦片所归属的层级,该层级即为四叉树结构的初始层级。
S13:获取四叉树结构的初始层级对应的初始层级范围,并依据初始层级范围及预设瓦片大小确定四叉树结构的层数;
需要说明的是,为了确定合适请求实际的矢量数据,本申请需要确定四叉树结构的层数,以便通过四叉树结构的层数确定目标瓦片节点,以实现矢量数据的调度。
具体的,本申请中可以通过四叉树结构的初始层级对应的初始层级范围计算出初始层级的图层工作范围的空间半径,并通过该空间半径和预设瓦片进一步确定四叉树结构的层数。
S14:初始化初始层级的瓦片节点;
具体的,在初始化初始层级的瓦片节点时,需要计算出初始层级瓦片的左下角llCorner、右上角ruCorner、初始层级瓦片中心点tCenter以及空间中心点(该空间中心点与初始层级瓦片中心点不同)在直角坐标系下的坐标。
具体的,通过初始层级瓦片的范围获取左下角llCorner、右上角ruCorner、初始层级瓦片中心点tCenter的弧度值(即各个点的经纬度值),将各点的经纬度值通过坐标系转换关系式转换为直角坐标系下的坐标。设,左下角llCorner的经纬度坐标为(L1,B1),转换后的直角坐标为(X1,Y1,Z1);右上角ruCorner的经纬度坐标为(L2,B2),转换后的直角坐标为(X2,Y2,Z2);初始层级瓦片中心点tCenter的经纬度坐标为(L3,B3),转换后的直角坐标为(X3,Y3,Z3),其中,坐标系转换公式为:
Xi=(Ni+H)cosBicosLi
Yi=(Ni+H)cosBisinLi
Zi=[Ni(1-e2)+H]sinBi
其中,i=(1,2,3),e2=a2-b2/a2,a=6378137.0,b=6356752.3142,H=0。
另外,对于空间中心点的直角坐标的计算,可以通过采用计算的方法进行计算,具体如下:
设采样数据为sample,则经度方向采样间隔dWidth为dWidth=(baseExtent.XMax-baseExtent.XMin)/(sample-1),其中,baseExtent.XMax为初始层级瓦片经度方向最大值,baseExtent.XMin为初始层级瓦片经度方向最小值,具体可以通过初始层级瓦片对应的范围获得;纬度方向采样间隔dHeight为dHeight=(baseExtent.YMax-baseExtent.YMin)/(sample-1),其中,baseExtent.YMax为初始层级瓦片纬度方向最大值,baseExtent.YMin为初始层级瓦片纬度方向最小值,具体也可以通过初始层级瓦片对应的范围获得。计算出sample*sample个采样点经纬度坐标,并将各个采样点的经纬度坐标转换为直角坐标系下的直角坐标;加上初始层级瓦片的左下角llCorner、右上角ruCorner、初始层级瓦片中心点tCenter这三个点后,共得到sample*sample+3个点的直角坐标,获取sample*sample+3个点在X、Y、Z方向上的最大值、最小值minX,minY,minZ,maxX,maxY,maxZ,并通过以下两个关系式计算出minValue和maxValue:
minValue=Tuple3d(minX,minZ,-maxY)
maxValue=Tuple3d(maxX,maxZ,-minY),
再根据计算关系式center=(minValue+maxValue)/2计算出空间中心点center的直角坐标,以及根据计算关系式size=maxValue-minValue计算出瓦片空间大小。
再根据初始层级瓦片的层级确定其最小显示距离minRange和最大显示距离,其中,由于初始瓦片层级不等于subLevel+baseLevel-1,所以初始层级瓦片的minRange=0,初始层级瓦片的maxRange=D初/2+mMaxRange,其中:
D初=(ruCorner-llCorner).GetLength(),表示初始层级右上角和左下角两点之间的距离;mMaxRange为由外面设置的最大显示距离,具体可以有人工根据实际情况进行设定。
在构建初始层级的瓦片节点时,将初始层级瓦片的空间中心点center、空间大小size、初始层级瓦片的最大显示距离、最小显示距离、初始层级瓦片的层(level)列(col)行(row)的信息写入至初始层级瓦片节点中即可,以用于后续数据调度。对于初始层级瓦片的层级level=初始层级baseLevel,初始层级的列col=(layerExtent.Xmin-(-180))/(180-(-180))/2baseLevel,其中,layerExtent.Xmin为矢量图层数据范围经度的最小值;初始层级的行row=(90-layerExtent.YMax)/(90-(-90))/2baseLevel,其中,layerExtent.YMax为矢量图层数据范围纬度的最大值。
具体的,对于上述计算sample*sample个采样点经纬度坐标的过程,具体可以通过以下伪代码循环计算出sample*sample个采样点经纬度坐标,并将各个采样点坐标放到points列表里:
另外,对于其他层级的瓦片,由于是四叉树关系,其孩子节点的层列行值都可以通过父亲的层列行值计算出来。与每个孩子节点分别对应的空间中心点和空间大小均可以根据上述与初始层级的瓦片节点对应的空间中心点和空间大小的计算方法进行计算,本申请在此不再赘述。
此外,在计算当前瓦片的最小显示距离和最大显示距离时,应判断当前瓦片的层级是否等于subLevel+baseLevel-1,如果不等于,则其最小显示距离minRange=0,最大显示距离maxRange=(ruCorner-llCorner).GetLength()/2+mMaxRange;如果相等,则其最小显示距离mMinRange和最大显示距离mMaxRange均由外面设置,其具体数值均可以根据实际情况进行确定,本申请对此不做特殊限定,能实现本发明实施例的目的即可。
S15:按照预设规则对初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;所述预设条件依据所述四叉树结构的层数进行确定;
具体的,可以按照数据结构中的先根遍历树的方法从初始层级对应的瓦片节点起开始遍历,在第一次遍历的过程中整个四叉树结构只有初始层级,所以在对初始层级对应的瓦片节点遍历后,对初始层级瓦片进行四等分划分,得到与初始层级瓦片对应的四个子瓦片,再对这四个子瓦片构建相应的瓦片节点,并将所构建的各个瓦片节点挂接至初始层级对应的瓦片节点上(即挂接至四叉树结构的根节点上)以对四叉树结构进行完善,其中,根节点与其各个孩子节点形成父子关系。再按照数据结构的先根遍历树的方法对四叉树结构中的各个瓦片节点进行遍历,并在遍历过程中不断完善四叉树结构,且删除不符合要求的瓦片节点,确定出满足预设条件的目标瓦片节点,具体可以找到瓦片所在层等于四叉树结构的层数与初始层级层数之和的瓦片(即瓦片所归属的层级=subLevel+baseLevel),将该瓦片作为目标瓦片节点,并请求与该目标瓦片节点范围相交的矢量数据,以实现数据调度。
需要说明的是,本申请中在对初始层级瓦片节点的四个子瓦片构建相应的瓦片节点时,具体可以根据初始层级瓦片节点(根节点)层列行值计算其各个孩子节点的层列行值。例如,初始层级的四个孩子的层列行分别为:层baseLevel+1,列2*col,行2*row;层baseLevel+1,列2*col+1,行2*row;层baseLevel+1,列2*col+1,行2*row+1;层baseLevel+1,列2*col,行2*row+1。
另外,与每个孩子节点分别对应的空间中心点和空间大小均可以根据上述S14中介绍的、与初始层级的瓦片节点对应的空间中心点和空间大小的计算方法进行计算,本申请在此不再赘述。
此外,在计算当前瓦片的最小显示距离和最大显示距离时,应判断当前瓦片的层级是否等于subLevel+baseLevel-1,如果不等于,则其最小显示距离minRange=0,最大显示距离maxRange=(ruCorner-llCorner).GetLength()/2+mMaxRange;如果相等,则其最小显示距离mMinRange和最大显示距离mMaxRange均由外面设置,其具体数值均可以根据实际情况进行确定,本申请对此不做特殊限定,能实现本发明实施例的目的即可。
S16:依据请求到的每条矢量数据构建相应的绘制节点,并将各个绘制节点挂接至目标瓦片节点上。
需要说明的是,本申请中在对各个瓦片节点进行遍历的过程中,可以在每次确定出目标瓦片节点之后,请求与相应目标瓦片节点的瓦片范围相交的矢量数据,并依据请求到的每条矢量数据构建相应的绘制节点,并将各个绘制节点挂接至相应的目标瓦片节点上,以完善四叉树结构。在每次将各个绘制节点挂接至本次确定的目标瓦片节点上后,继续按照数据结构中的先根遍历树的方法对其他节点进行遍历,以确定出下一个目标瓦片节点,并请求与相应的目标瓦片节点范围相交的矢量数据,并再次依据当前请求到的每条矢量数据构建相应的绘制节点,将各个绘制节点挂接至相应的目标瓦片节点上,直至对所有节点遍历完毕,再进行下一轮循环。也可以在确定出各个目标瓦片节点后,再逐个请求与与相应目标瓦片节点的瓦片范围相交的矢量数据,并依据请求到的每条矢量数据构建相应的绘制节点,再将归属于同一个目标瓦片节点的各个绘制节点挂接至相应的目标瓦片节点下。
本申请可以实时对矢量数据进行调度,每次请求矢量数据时即可完成一次数据调度,当多次请求矢量数据时,即可实现海量数据在三维场景中的动态调度,以便于实现海量矢量数据在三维场景中的动态显示。
本发明实施例提供了一种海量数据的动态调度与显示方法,通过对矢量数据所在的矢量数据图层范围计算出四叉树结构的初始层级和层数,再构建初始层级的瓦片节点,并按照预设规则对初始层级的瓦片节点进行处理,从而确定出满足预设条件的瓦片节点,并将满足预设条件的瓦片节点作为目标瓦片节点,请求目标瓦片节点的瓦片范围相交的矢量数据,并对所请求出的每条矢量数据构建相应的绘制节点,再将各个绘制节点挂接至目标瓦片节点上。在遍历过程中可以确定出各个目标瓦片节点,并请求出与每个目标瓦片节点相应的矢量数据,从而实现对矢量数据的动态调度。本发明在使用过中能够实现海量矢量数据在三维场景中的动态调度,从而避免在进行矢量数据调度时将所有的矢量数据加载至内存中,有效减小了内存中的数据量,有助于提供系统性能。
在上述实施例的基础上:
作为一个具体的实施例,上述S12中的在全球范围中、依据矢量数据图层范围计算四叉树结构的初始层级的过程,具体可以为:
S120:将全球范围作为四叉树结构的根节点进行四叉树划分,每次划分得到的当前瓦片所在层数均相比上次划分得到的瓦片所在层数加一;
具体的,本申请以全球范围为四叉树结构的根节点,并且其根节点作为第0层,以进行四叉树划分,每次划分的层数加一。
S121:若划分的当前瓦片完全包括矢量数据图层范围、且下一层对当前瓦片进行四叉树划分时切分矢量数据图层范围,则当前瓦片所在层数为四叉树结构的初始层级。
需要说明的是,当划分的当前瓦片所在层curLevel完全包括矢量数据图层范围,且下一层curLevel+1会切分矢量数据图层范围时,则当前瓦片所在层curLevel就是矢量数据构建的四叉树结构的初始层级baseLevel,当前瓦片所在层包含矢量图层的瓦片范围作为四叉树结构初始层级的范围baseExtent。
具体请参照图3-图5,其中,图3为全球范围,也即四叉树结构的第0层0列0行(0_0_0),完全包含矢量图层范围,则对其进行四分,得到图4所示的全球范围第一层,此时四叉树结构的第1层0列0行(1_0_0)完全包含矢量图层范围,则对第1层0列0行(1_0_0)继续四分,并且在第1层0列0行(1_0_0)继续四分后,切分了矢量图层范围,如图5所示,因此矢量图层构建的四叉树结构的初始层级为1,的全球范围第二层,此时,(1_0_0)的瓦片范围为矢量图层构建的四叉树结构的初始层级的范围。
需要说明的是,通过本发明实施例提供的方法可以快速准确地确定出四叉树结构的初始层级,有助于提高数据处理速度和有效降低内存消耗。作为一个具体的实施例,在上述S13中,依据初始层级范围及预设瓦片大小确定四叉树结构的层数的过程,具体可以为:
S130:获取初始层级范围的左下角经纬度坐标,和初始层级范围的瓦片中心点的经纬度坐标;
具体的,可以通过构建的四叉树结构的初始层级的初始层级范围baseExtent获取其左下角llCorner经纬度坐标(即弧度值)及其中心点tcenter的经纬度坐标。
S131:将左下角的经纬度坐标转换为直角坐标系下的左下角直角坐标;将瓦片中心点的经纬度坐标转换为直角坐标系下的瓦片中心点直角坐标;
具体的,将获取到的各个经度(L)纬度(B)按以下坐标系转换公式转换成直角坐标系下坐标,例如,左下角llCorner的经纬度坐标为(L1,B1),转换后的直角坐标为(X1,Y1,Z1);初始层级瓦片中心点tCenter的经纬度坐标为(L3,B3),转换后的直角坐标为(X3,Y3,Z3),其中,坐标系转换公式为:
Xi=(Ni+H)cosBicosLi
Yi=(Ni+H)cosBisinLi
Zi=[Ni(1-e2)+H]sinBi
其中,i=(1,3),e2=a2-b2/a2,a=6378137.0,b=6356752.3142,H=0。
需要说明的是,本发明实施例中提供的坐标系转换方法计算简单,有助于提高数据处理速度。当然,本申请不仅限于采用上述方法将经纬度坐标转换为直角坐标系下的直角坐标,也可以采用其他的方式实现坐标系的转换,具体采用哪种方式本发明实施例对此不作特殊限定,能实现本发明实施例的目的即可。
S132:依据左下角直角坐标和瓦片中心点直角坐标计算初始层级的工作范围对应的空间半径;
具体可以按照以下工作范围计算关系式得到初始层级对应的工作范围的空间半径radius:
S133:依据预设瓦片大小和空间半径确定四叉树结构的层数;预设瓦片大小为双精度型值大于预设阈值。
具体的,本申请中的预设瓦片大小可以用tileSize表示,该预设瓦片大小为一个双精度型值,并通过计算关系式leveMaxRange=2level*tileSize计算出一个范围值,其中,level从0开始,依次加1,直到求出的leveMaxRange的值大于工作范围的空间半径radius,此时的level值就是四叉树的层数sublevel。
需要说明的是,通过本发明实施例提供的方法可以简单、快速地确定出四叉树结构的层数,有助于提高数据处理速度及对矢量数据的调度效率。另外,本申请中的预设阈值优选为500,当然也可以为其他的具体数值,其具体取值可以根据实际情况进行确定,本申请对此不做特殊限定,能实现本发明实施例的目的即可。
作为一个具体的实施例,上述S15中按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点的过程,具体可以为:
S150:将所述初始层级的瓦片节点作为当前瓦片节点;
具体的,本申请按照数据结构中的先根遍历法从初始层级起开始遍历。在第一轮遍历过程中整个四叉树结构只有初始层级,所以在对初始层级对应的瓦片节点遍历后,对初始层级瓦片进行四等分划分,并根据划分后的各个子瓦片构建相应的瓦片节点,从而得到与初始层级的瓦片节点对应的各个孩子节点,然后在按照数据结构中的先根遍历树方法依次对四叉树结构中的各个瓦片节点进行遍历。
S151:判断当前瓦片节点是否在当前场景视景体内,如果是,则进入S152;否则,则当所述当前瓦片节点是初始层级的瓦片节点时进入S156,当所述当前瓦片节点不是初始层级的瓦片节点时进入S157;
需要说明的是,若当前瓦片节点不再当前场景视景体内,则,在当前瓦片节点是初始层级的瓦片节点(根节点)时,不删除该瓦片节点,也即根节点是不被删除的,进入S156对该瓦片节点进行四等分;在当前瓦片节点不是初始层级的瓦片节点时,将该瓦片节点删除,并删除其孩子节点。
S152:判断当前瓦片节点是否具有与其对应的孩子节点,如果是,则进入S153;否则,则进入S154;S153:将是瓦片节点的孩子节点作为当前瓦片节点,并返回S151;
具体的,在当前瓦片节点在当前场景视景体内、且当前瓦片节点具有孩子节点时,判断孩子节点是否为瓦片节点,如果该孩子节点是瓦片节点,则将该孩子节点作为当前瓦片节点,返回S151以对该当前的孩子节点进行遍历;当存在多个孩子节点为瓦片节点时,则逐个将孩子节点作为当前瓦片节点以对各个相应的孩子节点逐个进行遍历。
具体的,可以通过瓦片节点的类型或通过层级判断相应的孩子节点是否为瓦片节点,只有最后一层瓦片节点下面挂接的是绘制节点。
S154:计算当前瓦片节点的空间中心点和视点之间的距离,并判断距离是否在相应的显示距离范围内,如果是,则进入S155;
具体的,若当前瓦片节点没有孩子节点,则判断当前瓦片节点的空间中心点和视点之间的距离是否在相应的显示距离范围内,其中,当前瓦片节点的空间中心点可以直接从当前瓦片节点中读取出,当前瓦片节点的空间中心点是在构建当前瓦片节点时计算得到的,具体可以通过如上述S14中提供的构建初始瓦片节点的方法计算得到。
S155:判断当前瓦片节点的层级是否等于四叉树结构的层数与初始层级之和,如果是,则当前瓦片节点为目标瓦片节点;否则,进入S156;
具体的,若当前瓦片节点所归属的层级等于四叉树结构的层数与初始层级之和,则当前瓦片节点就是目标瓦片节点。否则,不是。
S156:对当前瓦片节点进行四等分以构建新的瓦片,并对新的瓦片构建相应的瓦片节点,将所构建的各个瓦片节点挂接至当前瓦片节点上,返回S150,进入下一轮遍历;
具体的,若当前瓦片节点不是目标瓦片节点,则对其进行四等分,以得到划分后形成的新的瓦片,并对新的瓦片构建相应的瓦片节点,再将新构建的瓦片节点挂接至当前瓦片节点上,以对四叉树结构的瓦片节点进行增加,构成新的四叉树结构,并返回S150中开始新一轮遍历。
S157:删除当前瓦片节点,以及删除当前瓦片节点的孩子节点,并将下一个瓦片节点作为当前瓦片节点,返回S151。
具体的,若当前的瓦片节点不在当前场景视景体内,则删除该当前瓦片节点,同时删除其孩子节点,并继续按照先根遍历树的方法对其他节点进行遍历,直至所有的节点遍历完毕。
需要说明的是,若当前瓦片节点是根节点,则不删除,也即本申请中的根节点是不被删除的。
还需要说明的是,本发明实施例可以不但可以实现对海量数据的调度,还可以实现对矢量数据的动态调度,减少内存消耗,实现海量矢量数据在三维场景中的动态调度。
作为一个具体的实施例,在依据请求到的每条矢量数据构建相应的绘制节点之后,还包括:
依据各个绘制节点对相应的矢量数据进行绘制显示。
需要说明的是,本发明实施例中在每次请求到矢量数据、并构建绘制节点偶,可以通过绘制线程对相应的各个绘制节点进行绘制显示,从而实现海量矢量数据在三维场景中的动态显示。
作为一个具体的实施例,在获取在地理坐标参考下矢量数据的矢量数据图层范围之前,方法还包括:
通过坐标参考转换将矢量数据从当前的坐标参考下转换至地理坐标参考下;地理坐标系为CGCS2000地理坐标系。
具体的,为了便于在三维场景中实现对矢量数据的调度,当矢量数据的当前坐标参考不是地里坐标参考,则获取矢量数据的坐标参考后,可以通过坐标参考转换将矢量数据转换到地理坐标参考下,具体可以转换到CGCS2000地里坐标参考下,从而得在地里坐标参考下的矢量数据的经纬度表示,进一步可以得到地理坐标参考下矢量数据的矢量数据图层范围。
在上述实施例的基础上,本发明实施例相应的提供了一种海量数据的动态调度与显示装置,具体请参见图6,该装置包括:
获取模块1,用于获取在地理坐标参考下矢量数据的矢量数据图层范围;
四叉树结构构建模块2,用于在全球范围中、依据矢量数据图层范围计算四叉树结构的初始层级;
确定模块3,用于获取四叉树结构的初始层级对应的初始层级范围,并依据初始层级范围及预设瓦片大小确定四叉树结构的层数;
瓦片节点构建模块4,用于初始化初始层级的瓦片节点;
调度模块5,用于按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;
绘制模块6,用于依据请求到的每条矢量数据构建相应的绘制节点,并将各个绘制节点挂接至目标瓦片节点上。
可选的,该装置还包括:
显示模块,用于依据各个绘制节点对相应的矢量数据进行绘制显示。
需要说明的是,本发明实施例中所提供的海量数据的动态调度与显示装置,在使用过中能够实现海量矢量数据在三维场景中的动态调度,从而避免在进行矢量数据调度时将所有的矢量数据加载至内存中,有效减小了内存中的数据量,有助于提供系统性能。
另外,对于本发明实施例中所涉及到的海量数据的动态调度与显示方法的具体介绍请参照上述方法实施例,本申请在此不再赘述。
在上述实施例的基础上,本发明实施例提供了一种海量数据的动态调度与显示设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述海量数据的动态调度与显示方法的步骤。
需要说明的是,本发明实施例具有与上述方法实施例所提供的海量数据的动态调度与显示方法相同的有益效果,并且对于本发明实施例中所涉及到的海量数据的动态调度与显示方法的具体介绍请参照上述方法实施例,本申请在此不再赘述。
在上述实施例的基础上,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述海量数据的动态调度与显示方法的步骤。
需要说明的是,本发明实施例具有与上述方法实施例所提供的海量数据的动态调度与显示方法相同的有益效果,并且对于本发明实施例中所涉及到的海量数据的动态调度与显示方法的具体介绍请参照上述方法实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种海量数据的动态调度与显示方法,其特征在于,包括:
S11:获取在地理坐标参考下矢量数据的矢量数据图层范围;
S12:在全球范围中、依据所述矢量数据图层范围计算四叉树结构的初始层级;
S13:获取所述四叉树结构的初始层级对应的初始层级范围,并依据所述初始层级范围及预设瓦片大小确定所述四叉树结构的层数;
S14:初始化所述初始层级的瓦片节点;
S15:按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与所述目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;所述预设条件依据所述四叉树结构的层数进行确定;
S16:依据请求到的每条所述矢量数据构建相应的绘制节点,并将各个所述绘制节点挂接至所述目标瓦片节点上。
2.根据权利要求1所述的海量数据的动态调度与显示方法,其特征在于,所述按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点的过程为:
S150:将所述初始层级的瓦片节点作为当前瓦片节点;
S151:判断所述当前瓦片节点是否在当前场景视景体内,如果是,则进入S152;否则,则当所述当前瓦片节点是初始层级的瓦片节点时进入S156,当所述当前瓦片节点不是初始层级的瓦片节点时进入S157;
S152:判断所述当前瓦片节点是否具有与其对应的孩子节点,如果是,则进入S153;否则,则进入S154;
S153:将是瓦片节点的孩子节点作为当前瓦片节点,并返回S151;
S154:计算所述当前瓦片节点的空间中心点和视点之间的距离,并判断所述距离是否在相应的显示距离范围内,如果是,则进入S155;
S155:判断所述当前瓦片节点的层级是否等于所述四叉树结构的层数与初始层级之和,如果是,则所述当前瓦片节点为目标瓦片节点;否则,进入S156;
S156:对所述当前瓦片节点进行四等分以构建新的瓦片,并对所述新的瓦片构建相应的瓦片节点,将所构建的各个瓦片节点挂接至所述当前瓦片节点上,返回S150,进入下一轮遍历;
S157:删除所述当前瓦片节点,以及删除所述当前瓦片节点的孩子节点,并将下一个瓦片节点作为当前瓦片节点,返回S151。
3.根据权利要求2所述的海量数据的动态调度与显示方法,其特征在于,所述在全球范围中、依据所述矢量数据图层范围计算所述四叉树结构的初始层级的过程为:
S120:将全球范围作为四叉树结构的根节点进行四叉树划分,每次划分得到的当前瓦片所在层数均相比上次划分得到的瓦片所在层数加一;
S121:若划分的当前瓦片完全包括所述矢量数据图层范围、且下一层对所述当前瓦片进行四叉树划分时切分所述矢量数据图层范围,则所述当前瓦片所在层数为所述四叉树结构的初始层级。
4.根据权利要求3所述的海量数据的动态调度与显示方法,其特征在于,所述依据所述初始层级范围及预设瓦片大小确定所述四叉树结构的层数的过程为:
S130:获取所述初始层级范围的左下角经纬度坐标,和所述初始层级范围的瓦片中心点的经纬度坐标;
S131:将所述左下角的经纬度坐标转换为直角坐标系下的左下角直角坐标;将所述瓦片中心点的经纬度坐标转换为直角坐标系下的瓦片中心点直角坐标;
S132:依据所述左下角直角坐标和所述瓦片中心点直角坐标计算所述初始层级的工作范围对应的空间半径;
S133:依据预设瓦片大小和所述空间半径确定所述四叉树结构的层数;所述预设瓦片大小为双精度型值大于预设阈值。
5.根据权利要求1-4任意一项所述的海量数据的动态调度与显示方法,其特征在于,在所述依据请求到的每条所述矢量数据构建相应的绘制节点之后,还包括:
依据各个所述绘制节点对相应的矢量数据进行绘制显示。
6.根据权利要求5所述的海量数据的动态调度与显示方法,其特征在于,在所述获取在地理坐标参考下矢量数据的矢量数据图层范围之前,所述方法还包括:
通过坐标参考转换将矢量数据从当前的坐标参考下转换至地理坐标参考下;所述地理坐标系为CGCS2000地理坐标系。
7.一种海量数据的动态调度与显示装置,其特征在于,包括:
获取模块,用于获取在地理坐标参考下矢量数据的矢量数据图层范围;
四叉树结构构建模块,用于在全球范围中、依据所述矢量数据图层范围计算四叉树结构的初始层级;
确定模块,用于获取所述四叉树结构的初始层级对应的初始层级范围,并依据所述初始层级范围及预设瓦片大小确定所述四叉树结构的层数;
瓦片节点构建模块,用于初始化所述初始层级的瓦片节点;
调度模块,用于按照预设规则对所述初始层级的瓦片节点进行处理,确定出满足预设条件的目标瓦片节点,并请求与所述目标瓦片节点的瓦片范围相交的矢量数据,以进行数据调度;所述预设条件依据所述四叉树结构的层数进行确定;
绘制模块,用于依据请求到的每条所述矢量数据构建相应的绘制节点,并将各个所述绘制节点挂接至所述目标瓦片节点上。
8.根据权利要求7所述的海量数据的动态调度与显示装置,其特征在于,所述装置还包括:
显示模块,用于依据各个所述绘制节点对相应的矢量数据进行绘制显示。
9.一种海量数据的动态调度与显示设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任意一项所述海量数据的动态调度与显示方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述海量数据的动态调度与显示方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810185578.7A CN108363808B (zh) | 2018-03-07 | 2018-03-07 | 海量数据的动态调度与显示方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810185578.7A CN108363808B (zh) | 2018-03-07 | 2018-03-07 | 海量数据的动态调度与显示方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108363808A true CN108363808A (zh) | 2018-08-03 |
CN108363808B CN108363808B (zh) | 2020-08-11 |
Family
ID=63003750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810185578.7A Active CN108363808B (zh) | 2018-03-07 | 2018-03-07 | 海量数据的动态调度与显示方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108363808B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109461212A (zh) * | 2018-11-13 | 2019-03-12 | 浙江科澜信息技术有限公司 | 一种三维场景刷新方法、装置、设备及可读存储介质 |
CN111090716A (zh) * | 2019-12-31 | 2020-05-01 | 方正国际软件(北京)有限公司 | 矢量瓦片数据处理方法、装置、设备和存储介质 |
CN112395445A (zh) * | 2020-11-17 | 2021-02-23 | 高崟 | 矢量数据在线计算方法和装置 |
CN117827915A (zh) * | 2024-03-01 | 2024-04-05 | 昆明麦普空间科技有限公司 | 一种快速矢量切片系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744855A (zh) * | 2013-11-29 | 2014-04-23 | 航天恒星科技有限公司 | 一种基于聚合文件的瓦片地图存储方法 |
CN103744998A (zh) * | 2014-01-23 | 2014-04-23 | 中国人民解放军国防科学技术大学 | 一种大规模空间矢量数据层次划分存储组织方法 |
CN106204719A (zh) * | 2016-06-30 | 2016-12-07 | 西安电子科技大学 | 基于二维邻域检索的三维场景中海量模型实时调度方法 |
CN107730583A (zh) * | 2017-10-26 | 2018-02-23 | 浙江科澜信息技术有限公司 | 一种基于三维场景的地形瓦片数据动态调度方法及装置 |
-
2018
- 2018-03-07 CN CN201810185578.7A patent/CN108363808B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744855A (zh) * | 2013-11-29 | 2014-04-23 | 航天恒星科技有限公司 | 一种基于聚合文件的瓦片地图存储方法 |
CN103744998A (zh) * | 2014-01-23 | 2014-04-23 | 中国人民解放军国防科学技术大学 | 一种大规模空间矢量数据层次划分存储组织方法 |
CN106204719A (zh) * | 2016-06-30 | 2016-12-07 | 西安电子科技大学 | 基于二维邻域检索的三维场景中海量模型实时调度方法 |
CN107730583A (zh) * | 2017-10-26 | 2018-02-23 | 浙江科澜信息技术有限公司 | 一种基于三维场景的地形瓦片数据动态调度方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109461212A (zh) * | 2018-11-13 | 2019-03-12 | 浙江科澜信息技术有限公司 | 一种三维场景刷新方法、装置、设备及可读存储介质 |
CN111090716A (zh) * | 2019-12-31 | 2020-05-01 | 方正国际软件(北京)有限公司 | 矢量瓦片数据处理方法、装置、设备和存储介质 |
CN111090716B (zh) * | 2019-12-31 | 2023-05-05 | 方正国际软件(北京)有限公司 | 矢量瓦片数据处理方法、装置、设备和存储介质 |
CN112395445A (zh) * | 2020-11-17 | 2021-02-23 | 高崟 | 矢量数据在线计算方法和装置 |
CN117827915A (zh) * | 2024-03-01 | 2024-04-05 | 昆明麦普空间科技有限公司 | 一种快速矢量切片系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108363808B (zh) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108363808A (zh) | 海量数据的动态调度与显示方法、装置、设备及存储介质 | |
CN105869202B (zh) | 电子地图的数字地面模型数据生成方法和装置 | |
CN105509743B (zh) | 定位处理方法、业务平台和网络系统 | |
CN108846882B (zh) | 一种确定点与围栏关系的方法、装置和电子设备 | |
CN102109353B (zh) | 一种实现三维导航的方法和装置 | |
CN109883423A (zh) | 基于卡尔曼滤波的定位方法、系统、设备及存储介质 | |
CN105654552B (zh) | 一种面向任意分布大规模点云数据的快速Delaunay构网方法 | |
CN101702245B (zh) | 一种可扩展通用三维地景仿真系统 | |
AU2020403654B2 (en) | Region division with cell merging using spanning tree | |
CN109815419B (zh) | 基于地理位置的兴趣点索引方法、装置、介质及电子设备 | |
CN101363734A (zh) | 地图数据的分块下载方法及地图数据的分块下载装置 | |
CN106156138A (zh) | 兴趣点的空间索引的建立、周边搜索方法和装置 | |
WO2022127258A1 (zh) | 基于游戏场景的寻路方法及装置、设备、介质 | |
CN106708837B (zh) | 兴趣点搜索方法、装置 | |
CN110478898B (zh) | 游戏中虚拟场景的配置方法及装置、存储介质及电子设备 | |
CN103596263A (zh) | 一种室内定位中获取位置的方法及装置 | |
CN111090716A (zh) | 矢量瓦片数据处理方法、装置、设备和存储介质 | |
CN108268516A (zh) | 基于八叉树的云端地图地图更新方法及设备 | |
CN103257876A (zh) | C3游戏地图动态加载的方法 | |
CN107506485B (zh) | 一种基于gis的离散站点分级显示的方法及装置 | |
CN110427583B (zh) | 应用于移动端地图海量线抽稀绘制的方法 | |
US20230310984A1 (en) | Player density based region division for regional chat | |
CN116026341B (zh) | 多无人机均衡路径规划方法及装置 | |
CN108270816A (zh) | 云端地图更新设备 | |
CN115830207A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |