如何洞悉城市人群移动规律?DataV海量轨迹可视化实践解析

轨迹数据和我们的生活息息相关:小到扫地机器人的室内清洁线路,大到跨省跨国跨洲的旅行,短到一次共享单车骑行,长到十年如一日的通信基站记录。对城市治理而言,挖掘人群和车辆的移动规律,能帮助决策者更好地规划城市交通、保障公共安全、响应突发事件,让城市变得更智能、更高效。

经典轨迹展现方式的局限

轨迹数据描述了时空维度中,移动对象的空间位置和属性随时间的变化。在这些移动对象(如人、车辆等)移动过程中,每隔一段时间,他们的位置及其他属性会通过所携带的设备(如手机、传感器等)被记录下来,形成了一个采样点数据。对于一个移动对象而言,多个采样点数据按时间顺序排列,构成了该对象轨迹数据。

然而,轨迹数据来源诸多(包括但不限于手机信令数据、车辆GPS数据、Wifi-嗅探数据、签到数据等)且时时刻刻有新数据产生,导致轨迹数据体量十分巨大,造成严重的视觉混淆和渲染压力。因此,我们借助可视分析技术,通过将轨迹数据转化流场数据,不仅保留轨迹数据的主要特征,同时大大降低数据体量,从而更好地洞察城市中人群的移动规律。

在使用可视分析技术对轨迹数据进行分析和挖掘时,一个很重要的任务是将轨迹可视化在交互界面上,为用户提供观察和探索的空间。对于轨迹数据的表达方法,在这个领域已经有了一定的研究,传统的方法有路径连接法和飞线法。其中,路径连接法将每个对象的轨迹数据中的采样点按照时间顺序进行连线,再使用其他的视觉通道,如颜色、宽度和线形等编码对象的其他属性。这种方法是最直观的轨迹展现形式,它能够清晰地展现移动对象途径的空间位置,DataV在“基础平面地图”和“3D地图”组件中“线热力层”子组件采用的就是这种可视化形式。

飞线法和路径连接法相似,不同之处在于,它通过动画的形式模拟移动对象的移动,一般情况,使用一个带有箭头的线段来编码移动对象,线段会按照时间顺序在采样点之间移动,这种方法能够更加清晰地反映移动对象的运动方向,并且具有较为炫酷的视觉效果,DataV各地图组件中的“飞线层”和“3D地图”组件中的“弧线层”、“轨迹层”、“路网轨迹层”都是这种可视化方法的实现,去年双十一惊艳亮相的“闪电图”中的闪电特效同样是采用飞线法实现的。

以上两种可视化形式都是经典轨迹数据可视化方法,但它们也存在力不从心的时候,当针对海量轨迹数据应用这些方法时,由于数据体量惊人,原先直观清晰的视觉表达出现了大量的遮挡和重叠,如果处理不当,会很大程度上影响用户的观察和探索。此外,数据体量的提升带来了巨大的绘制压力,用户需要不断地提升硬件设备的性能才能应对,无形之中提高了轨迹分析的门槛。因此,针对海量轨迹数据,我们需要一种更为有效的可视化方法来洞察城市中移动对象的移动规律。

流场生成算法

经过研究,我们提出了一种针对海量轨迹数据的流场生成算法,能够将特定时间片段内的轨迹数据转化为流场数据,从而对“人流”、“车流”等进行表达和刻画。这种方法的特点在于,它没有直接对海量轨迹数据进行可视化,而是将轨迹数据进行一定的聚合,提取轨迹数据的主要特征,将轨迹数据转化为流场数据,再对选择合适的可视化方法对流场数据进行展现。由于流场数据保留了轨迹数据主要特征的同时大大降低了数据体量,因此能够在消除视觉遮挡和减轻绘制压力的同时,清晰直观地反映城市中移动对象的移动的规律。

算法的主要流程如下图所示:

1)统计轨迹点向量

轨迹数据是由若干个采样点数据构成,采样点数据包括轨迹点位置、时间及其他属性信息。我们首先根据所有采样点数据统计出轨迹点的位置,再根据轨迹数据中两两采样点之间的流入流出情况,计算每个轨迹点出入向量的方向和大小,其中大小又包括轨迹数量和移动对象的速度;

2)过滤轨迹点向量

对于上一步中所得到的轨迹点的所有出入向量,方法将根据自定义的轨迹数量阈值对其进行过滤,筛选得到每个轨迹点的主要出入向量;

3)生成轨迹点主向量

在这一步中,方法根据用户自定义的流场方向,对上一步得到的每个轨迹点所有的出入主向量按方向进行分类和聚合,在各个方向上生成至多一个主出向量和至多一个主入向量。在生成各个方向上的主向量的同时,需要统计各个方向内向量的平均速度、平均移动距离和平均差异角度;

4)扩散轨迹点主向量

接下来,将nm的网格平铺到用户指定的区域内,将每个轨迹点在各个方向上的主向量按照一定条件和规则扩散到nm的网格中。其中,在进行扩散时,扩散在网格内的向量,方向和速度保持不变,轨迹数量递减,而只有满足以下条件,一个网格才会受到某主向量的辐射影响:

 ●  被扩散网格中心与轨迹点之间的距离不大于轨迹点的平均移动距离; 
●  当扩散向量为入向量时,被扩散网格中心与轨迹点形成的向量与扩散主向量之间的角度应该处于[180-平均差异角度,180+平均差异角度]之间;当扩散向量为出向量时,被扩散网格中心与轨迹点形成的向量与扩散主向量之间的角度应该处于[-平均差异角度,+平均差异角度]之间。

5)计算网格主向量

在上一步中,同一个网格可能会受多个向量的辐射影响,产生多个扩散向量,因此,在这一步中,需要计算每个网格中各方向上的聚合向量(包含了流场方向、移动速度和轨迹数量),得到最终的流场数据。

在方法中,需要定义轨迹数量阈值、流场方向和网格个数。轨迹数量阈值主要用于过滤轨迹点向量,过滤是为了保留主要的轨迹,防止“噪声”对结果准确性的干扰;而对流场进行分向计算,则避免了相对方向上的移动抵消,从而能够保留更多的细节信息,使得最终结果更加准确;而在定义网格个数时,需要平衡个数较多所带来的计算压力和个数较少带来的粗糙效果。为了使得方法具有一定的自适应性,我们在扩散向量时,并没有采用固定的角度和距离,我们使用各方向上的平均移动距离和平均差异角度,使得扩散能够适应不同的向量分布,结果更加合理。

轨迹流场案例

以上是我们提出的针对海量轨迹数据的流场生成算法的简要流程,下图是方法根据某市2017年8月14日早上8:00到8:10间的手机信令数据可视化的效果:

在这个案例中,我们采用了粒子流动来表现流场数据,网格内粒子的数量即为轨迹数量(移动对象数量),粒子的移动方向代表移动对象的移动方向,粒子的颜色和速度均表示移动对象的移动速度,其中速度越大颜色越接近蓝色,速度越小颜色越接近红色。同时,我们提供了一些控件,用于调整流场方向、轨迹数量阈值和网格个数等参数,用于交互查询。通过这种方式,大大降低了绘制量并减少了视觉重叠,从而能够清晰观察城市内人群移动。

DataV不仅在数据大屏领域为各行各业的客户提供支持和服务,在大数据的可视分析的研究上,也在进行积极的探索。无论是最近推出的智慧场馆解决方案,还是海量轨迹的流场生成方法,都是新的尝试,我们将不忘初心,继续努力,为大家带来更好的可视化产品。


本文作者:关会华

阅读原文

本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者。

你可能感兴趣的:(可视化,算法,数据可视化)