中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
多模态信息融合

一种船舶历史活动热力图实时生成策略

  • 梁晶晶 ,
  • 魏乾
展开
  • 中国人民解放军91001部队, 北京 100036

梁晶晶(1982—),男,高级工程师,研究方向为指挥信息系统。

魏 乾(1974—),男,正高级工程师。

Copy editor: 张培培

收稿日期: 2023-04-18

  修回日期: 2023-05-09

  网络出版日期: 2024-02-21

A real-time generating strategy for ship historical activity heat map

  • LIANG Jingjing ,
  • WEI Qian
Expand
  • Unit 91001 of PLA, Beijing 100036, China

Received date: 2023-04-18

  Revised date: 2023-05-09

  Online published: 2024-02-21

摘要

在船舶信息大数据系统中,针对在客户端向服务器请求大批量历史数据并实时绘制热力图时,会出现耗时较长、热力图效果失真以及地图软件漫游时跟随性差或卡顿等问题,提出一种改进的船舶历史活动热力图实时生成策略。该策略在基于像素聚类思想的热力图生成方法基础上,采用基于非线性变换的图像增强算法和像素补点方法,对传统方法绘制的热力图所存在的显示失真问题进行校正和优化,并在此基础上,提出动态加载与绘制策略和多线程实时成图策略,来生成船舶历史活动的热力图。试验表明,所提出策略在热力图绘制的效率、成图效果以及地图软件的交互体验上都得到了提升。

本文引用格式

梁晶晶 , 魏乾 . 一种船舶历史活动热力图实时生成策略[J]. 指挥控制与仿真, 2024 , 46(1) : 64 -70 . DOI: 10.3969/j.issn.1673-3819.2024.01.008

Abstract

In the ship information big data system, aiming at the problems such as long time consuming, distortion of thermal map effect and poor tracking or lag in the roaming of map software when the client requests a large amount of historical data from the server and draws heat map in real time, this paper proposes an improved real-time generation strategy of map map of ship history activity. Based on the thermal map generation method with the idea of pixel clustering, this strategy uses the image enhancement algorithm based on nonlinear transformation and pixel complement method to correct and optimize the display distortion problems existing in the head map. On this basis, the dynamic loading and drawing strategy and multi-thread real-time mapping strategy are proposed to generate the heat map of the ship’s historical activities. Experiments show that the strategy proposed in this paper has been improved in the efficiency of heat map drawing, mapping effect and interactive experience of map software.

近年来,海上船舶数量不断增加,大数据技术也逐渐得到了普及应用。大数据系统中积累的海量船舶历史航迹数据,需要借助一些特殊的数据可视化方法进行表达以方便普通用户进行规律分析等[1]。在诸多可视化方法中,热力图(Heatmap,也称热图)是一种用来表达一定区域内大量数据点的某种特征的空间态势及分布状况的方法,即用热图点的位置来对应地理位置,通过该点的特征值表达地理对象某要素、特征或属性,并作线性拉伸,在对应的地理空间位置上表达出第三维数值的大小变化特征[2]。第三维数值可表示某种属性、特征,也可直接用于反映数据点密度,这正符合船舶历史活动特征表达的需求。
国内外已经有很多关于热力图的研究和应用。孔立斌基于热力图研究了车辆目标检测方法和加权特征融合方法[3];赵婷等通过热力图可视化,结合地理标签数据研究了全球地震带的变迁过程[4];常春慧基于百度热力图, 提取受灾人口动态时空分布特征信息,获取不同时刻人口的数量动态数据,解决了传统人口普查无法反映动态人口数量和空间分布的难题[5];张俊涛等设计了一种基于Web技术的网络热力图API[6]; 丁文浩基于WebGIS以热力图直观地展现了小麦赤霉病预测的发病地区和等级[7];SC A ̆UNAŞ S通过热力图展示建筑空间的密度情况以评估建筑分布情况[8];聂俊岚引入四叉树结构优化热力图以提高热图生成效率[9];杨振凯提出一种基于像素的绘制热力图算法,解决了百万级数据成图时绘制效率低的问题[10]。可见热力图已经成为数据特征可视化的重要手段。
尽管关于热力图的研究有很多,但大多没有提及大数据实时绘制时检索数据加载的耗时问题;同时,为应对不同数量级的任意范围或比例尺的地图软件交互操作(漫游或缩放等)的不同情况,必须采用实时绘制的方法,而受数据源分布情况和数据量影响,常规的实时绘制方法存在一些图像失真、渐变层次不明显以及地图操作时热图跟随性差等缺陷。由此,本文提出一种改进的热力图实时生成策略,对大批量船舶历史航迹进行可视化过程优化,使热力图生成效率、成图效果和地图软件交互体验得到提升。

1 基于像素聚类的热力图生成流程

通常,基于像素的热力图绘制会采用格网聚类的思想[11]对数据进行简化。绘制热力图的格网聚类方法是以像素点区域为栅格单元,将落入画布中同一像素栅格内的所有原始点对象定义为一个像素点对象。输入点对象的分布很难达到绝对均匀,通常是按照一定的地域聚合分布,以像素为单元进行格网聚类处理,并以聚类形成的像素点对象为输入,进行灰度值的叠加计算。在不同量级的数据上,既能够使整体计算量有效减少,又可以使原始数据的精度得到较大限度地保留。
采用格网聚类思想的像素热力图生成流程如图1所示。
图1 基于像素聚类的热力图生成流程

Fig.1 Heat map generation process based on pixel clustering

1)请求数据:船舶航迹数据采用HBase作为数据库进行高效存取[12]。通过服务化的形式,提供POST/GET查询接口以供客户端请求满足条件的目标历史航迹点集合。
2)地理映射:地理映射是根据当前地图软件画布所在的地理位置,将船舶航迹数据集的点根据地理坐标一一映射到屏幕画布中,形成地理到屏幕画布的坐标映射函数World2Canvas(double &x, double &y),满足如下映射条件:
$ \begin{array}{l} X=G_{w}\left(x-x_{\text {min }}\right) /\left(x_{\text {max }}-x_{\text {min }}\right)+X_{0} \\ Y=G_{h}\left(y_{\text {max }}-y\right) /\left(y_{\text {max }}-y_{\text {min }}\right)+Y_{0} \end{array}$
其中,XY为航迹点映射到屏幕画布中的坐标;GwGh为当前画布的宽度和高度,通常是当前屏幕分辨率的宽、高;xy为航迹点在地理坐标系下的经、纬度坐标;xmaxxminymaxymin分别为当前画布区域在地理坐标系的最大经度、最小经度、最大纬度和最小纬度值;X0Y0为画布左上角在屏幕坐标系下的屏幕坐标,在通常情况下,画布左上角坐标为屏幕坐标系原点(0,0),屏幕坐标系规定沿屏幕向右为X轴正方向,沿屏幕向下为Y轴正方向。
3)像素格网聚类:即记录落入每个像素栅格单元的原始数据量,航迹点集的热力图可以看成是对点迹密度的表达,因此,像素点对象对应密度特征的计算公式为
$ \begin{array}{l} v[i]=\sum_{n=1}^{N} c_{n} \\ c_{n}=\left\{\begin{array}{l} 1,(X, Y)=\left(X_{i}, Y_{i}\right) \\ 0,(X, Y) \neq\left(X_{i}, Y_{i}\right) \end{array}\right. \end{array}$
式中,v是一个大小为Gw×Gh的容器,v(i)表示第i个像素点对象的特征值,在航迹热力图计算时,表示该像素点对应的原始点迹密度特征,即落入该像素单元的原始点数量。N为所有的航迹点数,(X,Y)为经过地理映射后的像素点对象(即栅格单元)的坐标,(Xi,Yi)表示第i个像素点对象坐标,cn为一个二进制变量,当映射点落入该像素点时值为1,否则为0。
同时记录密度特征的最大值vmax和最小值vmin
格网聚类同时可以将地理映射后不在当前画布范围的航迹剔除,进一步提高后续的绘制效率。
4)像素中心灰度值计算:这是对每个像素点对象中心点的灰度值计算,即影响因子计算,如式(3)所示,可以表示像素点对周围像素的影响程度,值越大,影响力越大。
V=255(v-vmin)/(vmax-vmin)
式中,V为像素对象中心点灰度值(影响力值),取值范围为0~255,它也是一个大小为Gw×Gh的容器;vvmaxvmin分别表示该像素点对应的密度特征值、密度特征最大值和最小值。
5)创建缓冲区:即生成灰度圆。通常以像素点为中心,输入指定渲染半径r,根据该像素点的中心灰度值绘制一个透明度径向向外、线性衰减的圆。当然,缓冲区创建仅代表抽象意义,无须在实际的软件画布中将灰度圆绘制出来。
6)灰度叠加:实际实现时,是靠透明度alpha通道叠加达到目的。可以创建虚拟画布来绘制灰度圆,实现各灰度圆透明度值的叠加[13]
7)色彩映射:定义一个渐变色调色板,像素尺寸为256×1;从0~255渐次填充“蓝-绿-红”,也可在三原色的间隔位置填充中间色,如青色、黄色等。适当调整各色在调色板中所占比例。将叠加得到的最终灰度值(alpha)映射到调色板0~255的位置,即可将虚拟灰度图色彩化。同时将灰度值作为像素着色时的透明度通道,设置透明度阈值(阈值设为150,alpha高于阈值时均以阈值为透明度)。将色彩化的栅格图层结果生成到画布上,与地图底图叠加显示,即热力图绘制完成。

2 热力图失真校正

通过上述热力图实时生成方法,船舶历史航迹在经过地理映射和格网聚类后,通常会出现多个航迹点映射到同一像素点的情况。尽管这样可以减少绘制的计算量,提高热力图的生成效率,但在实际渲染过程中,特别是在地图软件小比例尺且原始航迹数据量较大或者数据量大且比较集中于某块区域时,聚类后不同像素点的数据密度特征值会有较大差距,导致生成的热力图与实际数据源分布不符,不能绘制出密度特征值较低的区域,即不能准确表达历史航迹点的区域分布特征,可视化效果不够理想。

2.1 图像增强

为了解决像素点间密度特征过于悬殊时,原来的线性像素中心灰度值计算方法得到的结果差异过大使低密度值的像素点无法显示出来的问题,本文采用基于反正切函数变换的对比度扩展方法来实现图像增强[14]。如图2所示,根据我国东部和东南沿海2022年某一周内部分民船的AIS历史航迹所绘制的热力图,上海附近海域航迹点密度相对其他区域高很多,因此,附近其他区域的船舶活动很难在热力图中有所表现(为方便对热图颜色作区分,本文成图时均隐去了地图底图)。
图2 图像增强前效果图

Fig.2 The effect image before image enhancement processing

分析图2可知,密度分布过于集中在低值区,同时高值过高,因此,需要在图像像素中心灰度值较低区域进行拉伸,在图像像素中心灰度值较高区域进行压缩。根据图像像元亮度变换原理,反正切图像如图3所示,因为它刚好满足低值拉伸、高值压缩的需求,且具有最值,所以,选择反正切变换函数来计算灰度中心值。结合像素点密度特征值分布情况,计算灰度中心值如下:
V= 510 π·arctan(v)
其中,v表示该像素点对象对应的密度特征值,取值范围为[0,+∞)。
图3 反正切函数图像

Fig.3 Image of arctangent function

通过反正切变换实现的图像增强效果如图4所示,可以观察到低密度特征的像素点也可以绘制出来,能够更好地反映当时该类船舶的活动情况。
图4 图像增强后效果图

Fig.4 The effect image after image enhancement processing

2.2 像素补点

尽管上述优化处理能够避免像素密度特征值悬殊较大时导致的不准确绘制情况,但当数据量大且过于集中在某块区域,即高密度特征的像素点对象较多且集中时,仍然容易使热力图出现一些红色过于集中、缺少层次感的热图区域,整体效果过热而缺少渐变色调的过渡,效果不理想,如图5a)所示。
图5 补点绘制效果对比

Fig.5 Comparison of the drawing effect of complement points

因此,本文提出像素补点方法,来优化数据集中的像素区域显示效果。具体方法如下:
1)创建像素密度特征容器副本:通常的热力图生成流程里,软件画布所有像素点对象对应密度特征用容器v(大小为Gw×Gh,下文称其为原始密度特征容器)记录,此时,我们再创建一个同样大小的容器副本,记为vcopy
2)创建方向数组:用于搜索像素点的上下左右像素位置,获取原始密度特征v[i]。方向数组定义如式(5):
d x [ 4 ] = { 1 , - 1,0 , 0 } d y [ 4 ] = { 0,0 , 1 , - 1 }
用当前像素位置叠加dxdy的方向数组值,其中,索引0~3的值分别对应当前像素位置的右、左、下、上方向的邻居像素点。
3)遍历原始像素密度特征容器:对于整块画布,遍历画布的每一个像素(即原始密度特征容器v),如果遇到像素点的原始密度特征值为0,同时其上下左右的邻居像素点至少有1个特征值不为0的邻居个数小于3,同时邻居最小非零特性值大于10,则以1作为该点的特征值副本参数,存入容器副本中。
4)按照上述图像增强原理,计算像素中心灰度,后续步骤如前。
图5b)即为同一组数据在相同比例尺下先进行像素补点然后成图的效果。总体上,不影响对原始数据特征的表达,但层次渐变效果更明显。

3 改进的绘制策略

由于船舶历史活动热力图常常用来展现较长时间和较大范围区域的船舶活动情况,因此,需要加载的数据量达几十万或者上百万条。不仅仅是绘制,符合条件的航迹查询和解析也需要一定的时间,这就需要以更高的数据下载、绘制效率和更人性化的设计来使用户有更好的体验,避免长时间加载或绘制所造成的等待,同时避免地图软件热图跟随度差和卡顿。

3.1 动态加载与绘制策略

为避免获取大批量航迹生成热力图时,后台航迹查询服务负载过大、加载时间长或绘制等待时间久等问题,本文提出基于分批循环加载航迹和边加载边绘制的动态加载与绘制策略。
分批循环加载航迹:客户端基于Qt(C++)的QtNetwork模块(QNetworkRequest、QNetworkReply以及QNetworkAccessManager)根据用户检索条件向后台请求航迹数据。因为QtNetwork是异步请求数据,所以,它请求数据时不会造成地图软件操作界面卡顿。但是,过多的点迹信息请求一定会造成后台查询服务负载过大,并且需要一定时间的等待。因此,进行分批循环加载。具体实现方式如下:客户端首先请求满足条件的点迹总量,在客户端设置每次加载点迹上限,默认5万点,即每次最多请求5万点,数据返回客户端并解析完成后继续请求,直到所有满足条件的点迹数据全部加载到客户端并解析完成为止。循环加载要设置标志位,方便用户随时停止加载,跳出循环。
边加载边绘制:为避免请求历史航迹时等待时间长,每加载并解析完成一批点迹数据集,就进行绘制,然后逐批数据累加。边加载边绘制可以有效避免长时间无反馈,让用户体会到热力图正在生成,使大批量航迹热力图绘制变成一个动态过程。

3.2 多线程成图和定时器刷新策略

本文基于Qt的QPainter进行客户端的热图绘制。因为要进行大量航迹点的地理映射、像素聚类、像素补点和中心灰度值计算等耗时工作,所以,使用QPainter直接绘制大量像素点的效率不如直接绘制QImage图片更高。同时,我们在查看热力图时免不了对地图进行缩放和漫游等操作,这些操作都会导致热图计算和重绘。因此,本文提出多线程的绘制策略来进一步提高热力图绘制效率,避免频繁重绘引起的主界面卡顿。子线程基于QThread创建,其绘制具体实现过程如下:
1)设置绘制触发条件,包括地图操作、定时刷新、画布调整等。
2)设置主线程绘制阈值MAX_DRAW_COUNT,本文定位阈值为1万原始点,即1万点以下的热图绘制在主线程进行,超过阈值且满足重绘条件时,即创建并启动子线程。
3)在主线程创建热图图片指针变量和定时器。热图图片指针变量在主线程使用drawImage方法绘制,热图图片初始尺寸和当前软件画布相同,并在交互操作的刷新绘制时不断计算或调整图片位置和大小;定时器用来定时获取子线程生成的图片,并在子线程生成完成时重新以画布尺寸和位置来更新主线程的图片指针变量。
4)建立子线程绘制完成信号槽的连接,更新主线程中子线程图片生成标志位。
5)主线程QPainter直接在软件画布图层上绘制3)的图片,并不断计算或调整图片位置和大小。
6)停止显示热力图时,销毁子线程,释放内存,并清空图片指针数据。

4 试验分析

4.1 改进的热力图生成流程

在基于像素聚类的热力图绘制流程中,加入热图校正过程和改进的热图绘制策略,完成一次绘制的完整流程如图6所示。
图6 改进的绘制策略流程图

Fig.6 Flow chart of the improved drawing strategy

4.2 改进策略的试验结果

虽然无论多少量级的原始航迹数据,经过像素格网聚类后的像素总点数都是Gw×Gh个,但是遍历所有原始点进行地理映射以及遍历所有像素点进行补点优化并计算中心灰度值等,都会降低生成热图的效率。根据操作经验,此时若进行地图操作,很容易卡顿。因此,大批量绘制时采用多线程成图策略,主线程不再参与耗时计算,只执行图片绘制,避免了卡顿。定时器保证了图片重绘未完成时,主线程根据地图操作将上一次图片进行调整显示,避免了热图跟随度差的体验。
下面分别选取2022年底南海附近民船历史航迹50万点和100万点来绘制热力图,加载数据并进行传统和改进方法绘制的平均总耗时情况如表1所示,试验绘制次数均为10次。
表1 加载历史航迹并生成热力图的平均总耗时对比表

Tab.1 Comparison table of average total time spent loading historical track and generating heat map

原始航迹点
数量/个
试验次数/
传统绘制/
s
改进绘制/s
开始绘制 绘制完成
500 000 10 6.847 0.472 4.604
1 000 000 10 14.910 0.513 9.978
表1可知,改进的绘制策略在数据加载、计算与绘制的总耗时相对要少很多,数据在刚开始加载时即开始绘制,使交互体验更好。改进策略生成的热力图效果如图7图8所示。
图7 50万航迹点热力图

Fig.7 Tracks heat map of 500 000

图8 100万航迹点热力图

Fig.8 Tracks heat map of 1 000 000

5 结束语

热力图能够很好地反映船舶历史活动热点区域,是研究船舶活动规律的重要可视化方法之一。本文根据格网聚类思想,总结了传统的基于像素聚类的热力图绘制流程,结合非线性变换图像增强原理和补点优化思路进行了热力图失真校正,并优化交互体验,提出了一种改进的船舶历史活动热力图实时生成策略。试验证明,在生成大批量船舶历史航迹的热力图时,该策略能够更高效地生成热图,并且成图效果和交互体验更好。
[1]
金梁. 基于AIS数据的船舶行为可视分析研究[D]. 武汉: 武汉理工大学, 2016.

JIN L. Research on visual analysis of ship behavior based on AIS data[D]. Wuhan: Wuhan University of Technology, 2016.

[2]
杨微, 刘纪平, 王勇. 基于Heatmap的地理对象空间分布热度计算方法[J]. 测绘通报, 2012(S1): 391-393, 398.

YANG W, LIU J P, WANG Y. Calculation method of spatial distribution heat of geographical objects based on heatmap[J]. Bulletin of Surveying and Mapping, 2012(S1): 391-393, 398.

[3]
孔立斌. 基于热力图与加权特征的车辆目标检测算法的研究[D]. 广州: 广东工业大学, 2021.

KONG L B. Research on vehicle object detection algorithm based on heat map and weighted feature[D]. Guangzhou: Guangdong University of Technology, 2021.

[4]
赵婷, 华一新, 李响, 等. 一种基于Heat Map的地理标签数据可视化表达的研究[J]. 测绘工程, 2016, 25(6): 28-32.

ZHAO T, HUA Y X, LI X, et al. Research on heat map visualization of geotagged data[J]. Engineering of Surveying and Mapping, 2016, 25(6): 28-32.

[5]
常春慧. 基于百度热力图的城市洪灾应急物资需求估算与调度[D]. 武汉: 武汉理工大学, 2020.

CHANG C H. Demand estimation and dispatch of urban flood emergency materials based on Baidu heatmap[D]. Wuhan: Wuhan University of Technology, 2020.

[6]
张俊涛, 王蜜蜂, 李晓明, 等. 基于HTML 5的HeatMap Web专题地图研究[J]. 测绘与空间地理信息, 2012, 35(5): 214-215, 218.

ZHANG J T, WANG M F, LI X M, et al. The study of heatMap web thematic map based on HTML 5[J]. Geomatics & Spatial Information Technology, 2012, 35(5): 214-215, 218.

[7]
丁文浩, 刘心怡, 阳小牙, 等. 基于WebGIS的安徽省小麦赤霉病监测预警系统的构建[J]. 洛阳理工学院学报(自然科学版), 2021, 31(2): 59-63.

DING W H, LIU X Y, YANG X Y, et al. Construction of wheat scab monitoring and early warning system in Anhui Province based on WebGIS[J]. Journal of Luoyang Institute of Science and Technology(Natural Science Edition), 2021, 31(2): 59-63.

[8]
SCĂUNAŞ S, PĂUNESCU C, MERCIU G L. Spatial-temporal analysis of land cover and use changes using GIS tools. case study Băneasa neighborhood, Bucharest[J]. Journal of Applied Engineering Sciences, 2019, 9(2): 187-194.

DOI

[9]
聂俊岚, 辛姝悦, 张继凯, 等. 一种改进的地理交通信息热图可视化方法[J]. 四川大学学报(工程科学版), 2015, 47(4): 118-124.

NIE J L, XIN S Y, ZHANG J K, et al. An improved method of geographic traffic information based on heatmap visualization[J]. Journal of Sichuan University(Engineering Science Edition), 2015, 47(4): 118-124.

[10]
杨振凯, 李响, 杨飞. 一种面向百万级数据的热力图生成算法[J]. 测绘科学, 2018, 43(8): 85-89.

YANG Z K, LI X, YANG F. A thermal map generating algorithm for Mega level data[J]. Science of Surveying and Mapping, 2018, 43(8): 85-89.

[11]
秦昆. GIS空间分析理论与方法[M]. 2版. 武汉: 武汉大学出版社, 2010.

QIN K. Theories and methods of spatial analysis in GIS[M]. 2nd ed. Wuhan: Wuhan University Press, 2010.

[12]
张昊, 张健钦, 郭小刚, 等. 轨迹大数据云存储与热力图生成方法[J]. 测绘通报, 2021(10): 146-149.

DOI

ZHANG H, ZHANG J Q, GUO X G, et al. Cloud storage and heatmap generation method of trajectory big data[J]. Bulletin of Surveying and Mapping, 2021(10): 146-149.

DOI

[13]
郑海鹰, 李爱光, 郭黎. 地理空间图形学原理与方法[M]. 北京: 测绘出版社, 2014.

ZHENG H Y, LI A G, GUO L. Theory and methods of geo-spatial graphics[M]. Beijing: Sino Maps Press, 2014.

[14]
CRACKNELL A P, HAYES L. Introduction to remote sensing[M]. 2nd ed. Boca Raton, FL: CRC Press, 2007.

文章导航

/