揭秘京东城市时空数据引擎—JUST如何助力交通流量预测
2014年跨年夜上海外滩人流隐患事件,使得公共安全问题受到了全体社会的广泛关注。解决这一问题的很重要一项工作就是:如何实时监控和快速预测城市中每个地方的人流量。当某个地方的人流量超过给定的值或者有超过给定值的趋势时,相关部门能及时地采取相关措施,例如:疏散人群,交通引流等,这样才能防止悲剧的再次发生。
为避免类似公共安全隐患,解决因人流问题造成的交通、社会治安等问题,搭建城市实时人流监控预测系统势在必行。
▲图1 上海外滩的踩踏事件
京东城市作为系统建设中标单位,对整个系统的需求进行了初步分析,发现一个区域的人流量与多种数据相关,如图2所示。
比如:(1)手机基站数据。当一个地方的手机信令数据越多时,说明周围的人也越多;
(2)视频监控数据。从视频的画面中,能够识别出大约有多少人;
(3)交通流量数据。某条路的交通流量直观的反映了某个区域的流入流出人数;
(4)出行轨迹数据。轨迹数据能够反映出人的流向;
(5)天气数据。人的出行受天气的影响,比如下雨天,人们都很少出门,因此天气数据也有助于人流量的预测;
(6)不同的地点所能承载的最大人流量是不同的。比如大型火车站,2万的人其实不会造成公共安全威胁,但是如果一个小区突然有2万人,那就需要注意了。因此,每个区域的建筑类型(我们称之为兴趣点或POI)、建筑密度、道路结构等都可以帮助人流的预警;
(7)最后,如果事先了解到诸如举行演唱会等事件信息,也有助于人流量的预测。
▲图2 业务数据
上面说的这些数据,单从一项数据是无法实时监测和有效预测某个区域的人流量的,因为一项数据仅仅反映某一方面的信息。必须综合利用尽可能多的数据,才能有效地实现人流量的监控与预警,确保公共安全。
经过分析论证后,确定的大体思路是:(1)利用上述的多种数据计算出某个时间段每个区域的流入、流出的人流量;(2)采用AI算法模型对城市中每个区域的人流量进行建模;(3)利用建立好的模型,根据最近一段时间各区域的人流量,快速预测未来一段时间内每个区域的人流量,并给出潜在的预警。
整体解决思路确定之后,最关键的就是研究数据并敲定建模方法。但问题是:(1)这么多种类的数据需要如何有效管理?(2)如何从各种类型数据中快速地提取特征指标,例如人流量?(3)如何方便快速地构建模型,并对模型进行有效性验证?
如果上面三个问题无法高效解决,那人流监控及预测根本无法保证实时性。只有快速监控和预测人流量,才能有效地施行交通管制、人流疏散,防止类似于踩踏事件的公共安全事故发生。
但这个问题要解决并不容易,首先,同类型的不同来源业务数据,数据格式可能不一样,没法统一建表,这样只能为每一份数据单独设计一张表,而且当入库数据量达到1T的时候,MySQL数据库直接崩溃。即使好不容易能把数据导入到MySQL数据库,往往缺乏更深入的MySQL数据库调优经验,一个简单的数据查询过程,耗时费力。
针对这些困境,京东城市自研了——时空数据引擎(JUST引擎),通过把带有时间、空间、位置属性的数据统称为时空数据,并且借助JUST引擎强大的数据建模能力,将数据归类成6大类时空数据模型,所有的时空数据我们都可以按照6大类数据模型进行入库管理。这6种数据类型的分类方式为:
一方面,世间万事万物都可以由实体对象以及实体对象之间的关系组成。若实体对象之间不存在关联,我们称之为点数据;若实体之间存在关联,我们称之为网数据。
另一方面,根据数据的时间和空间的动态特性,我们可以将数据分成4类:时空静态数据、空间静态时间动态数据、空间动态时间静态数据、时空动态数据。但是,由于同一物体在同一时刻只能出现在一个地方,空间动态时间静态数据不会存在。因此,根据时空动态特性,我们将时空数据最终分成了3类,即:时空静态数据、空间静态时间动态数据和时空动态数据。
综上,根据城市数据的时空特性以及实体间的关联性,我们可以将城市数据划分成(4-1)×2 = 6类,如图4所示。
(1)时空静态点数据:以空间点的形式存在,空间位置和读数都不随时间变化。上述数据中,兴趣点就是这类数据,例如,火车站一旦建好,它的位置、大小、分类等信息将不再随时间变化;
(2)空间静态时间动态点数据:以空间点的形式存在,其位置信息不随时间变化,但会连续不断地产生读数。上述数据中,监控视频数据、天气数据就是这类数据;
(3)时空动态点数据,以空间点的形式存在,但位置和读数均随时间变化。上面用到的数据中,事件数据就是典型的时空动态点数据。生活中的打车数据、订单数据也是这类数据;
(4)时空静态网数据,以网络的形式存在,位置和读数均不变化。上面用到的数据中,路网数据就属于此类;
(5)空间静态时间动态网数据,是指空间网络上产生的一系列读数。例如交通流量,每条路上每隔一段时间都会产生一条读数;
(6)时空动态网数据,以网的形式存在,且空间位置和读数不断变化。上面用到的轨迹数据就是一种特殊的时空动态网数据。
回到人流预测场景,计算某个区域的绝对流出人数,就是计算出某个时刻的总人数相对于上一时刻的总人数的差值。这是典型的时空范围查询的问题。传统的关系型数据库,例如MySQL、Oracle以及PostGIS,虽然整合了时空数据管理的模块,能够满足小数据量的时空范围查询。但是一旦数据量很大,系统就会崩溃。
针对海量数据,目前采用的主流方法是分布式非关系型数据库,例如HBase。然而,原生的HBase是一个键值(key-value)数据库,只能根据一维的键值快速找到记录,没有有效的时空索引(时空数据可以看成是3维的:经度、纬度、时间),无法高效实现时空范围查询等查询分析。此外,HBase本身没有对时空数据进行优化存储,因此占用的磁盘空间非常大。以轨迹数据为例,传统的存储方式如图5所示,每个GPS点占用一行数据,造成数据条目数与GPS点的数目相同,导致存储空间开销很大。
▲图5 传统HBase轨迹数据存储方式
针对这些问题,JUST引擎为HBase创建了多种高效时空索引,将多维的时空信息编码到一维的键当中,能够快速定位诸如时空范围查询等查询的数据。当前JUST支持的时空索引如图6所示,分别对应不同的数据查询场景。
这就好比你在图书馆的书架上找书的过程 ,没有创建时空索引的HBase,需要你在书架上一本一本地查找你要的书。而拥有时空索引的JUST会告诉你,你所需要的书在哪个书架、第几层、第几本中,大大减少你的查找时间。
除此之外,JUST还对6种时空数据类型的每种数据类型设计了最佳的索引存储方式以及数据分析方法。还是以轨迹数据为例,我们预置了多种开箱即用的轨迹处理方法,包括轨迹异常值过滤、轨迹分段、轨迹地图匹配、轨迹插值等;对于每条分段后的轨迹,我们将这条轨迹的GPS点存储在同一条数据记录中,并采用GZip压缩方式,这样能够大大减少数据的条目数和占用空间,如图7所示。通过我们的实验,采用JUST的轨迹存储方法与原来传统的非关系型数据库的存储方法相比,磁盘空间缩小至1/8。更小的存储空间不仅节约磁盘空间,在有限的网络带宽下还加速了查询效率。好比一扇不大的门,对于胖子们来说,一次只能一个人穿过,而对于瘦子来说,可以允许两个人同时经过。
▲图7 JUST中轨迹数据存储方式
我们还提出了更为精确描述轨迹形状的方法。如图8所示。传统的描述轨迹形状的方法是使用一个矩形框,该矩形框很大空间都与轨迹位置无关。因此我们提出了采用多个小格子来描述轨迹形状的方法。更精确的轨迹形状描述允许我们设计出了更好的过滤方法,更进一步的提高了查询效率。
▲图8 精确描述轨迹形状
正是先进的索引方法和存储方法,使得JUST的计算效率有了巨大的提升。其中,存储和索引效率相较于原生HBase提升超过7倍,查询效率相对于其他时空查询框架有了上100倍的提升,如图9所示。目前相关研究工作申请了多项国家专利,相关论文也已被国际顶尖会议ICDE 2020接收,受到了国际同行的认可。(TrajMesa: A Distributed NoSQL Storage Engine for Big Trajectory Data.ICDE 2020)
▲图9 性能对比
在实现高效率的同时,JUST平台同样也具有“易用性”的特点。通过为用户提供JUST SQL模块,以上所有的操作都可以通过SQL语句简单实现。只要熟悉任何一种关系型数据库,熟悉SQL语句,几乎能够以零学习成本地玩转JUST。
此外,我们还为AI算法工程师量身定做了一套Notebook,所有的数据处理和模型训练,都可以在JUST Notebook上一站式进行,与此同时,还预置了丰富的开箱即用的数据预处理、数据分析、特征提取方法,用户可以随意进行组合。
目前,除了城市实时人流监控预测系统项目,JUST还完成了多个项目的交付,包括:雄安新区块数据平台、广汉国家农业产业园、南通市域治理现代化项目等,如图10所示。
▲图10 更多的项目使用了JUST
JUST已经推出了公测版本,以PaaS的形式对外提供服务,让更多的人能够享受到JUST的高扩展性、高效率以及强易用性。JUST的产品主页和产品门户分别如图11和图12所示。
【产品主页】
http://just.urban-computing.cn/
【产品门户】
http://portal-just.urban-computing.cn/
▲图11 JUST产品主页
▲图12 JUST产品门户
传统GIS厂商的时空大数据管理平台可以理解为一个数据集市,提供各类空间数据的可视化服务,查询能力仅局限于空间查询,并不是真正意义上的时空数据管理平台,可以理解为大数据量空间数据管理平台。
相较于业内同类型的其他时空数据管理平台,JUST提供了丰富的时空数据模型,能够全面覆盖所有时空数据;同时设计了高效的索引存储管理方法,为每一种数据类型封装了丰富的开箱即用的处理分析函数;此外,JUST还提供了完整的SQL引擎,所有的操作都可以简单的使用SQL语句实现;为AI算法工程师准备了完备的Notebook,方便一站式地模型构建。
总之,JUST允许用户能够更方便、更快捷地管理更大规模的时空数据。
【相关论文】
-
JUST: JD Urban Spatio-Temporal Data Engine. (ICDE 2020)
-
TrajMesa: A Distributed NoSQL Storage Engine for Big Trajectory Data (Short Paper). (ICDE 2020)
推荐阅读
欢迎点击【京东科技】,了解开发者社区
更多精彩技术实践与独家干货解析
欢迎关注【京东科技开发者】公众号