发明内容
有鉴于此,本发明提供一种空间数据化简方法及装置,其具体方案如下:
一种空间数据化简方法,包括:
依据预先设定的视图控制参数,将原始空间数据的原始坐标变换得到视图窗口的视图坐标,所述原始空间数据的原始坐标点对应所述视图窗口坐标系下的视图坐标点;
在所述视图窗口下分析所述视图坐标点是否符合化简条件;
根据分析结果,化简符合所述化简条件的视图坐标点对应的原始坐标点;
所述在所述视图窗口下分析所述视图坐标点是否符合化简条件包括:
分析所述视图坐标点中是否有多个所述视图坐标对应于视图窗口下的同一像素,若是,则符合化简条件,若否,则不符合化简条件。
优选的,所述视图窗口利用数据结构依据所述视图控制参数进行表示,具体为:依据所述视图控制参数用所述栅格数据结构来表示所述视图窗口的像素,所述像素为所述视图窗口平面划分成的均匀网格单元,所述像素为所述栅格数据中的基本信息存储单元,所述像素的坐标位置依据所述像素在所述视图窗口中对应的行号和列号确定,设定表示所述像素的栅格数据的初始值全部为0。
优选的,所述在所述视图窗口下分析所述视图坐标点是否符合化简条件包括:
读取所述视图坐标点对应的所述视图窗口上的像素的像素值;
判断所述像素值是否为1,若为0,则所述视图坐标点不符合化简条件,若为1,则判断所述视图坐标点是否等于所述原始坐标点的前一个原始坐标点对应的视图坐标点,若等于,则所述视图坐标点符合化简条件,若不等于,则所述视图坐标点不符合化简条件。
优选的,还包括:
判断所述视图坐标点对应的原始坐标点是否为最后一个原始坐标点,若否,则选取下一原始坐标点,返回执行依据预先设定的视图控制参数,将原始空间数据的原始坐标变换得到视图窗口的视图坐标的步骤,若是,则结束。
优选的,还包括:
当所述视图坐标点不符合化简条件且对应的像素的像素值为0时,将所述像素赋值为1。
优选的,所述视图控制参数包括:视图模式和视图窗口的外包矩形参数;所述视图模式包括:二维模式和三维模式,所述视图窗口的外包矩形参数包括:视图窗口的外包矩形的宽度和视图窗口的外包矩形的高度;当所述视图模式为二维模式时,还包括:查询空间实体的矩形范围和空间实体在所述视图窗口中显示时的放大比例;
当所述视图模式为三维模式时,所述视图控制参数还包括:视点参数和投影参数,所述视点参数包括视点在世界坐标系中的位置、视点所观察的目标位置和虚拟照相机向上的向量;所述投影参数包括:正交投影和透视投影。
优选的,所述空间实体的放大比例按照以下步骤确定:
分别获取所述视图控制参数中视图窗口的外包矩形的宽度与所述查询空间实体的矩形宽度的比值,以及所述视图控制参数中视图窗口的外包矩形的高度与所述查询空间实体的矩形高度的比值;
确定所述比值中的较小值为所述空间实体在所述视图窗口中显示时的放大比例。
一种空间数据化简装置,包括:
坐标转换单元,用于依据预先设定的视图控制参数,将原始空间数据的原始坐标变换得到视图窗口的视图坐标,所述原始空间数据的原始坐标点对应视图窗口坐标系下的视图坐标点;
分析单元,用于在所述视图窗口下分析所述视图坐标点是否符合化简条件,所述在所述视图窗口下分析所述视图坐标点是否符合化简条件包括:分析所述视图窗口下的同一像素中是否有多个视图坐标点,若是符合化简条件,若否,不符合化简条件;
化简单元,用于根据分析结果,化简符合所述化简条件的视图坐标点对应的原始坐标点。
从上述的技术方案可以看出,本发明实施例公开的空间数据化简方法将原始空间数据的原始坐标点变换为利用数据结构依据视图控制参数表示的视图窗口的视图坐标点,以分析或处理视图坐标点所对应的所述视图窗口的像素来分析空间实体在实际进行显示的视图窗口上的显示情况,并以此为基础进行分析化简,以保证化简后的空间数据能够在实际的显示窗口中进行无损显示,并保证化简后的空间数据间的空间关系的正确显示。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了方便描述,本申请文件中将需要处理的空间数据称之为原始空间数据,需要处理的空间数据的坐标称之为原始空间数据的原始坐标,需要处理的空间数据的坐标点称之为原始空间数据的原始坐标点,或直接称之为原始坐标点。
本发明公开了一种空间数据化简方法,在空间数据的化简过程中,其对应的实际场景为,由于视图窗口的分辨率是有限的,当高分辨率的空间数据在视图窗口上显示时,会有表现空间数据细节部分的数据(坐标点)会绘制在相同的像素上,这时只要取绘制在此像素上的一个坐标点就可以保证矢量数据的无损显示了,其它绘制在此像素上满足化简条件的坐标点可以去掉,因此,按照上述思想,将原始空间数据的原始坐标变换得到视图窗口的视图坐标,原始空间数据的原始坐标点对应视图窗口坐标系下的视图坐标点,分析所述视图坐标点中对应于所述视图窗口上相同像素的视图坐标点,将符合化简条件的视图坐标点所对应的原始空间数据进行化简,将化简后的空间数据进行显示或者传输,不但能保证空间数据的无损显示,做到自适应化简,而且能保证空间数据之间空间关系显示的正确性,因为在显示效果上,化简前和化简后显示的效果是一样的,进一步的,提高了空间数据的传输效率和显示效率的目的。由于现有的空间数据化简方法中,对于矢量数据的化简存在较多问题,所以本发明实施例中以矢量数据为主,进行描述,其具体实现方式如下所述:
本发明公开的一种空间数据化简方法的流程如图1所示,包括:
步骤S11、依据预先设定的视图控制参数,将原始空间数据的原始坐标变换得到视图窗口的视图坐标,所述原始空间数据的原始坐标点对应所述视图窗口坐标系下的视图坐标点;
该步骤将原始空间数据的原始坐标点变换为依据视图控制参数,并利用数据结构表示的视图窗口的视图坐标点,以分析或处理视图坐标点所对应的所述视图窗口的像素来分析原始空间数据在实际进行显示的视图窗口上的显示情况,并以其为基础对原始空间数据进行化简,可以保证化简后的空间数据在实际的显示窗口中进行无损显示,保证化简后的空间数据间的空间关系的正确性。
预先设定的视图控制参数包括:视图模式和视图窗口的外包矩形参数;所述视图模式包括:二维模式和三维模式,所述视图窗口的外包矩形参数包括:视图窗口的外包矩形的宽度和视图窗口的外包矩形的高度。
针对于二维视图模式,视图控制参数还包括:空间实体在所述视图窗口下的中心坐标点和视图中空间实体的放大比例,或者查询空间实体的矩形范围和视图中空间实体的放大比例。其中空间实体在所述视图窗口下的中心坐标点或查询空间实体的矩形范围都可用来将相应的空间实体显示在视图窗口中。
查询空间实体的矩形范围是指将此范围内的空间实体显示在视图窗口中,也就是在视图窗口中能显示出来的空间实体的外包矩形,其具体的范围值根据实际的显示情况而设定。
视图中空间实体的放大比例表示空间实体在视图窗口中显示的大小,例如,如果将给定查询空间实体的矩形范围内的空间实体正好全屏显示在视图窗口中,则空间实体放大比例的计算方法是:分别获取所述视图控制参数中视图窗口的外包矩形的宽度与所述查询空间实体的矩形宽度的比值,以及所述视图控制参数中视图窗口的外包矩形的高度与所述查询空间实体的矩形高度的比值,确定所述比值中的较小值为所述视图中空间实体的放大比例。
为了保证化简前后矢量数据显示的效果是一样的,需要用实际显示的视图窗口中空间实体的放大比例给所述视图控制参数中空间实体在所述视图窗口中显示时的放大比例赋值,同时也可以通过调整空间实体的放大比例,来控制数据的压缩比,即化简掉的坐标点个数除以总的坐标点个数,空间实体的放大比例越小,数据的压缩比越大,但如果获得更大的压缩比,会有更多的表现图形细节的坐标点会被化简掉。
针对于三维视图模式,所述视图控制参数还包括:视点参数和投影参数,所述视点参数包括视点在世界坐标系中的位置、视点所观察的目标位置和虚拟照相机向上的向量;所述投影参数包括:正交投影和透视投影,或者是通过上述参数得到的视图矩阵和投影矩阵。
确定视图控制参数后,利用数据结构依据视图控制参数表示视图窗口。此处所述的表示视图窗口可以为实际可以进行显示的物理视图窗口,也可以是为了进行分析而生成的逻辑视图窗口环境。
当利用栅格数据结构来表示视图窗口时,用栅格数据来表示栅格图像,把显示视图窗口平面划分成均匀的网格,每个网格单元称为像素,栅格数据结构就是像素阵列,栅格中的每个像素是栅格数据中最基本的信息存储单元,其坐标位置可以用行号和列号确定。由于栅格数据是按一定规则排列的,所以表示的空间实体位置关系是隐含在行号、列号之中的。每个像素值用于代表空间实体的属性或属性的编码。
通过视图控制参数中的视图窗口的外包矩形参数可以得到用于表示视图窗口的栅格数据的大小。如用m个字节表示一个像素值,则表示视图窗口的栅格数据的大小为:(ViewWidth*ViewHeight*m)。并且将用于表示视图窗口的栅格数据的初始值赋值为0。
依据预先设定的视图控制参数,将接收的原始空间数据的原始坐标变换得到视图窗口坐标系下的视图坐标,原始空间数据的原始坐标点对应视图窗口坐标系下的视图坐标点,每个视图坐标点与用栅格数据依据视图控制参数所表示的视图窗口的像素相对应,通过分析原始空间数据的原始坐标点在所述视图窗口上显示时需要绘制的像素来分析该原始空间数据是否需要被化简。
步骤S12、分析所述视图坐标点是否符合化简条件;
通过分析变换到视图窗口下的视图坐标点,判断所述视图坐标点是否符合化简条件。该步骤具体为:分析所述视图坐标点中横坐标和纵坐标都相等的视图坐标点,判断所述视图坐标点是否符合化简条件,或者分析所述视图坐标点中对应于所述视图窗口上相同像素的视图坐标点,判断所述视图坐标点是否符合化简条件。
步骤S13、根据分析结果,化简所述符合化简条件的视图坐标点对应的原始坐标点。
本实施例公开的空间数据化简方法中,将原始空间数据的原始坐标点变换为依据视图控制参数利用数据结构表示的视图窗口的视图坐标点,以分析或处理视图坐标点所对应的所述视图窗口的像素来分析空间实体在实际进行显示的视图窗口上的显示情况,并以此为基础进行分析,以保证化简后的空间数据在实际的显示窗口中进行无损显示,并保证化简后的空间数据间的空间关系的正确显示。
本发明公开的又一空间数据化简方法的流程如图2所示,包括:
步骤S21、从原始空间数据的原始坐标点中选取当前待处理原始坐标点;
步骤S22、将当前待处理原始坐标点变换得到视图窗口坐标系下的视图坐标点;
步骤S23、读取所述视图坐标点对应的像素的像素值;
步骤S24、判断所述像素值是否为1,若是,则执行步骤S25,若否,则执行步骤S26b;
如果像素值等于0,说明此坐标点不符合化简条件,需要保留,如果等于1,则意味着其可以进行化简,但是需进行后续进一步的判断。
步骤S25、判断所述视图坐标点是否等于当前待处理原始坐标点的上一个原始坐标点对应的视图坐标点,若是,则执行步骤S26a,若否,则执行步骤S26b;
判断当前待处理原始坐标点与其上一个原始坐标点变换后的视图坐标点是否为同一坐标点,若为同一坐标点,则说明,在实际显示的视图窗口中,两点被画在同一个像素上,并且所述的两个坐标点之间不会再绘制其它的像素,所以可以将其中的一个进行化简,同时不会影响数据的显示效果。若不为同一坐标点,则说明当前待处理原始坐标点不能被化简,因为与当前待处理原始坐标点在所述视图窗口上对应的相同像素的其它原始坐标点和当前待处理原始坐标点之间在所述空间数据显示时需要绘制其它的像素,如果被化简,则当前待处理原始坐标点所在的空间数据在所述视图窗口中显示时空间关系就不能正确显示。
步骤S26a、所述视图坐标点符合化简条件;
步骤S26b、所述视图坐标点不符合化简条件;
当所述视图坐标点不符合化简条件且对应的像素的像素值为0时,将像素赋值为1,以标示已经有与所述像素对应的视图坐标点不符合化简条件而得到了保留,则以此来标识当前待处理原始坐标点对应的原始空间数据是被保留的数据。
步骤S27、根据所述分析结果,化简符合所述化简条件的视图坐标点对应的原始坐标点。
化简与符合化简条件的视图坐标点对应的原始坐标点,即化简当前待处理原始坐标点所代表的原始空间数据。
步骤S27和步骤S26b之后还包括:
步骤S28、判断所述当前待处理原始坐标点是否为所述原始空间数据的最后一个原始坐标点,若是,则结束,若否,则返回执行步骤S21。
通过上述循环步骤,实现将原始空间数据中的全部坐标点依次进行坐标变换后,进行分析,直到原始空间数据的原始坐标点被全部分析完。该步骤同样可以应用于上述图1所示流程中。
本实施例中对视图坐标点在所述视图窗口上进行显示时所需要绘制的像素进行相应的分析或处理,其具体操作包括:读取所述需要绘制的像素的像素值,判断像素值,和给所述需要绘制的像素赋值。上述操作可以以单个像素或者将多个像素进行组合后进行的处理,可以根据实际情况的需要,灵活的设定具体的处理方式。其针对像素的具体操作包括给像素赋值,即将空间数据进行栅格化、读取像素和对像素值进行判定,当像素以多个比特位数据来进行表示时,对像素的赋值可以表现为对一个像素整体赋值或者对表示像素的多个比特位数据中的任意一个或多个比特位进行赋值;读取像素的操作也可以表现为对一个像素的整体值进行读取和读取像素中某个或某几个比特位的值;同理,对像素值的判定也为对一个像素的整体值或某个或某几个比特位的值所代表的含义进行判定。
如用4个比特位数据表示视图窗口的一个像素,其中用第一个比特位表示是否有点空间实体在此像素上栅格化,第二个比特位表示是否有线空间实体在此像素上栅格化,第三个比特位是否有面空间实体在此像素上栅格化,第四个比特位用于空间矢量数据的化简。首先定义几个常量:
#define point 0x0001
#define line 0x0002
#define region 0x0004
#define simple 0x0008
例如,对线空间实体所对应的像素操作方法如下所示:
像素的赋值操作:用定义的常量line同像素值的或操作来对像素进行赋值,实现原始空间数据的栅格化。如给P(x,y)像素线栅格化操作,P(x,y)=P(x,y)|line;清除原始空间数据栅格化操作,用定义的常量line进行取反后同像素值的与操作来清除,如清除P(x,y)像素线栅格化操作,P(x,y)=P(x,y)&~line。
读取像素值:P(x,y)的栅格数据的值就是P(x,y)像素的值;
像素值判定操作:例如,判定像素是否被原始空间数据栅格化操作,用定义的常量line同像素值的与操作来判定。如判定P(x,y)像素是否被线栅格化操作,则判定P(x,y)&line的值是否大于0,如果大于0,则P(x,y)像素被线空间实体栅格化,如果等于0,则P(x,y)像素没有被线空间实体栅格化。
对于其它空间实体所对应的像素操作同样可以按照上述方法进行操作。
本实施例公开的空间数据化简方法中,利用像素值判断视图坐标点是否符合化简条件,再依据判别结果处理相应的视图坐标点及原始坐标点,该方法计算量小,并且保证了化简后的空间数据间的空间关系的正确性,减小了数据传输量,提高了数据传输效率和显示效率。
本发明公开的又一空间数据化简方法的流程如图3所示,该方法适用于空间数据的第一个原始坐标点和最后一个原始坐标点为同一点的情况,例如,首尾相连的线空间数据。其具体过程包括:
步骤S31、依据预先设定的视图控制参数,将原始空间数据的原始坐标变换得到视图窗口的视图坐标,所述原始空间数据的原始坐标点对应所述视图窗口坐标系下的视图坐标点;
步骤S32、读取所述视图坐标点对应的像素的像素值;
步骤S33、判断所述像素值是否为1,若是,则执行步骤S34,若否,则执行步骤S36b;
步骤S34、判断所述视图坐标点对应的原始坐标点是否为所述原始空间数据的最后一个原始坐标点,若是,则执行步骤S35a,若否,则执行步骤S35b;
步骤S35a、判断所述视图坐标点对应的原始坐标点是否等于所述原始空间数据的第一个原始坐标点,若是,则执行步骤S36b,若否,则执行步骤S35b;
通过该步骤判断当前处理的视图坐标点对应的原始坐标点是否与空间数据的第一个原始坐标点重合,如果重合,则该点不能被化简,如果不重合,则需进行后续判断。
步骤S35b、判断所述视图坐标点是否等于所述原始坐标点的上一个原始坐标点对应的视图坐标点,若是,则执行步骤S36a,若否,则执行步骤S36b;
步骤S36a、所述视图坐标点符合化简条件;
步骤S36b、所述视图坐标点不符合化简条件;
当所述视图坐标点不符合化简条件且对应的像素的像素值为0时,将像素赋值为1,以标示已经有与所述像素对应的坐标点不符合化简条件而得到了保留,则以此来标识所述原始坐标点对应的原始空间数据是被保留的数据。
步骤S37、根据所述分析结果,化简符合所述化简条件的视图坐标点对应的原始坐标点。
本步骤后同样也可增加上述实施例中循环执行的步骤。
本实施例并不限定空间数据的第一个原始坐标点和最后一个原始坐标点相同的空间数据在处理时都按照上述方法进行,其同样可以采用将空间数据的某个坐标点,如最后一个坐标点或者是空间数据中含有保持拓扑关系的关键坐标点等等作为特殊点,不将其进行化简处理,直接保留,只对剩余的坐标点按照上述图2所示的流程进行化简处理。
本发明同时公开了一种空间数据化简装置,其结构如图4所示,包括:坐标转换单元41、分析单元42和化简单元43,其中:坐标转换单元41用于依据预先设定的视图控制参数,将原始空间数据的原始坐标变换得到视图窗口的视图坐标,所述原始空间数据的原始坐标点对应所述视图窗口坐标系下的视图坐标点;分析单元42用于在所述视图窗口下分析所述视图坐标点是否符合化简条件;化简单元43用于根据分析结果,化简符合所述化简条件的视图坐标点对应的原始坐标点。
其中,各个单元的工作过程如下所述:
坐标转换单元依据当前利用数据结构表示的视图窗口的相关参数,如视图模式、视图窗口的外包矩形参数,如果是二维模式,则还包括:查询空间实体的矩形范围和视图中空间实体的放大比例,按照上述参数将原始空间数据的原始坐标点变换为依据上述参数进行表示的视图窗口下的二维视图坐标点,如果是三维模式,则还包括:视点参数和投影参数,所述视点参数包括视点在世界坐标系中的位置、视点所观察的目标位置和虚拟照相机向上的向量;所述投影参数包括:正交投影和透视投影,利用上述参数,将三维空间数据的原始坐标点变换为依据上述参数进行表示的视图窗口下的视图坐标点。分析单元在视图窗口下对视图坐标点进行分析,判断其是否符合化简条件,并将分析的结果传输给化简单元,化简单元依据化简结果,确定出哪一个视图坐标点对应的原始数据可以被化简,则将其化简,哪一个视图坐标点对应的原始数据不能被化简,则将其保留,从而保证化简后的原始空间数据能够在实际的视图窗口中进行无损显示,同时实现了降低数据传输量的目的。
本实施例公开的空间数据化简装置的执行过程为对应于上述本发明实施例所公开的方法实施例流程,为较佳的装置实施例,其具体执行过程可参见上述方法实施例,在此不再赘述。
本发明公开的空间数据化简装置可以设置在计算机内,也可以设置在其他可以使用本发明的设备内,或者是其他智能设备。其既可以设置在服务器端,在将客户端请求的数据发送之前,首先对空间数据进行化简处理,也可将其设置在客户端,在将其发送到实际的视图窗口前,将数据进行处理,或者同时设置在服务器和客户端,根据实际情况选择由哪一方或者双方共同进行处理。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。