热力图生成方法及装置
技术领域
本发明涉及数据可视化领域,具体涉及一种热力图生成方法及装置。
背景技术
随着智能规划和国土空间的应用领域的不断拓展,规划和国土数据已成为当前地理国情分析、智能规划和智慧城市构建的重要依据。规划数据和国土数据因其体量庞大、数据繁杂等特征,需要借助一些特殊的数据可视化方法进行表达,例如热力图(Heat Map)。
热力图是一种针对一定区域内大量数据点的某一特征的空间态势及分布状况的可视化表达方式,即用图中点的位置来对应地理对象的位置,通过该点的影响因子表示地理对象某要素、特征、属性的数值,并作线性拉伸,在对应的地理对象空间位置上表达出第三维数据值的大小变化特征的方法。目前,面向海量数据的热力图绘制技术主要有瓦片分层法和数据选择法两种,但这两种方法存在一定的缺陷。其中,瓦片分层法即采用Spark平台等方式对原始数据进行离线处理,生成特定层数的图像数据,在交互时只进行调用和拼接过程,这种方法的灵活性不足,无法良好的适应数据量的增减变化,其离线生成的图像数据的时效性无法得到保障。数据选择法可以通过选取部分数据点来缩减绘制的时间开销,但存在选择则必然导致信息的丢失,使整体信息不够完整,且所采用的具体的选择方法的合理性也难以保证。
发明内容
为了克服现有技术的不足,本发明提供一种热力图生成方法,所述方法包括:
确定当前屏幕范围,将所述当前屏幕范围与前一次确定的屏幕范围进行比对,判断屏幕范围是否发生变化;
若所述当前屏幕范围与所述前一次确定的屏幕范围不一致,则判定屏幕范围发生变化,根据所述当前屏幕范围生成热力图;
若所述当前屏幕范围与所述前一次确定的屏幕范围一致,则判定屏幕范围未发生变化,将根据所述前一次确定的屏幕范围生成的热力图作为所述当前屏幕范围的热力图。
进一步地,确定当前屏幕范围,包括:
获取当前屏幕可视区域的中心点坐标和当前屏幕可视区域的任意一对对角顶点坐标,通过所述对角顶点坐标确定当前屏幕范围的横坐标范围及纵坐标范围。
进一步地,将所述当前屏幕范围与前一次确定的屏幕范围进行比对,判断屏幕范围是否发生变化,包括:
将所述当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标进行比对;
将当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围分别进行比对;
若所述当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标一致,且当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围都一致,则判定屏幕范围未发生变化,否则,判定屏幕范围发生变化。
进一步地,根据所述当前屏幕范围生成热力图,包括:
获取当前屏幕范围内的点对象,对所述当前屏幕范围内的点对象按照像素位置进行聚类,得到当前屏幕范围内的像素点对象;
采用最近邻点插值法计算所述当前屏幕范围内的像素点对象的色彩权重;
根据所述色彩权重,采用webgl进行色彩渲染,生成热力图。
进一步地,根据所述色彩权重,采用webgl进行色彩渲染,生成热力图,包括:
将所述像素点对象的坐标传入顶点着色器,所述顶点着色器根据预设的转换变量对所述像素点对象的坐标进行空间坐标转换,生成图元,将生成的图元传入片元着色器;
所述片元着色器对所述图元进行光栅化,计算每个图元中的每个像素点的颜色值。
另一方面,本发明实施例还提供一种热力图生成装置,所述装置包括范围确定模块及热力图生成模块;
所述范围确定模块用于确定当前屏幕范围,将所述当前屏幕范围与前一次确定的屏幕范围进行比对,判断屏幕范围是否发生变化;
当所述范围确定模块判定所述当前屏幕范围与所述前一次确定的屏幕范围不一致,屏幕范围发生变化时,所述热力图生成模块用于根据所述当前屏幕范围生成热力图;
当所述范围确定模块判定所述当前屏幕范围与所述前一次确定的屏幕范围一致,屏幕范围未发生变化时,所述热力图生成模块还用于将根据所述前一次确定的屏幕范围生成的热力图作为所述当前屏幕范围的热力图。
本发明的有益效果为:
本发明针对现有技术中的缺陷,根据屏幕范围的实时变化渲染生成热力图,在2D图形可视化显示中,由于各类事件的操作,例如鼠标平移、缩放或滑动滚轮,可能导致屏幕范围发生变化,本发明在判断屏幕范围发生变化时根据当前屏幕范围内的点生成热力图,即对热力图进行实时渲染更新,能够提高热力图展示效果,同时,在当前屏幕范围无更新时直接调用前一次更新生成的热力图,节省系统资源,提高系统处理性能,这一灵活的处理方式可以很好的适应各种数据量情况下的热力图渲染生成过程,在保证热力图具有较高时效性的同时,也保证了热力图所表达信息的完整性及合理性。
附图说明
图1是本发明实施例提供的热力图生成方法的流程示意图;
图2是图1中步骤S1的子步骤流程示意图;
图3是图1中步骤S2的子步骤流程示意图;
图4是图1中步骤S4的子步骤流程示意图;
图5是图4中子步骤S33的子步骤流程示意图;
图6是本发明实施例提供的顶点着色器坐标转换过程示意图;
图7是本发明实施例提供的片元着色器渲染过程示意图;
图8是本发明实施例提供的热力图生成装置的功能模块示意图;
图9是本发明实施例提供的热力图生成设备的模块示意图。
图标:100-数据渲染装置;10-坐标获取模块;20-顶点着色器; 30-片元着色器;40-可视化模块;200-数据渲染设备;210-存储器; 220-处理器;230-显示器。
具体实施方式
以下结合实施方式并配合附图进行详细说明。
如图1所示,本发明提供一种热力图生成方法,包括步骤 S1~S4,具体如下。
S1,确定当前屏幕范围。
请参照图2,所述步骤S1包括以下子步骤。
S11,获取当前屏幕可视区域的中心点坐标和当前屏幕可视区域的任意一对对角顶点坐标;
S12,通过所述对角顶点坐标确定当前屏幕范围的横坐标范围及纵坐标范围。
在本实施例中,主要通过获取当前屏幕可视区域的中心点坐标以及屏幕可视区域的四个顶点坐标中的任意一对对角顶点坐标 (即,左上角坐标及右下角坐标,或右上角坐标及左下角坐标) 来确定当前屏幕的范围。其中,所述对角顶点坐标的横坐标范围构成所述当前屏幕范围的横坐标范围,所述对角顶点坐标的纵坐标范围构成当前屏幕范围的纵坐标差值。例如,当获取对角顶点(-100,100)及(100,-100),则所述当前屏幕的横坐标范围为x∈[-100,100],所述当前屏幕范围的纵坐标范围为y∈[-100,100]。
S2,将所述当前屏幕范围与前一次确定的屏幕范围进行比对,判断屏幕范围是否发生变化。
请参照图3,所述步骤S2包括以下子步骤。
S21,判断所述当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标是否一致;
若所述子步骤S21中,所述当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标一致,则转入子步骤 S22,否则执行子步骤S24。
S22,判断当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围是否均一致;
若所述子步骤S22中,当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围都一致,则执行子步骤S23,否则执行子步骤S24。
S23,判定屏幕范围未发生变化;
S24,判定屏幕范围发生变化。
即,当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标一致,且当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围都一致,满足上述两个条件的情况下,才判定屏幕范围未发生变化,否则即表明屏幕范围发生变化。
若所述步骤S2中执行子步骤S23,即判定屏幕范围未发生变化,则转入步骤S3;若所述步骤S2中执行子步骤S24,即判定屏幕范围发生变化,则转入步骤S4。
S3,根据所述当前屏幕范围生成热力图。
请参照图4,所述步骤S3包括以下子步骤。
S31,获取当前屏幕范围内的点对象,对所述当前屏幕范围内的点对象按照像素位置进行聚类,得到当前屏幕范围内的像素点对象;
S32,采用最近邻点插值法计算所述当前屏幕范围内的像素点对象的色彩权重;
S33,根据所述色彩权重,采用webgl进行色彩渲染,生成热力图。
在本实施例中,当获取到当前屏幕范围内的点对象,即点坐标之后,首先对所述当前屏幕范围内的点对象按照像素位置进行聚类。聚类分析是根据预设的聚类条件对原有数据进行有选择的信息提取而建立数据系统的方法。本发明实施例利用网格聚类思想,以当前屏幕范围的可视化区域的像素所占区域为分类边界,将落入可视化画布中同一像素位置的所有点对象归并为同一个像素点对象。由于输入点对象的分布可能不均匀,作为一种可选的实施方式,还可以按照一定地域聚合情况进行分布式划分,对划分出的区域内的点对象按照像素位置进行聚类。以像素位置进行点对象聚类的方式,既可以有效的减少后续处理过程中的计算量,同时较大限度地保留了原始点对象数据,提高了计算结果的精确度,面对不同的点对象数据量情况时均能保证点对象数据处理的灵活性。
在本实施例中,对聚类后得到的像素点对象采用最近邻插值法计算色彩权重。最近邻点插值法又称泰森多边形方法,其包含一个隐含假设条件是任一点P(x,y)的属性值都使用距它最近的位置点的属性值,即用每一个网格节点的最邻点值作为待测的节点值。本发明实施例中将屏幕可视区域划分为以像素为单位的网格,计算每个网格,即每个像素点对象的色彩权重,以此来为后续子步骤S33做准备。
请参照图5,所述子步骤S33包括以下子步骤。
S331,将所述像素点对象的坐标传入顶点着色器,所述顶点着色器根据预设的转换变量对所述像素点对象的坐标进行空间坐标转换,生成图元,将生成的图元传入片元着色器;
S332,所述片元着色器对所述图元进行光栅化,计算每个图元中的每个像素点的颜色值。
在本实施例中,采用webgl来对像素点对象的色彩进行渲染,这一过程主要分为两个部分,其一是图元装配,也即坐标转换,其二是基于前一部分的坐标转换结果绘制像素点,也即色彩渲染。
请参照图6,所述子步骤S331中,左侧为传入数据,例如传入9个坐标,则通过顶点着色器(Vertex Shader)将顶点进行坐标转换,每个顶点均调用一次顶点着色器程序段。本发明实施例还设置了一个用于表示顶点坐标转换到空间坐标的坐标值的特殊变量gl_position。
请参照图7,所述顶点着色器完成坐标转换后将生成的图元通过一个可变量属性(varying)传入片元着色器,所述片元着色器对传入的图元(例如图7所示的三角形)进行光栅化,对图元所对应的像素计算颜色并进行颜色赋值,即完成“模型上色”功能。
在本实施例中,作为一种可选的实施方式,在完成步骤S3后,返回步骤S1,再次执行步骤S1~S3,直到步骤S2中判定的执行步骤转入S4。
S4,将根据所述前一次确定的屏幕范围生成的热力图作为所述当前屏幕范围的热力图。
在本实施例中,若检测并判断出当前屏幕范围无变化,则无需计算新的热力图,直接将前一次确定屏幕范围生成的热力图作为当前屏幕范围的热力图,也即可视化热力图无变化。
请参照图8,本发明实施例还提供一种热力图生成装置100,可以理解的是,该热力图生成装置100各个功能模块的具体功能在上述方法实施例中已进行阐述,下面对该热力图生成装置100 的功能模块做简要描述。
所述热力图生成装置100包括范围确定模块10及热力图生成模块20:
所述范围确定模块10用于确定当前屏幕范围,将所述当前屏幕范围与前一次确定的屏幕范围进行比对,判断屏幕范围是否发生变化;
当所述范围确定模块判定所述当前屏幕范围与所述前一次确定的屏幕范围不一致,屏幕范围发生变化时,所述热力图生成模块用于根据所述当前屏幕范围生成热力图;
当所述范围确定模块判定所述当前屏幕范围与所述前一次确定的屏幕范围一致,屏幕范围未发生变化时,所述热力图生成模块还用于将根据所述前一次确定的屏幕范围生成的热力图作为所述当前屏幕范围的热力图。
在本实施例中,当确定当前屏幕范围时,所述范围确定模块 10具体用于:
获取当前屏幕可视区域的中心点坐标和当前屏幕可视区域的任意一对对角顶点坐标,通过所述对角顶点坐标确定当前屏幕范围的横坐标范围及纵坐标范围。
在本实施例中,当将所述当前屏幕范围与前一次确定的屏幕范围进行比对,判断屏幕范围是否发生变化时,所述范围确定模块10具体用于:
将所述当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标进行比对;及
将当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围分别进行比对;
若所述当前屏幕可视区域的中心点坐标与前一次确定的屏幕可视区域的中心点坐标一致,且当前屏幕范围的横坐标范围及纵坐标范围与前一次确定的屏幕范围的横坐标范围及纵坐标范围都一致,则判定屏幕范围未发生变化,否则,判定屏幕范围发生变化。
在本实施例中,当根据所述当前屏幕范围生成热力图时,所述热力图生成模块20具体用于:
获取当前屏幕范围内的点对象,对所述当前屏幕范围内的点对象按照像素位置进行聚类,得到当前屏幕范围内的像素点对象;
采用最近邻点插值法计算所述当前屏幕范围内的像素点对象的色彩权重;
根据所述色彩权重,采用webgl进行色彩渲染,生成热力图。
在本实施例中,当根据所述色彩权重,采用webgl进行色彩渲染,生成热力图时,所述热力图生成模块20具体用于:
将所述像素点对象的坐标传入顶点着色器,所述顶点着色器根据预设的转换变量对所述像素点对象的坐标进行空间坐标转换,生成图元,将生成的图元传入片元着色器;
所述片元着色器对所述图元进行光栅化,计算每个图元中的每个像素点的颜色值。
请参照图9,本发明实施例还提供一种用于执行以上所述热力图生成方法的各个步骤或用于实现以上所述热力图生成装置100 各个功能模块的热力图生成设备200,该热力图生成设备200包括存储器210、处理器220及显示器230。所述存储器210、处理器 220及显示器230各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。所述热力图生成装置100包括至少一个以软件或固件的形式存储于所述存储器210中的软件功能模块,所述处理器220用于执行所述存储器210中存储的可执行模块,例如所述热力图生成装置100所包括的软件功能模块或程序等。
其中,所述存储器210可以是,但不限于,随机存取存储器,只读存储器,可编程只读存储器等。所述处理器220可以是通用处理器,包括微处理器或任何常规处理器。所述显示器230可以是显像管显示器或液晶显示器,用于展示或显示以上实施例中生成的热力图。
本发明的有益效果为:本发明针对现有技术中的缺陷,根据屏幕范围的实时变化渲染生成热力图,在2D图形可视化显示中,由于各类事件的操作,例如鼠标平移、缩放或滑动滚轮,可能导致屏幕范围发生变化,本发明在判断屏幕范围发生变化时根据当前屏幕范围内的点生成热力图,即对热力图进行实时渲染更新,能够提高热力图展示效果,同时,在当前屏幕范围无更新时直接调用前一次更新生成的热力图,节省系统资源,提高系统处理性能,这一灵活的处理方式可以很好的适应各种数据量情况下的热力图渲染生成过程,在保证热力图具有较高时效性的同时,也保证了热力图所表达信息的完整性及合理性。
说明书中未阐述的部分均为现有技术或公知常识。本实施例仅用于说明该发明,而不用于限制本发明的范围,任何本领域的技术人员能思之的变化都应落入本申请的保护范围内。