JUST技术:基于轨迹数据的人口流向分析技术

2023-10-30 12:50

本文主要是介绍JUST技术:基于轨迹数据的人口流向分析技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、问题背景

随着社会的发展、交通方式的高度便利,人口流动的规模越来越庞大,与此同时,人口迁移、人口流向分析等受到高度关注。人口迁移是一种地理现象,更与社会经济发展紧密相连。人口迁移会同时影响迁入地和迁出地的人口结构,进而影响自然环境,推动或抑制社会经济的发展。另一方面,一个地区的经济发展水平,生活环境等因素会推动人口的迁入或迁出。所以,人口迁移空间分布和时空动态演进的相关研究变得越来越重要。对人口迁移因素、迁移空间变动的研究都将为城市建设,经济结构调整等提供政策决策依据。尤其在新冠肺炎疫情这类重大突发公共卫生安全事件发生的时候,进行精确的人口流向分析和追踪意义重大。

本文以抗击新冠肺炎疫情中的应用为例,给出了一套完整的基于轨迹数据对人口流向进行精确分析的技术方案。在疫情防控初期,各地的健康信息填报系统还不够完善,无法依据用户主动上报的位置信息实现精准的定位和追踪。然而,广泛使用的GPS定位技术为获取人口的精确位置信息提供了技术基础,车辆的GPS数据、用户的手机GPS数据等均可反映人口的精确位置信息。如何利用大数据技术从海量的GPS轨迹数据中分析人口的流向,进而在病毒传播链的追踪等相关疫情防控举措中提供精准有效的依据是一个紧迫的需求。

二、 问题定义

本文旨在解决这样一个问题:在病毒传播源地区有过到访记录的人群在当前城市的分布情况如何?比如,分析某特定时间段在武汉有过旅居史的人员目前在北京的分布情况。

数据输入:传染源地区和当前城市的用户轨迹数据。如图1所示为选定武汉市在特定时间范围内的一个矩形区域作为传染源区域,用于提取该区域在选定时间范围内的轨迹数据。

结果输出:来自传染源的人群在当前城市的分布情况,包括在不同空间网格内的分布和不同时间段内的分布,以及这些人曾经在传染源的具体到访位置和时间。图2展示的是在当前城市的特定区域、特定时间范围内,高危人群的分布情况。

图1 传染源的时间和空间范围选取

图2 当前城市特定区域的高危人群分布

三、解决方案

我们前期的工作为海量轨迹数据在HBase中的存储管理提供了高效的解决方案[1]。基于此,我们使用Spark分布式分析引擎对大量的轨迹数据进行分析,获取人群的时空分布情况,进而筛选出到访过传染源区域的高危人群,基于高危人群在当前城市的分布情况,政府决策人员可采取及时精准的追踪和医学观察措施,从而防止疫情在当地的传播蔓延。

四、技术实现

完整的技术实现方案包括以下3个步骤。

4.1 轨迹数据存储

该方案选用HBase作为轨迹数据的分布式存储引擎。原始的轨迹数据都是以GPS记录的形式存储的,如图3(a)中所示,我们称这种存储方式为纵向存储,该存储方式的不足在于一个点就是一条记录,破坏了轨迹的连续性特征,同时无法实现以轨迹为单位的压缩和查询,存储空间过大,查询效率过低。基于此,我们提出了图3(b)所示的横向轨迹数据存储格式,该格式以一条完整的轨迹作为一条记录,在存储前做了高效的压缩,降低轨迹存储容量。同时提取轨迹的空间边界和时间范围等特征,据此创建轨迹的时空存储索引,用于实现高效的时空范围查询。具体实现细节可参考[1]。

图3 轨迹数据存储格式

4.2 轨迹数据分析

我们使用Spark分布式内存分析引擎对大量的轨迹数据进行分析。同时,在该解决方案中,以OID来唯一标识产生轨迹的主体(人)。

首先,需要将整个空间范围划分成等大的空间网格,将每条轨迹投影到与其相交的空间网格内,得到OID在空间网格内的分布信息,如图4所示, (OID,GridId, EnterTime,LeaveTime)表示OID在EnterTime时刻进入网格GridId内,并于LeaveTime时刻离开。对于传染源地区的轨迹数据集Ts和当前城市的轨迹数据集Tc,分别统计分析出OID的时空分布情况,用集合Ds和Dc表示。

图4 轨迹数据投影与人群时空分布统计

对时空分布集合Ds和Dc,以OID为Key,其他属性为Value组织成(Key,Value)对,然后利用Spark的join算子(内连接)计算出同时出现在Ds和Dc中的OID及相关属性,分析结果如表1所示。至此,已经获取到3.1问题定义中要找的来自病毒传播源地区的人员,以及他们在传染源地区和当前城市的驻留位置和时间信息。

表1 目标人群分析的中间结果

4.3 分析结果输出

为了满足不同的用途,需要对分析所得的中间结果进行分流处理。

首先,将用户在传染源地区的驻留信息提取出来,存储在一张HBase表中,如图5(a)所示,该表以OID+EnterTime作为Key,GridId+LeaveTime作为Value,提供高效的OID或OID+时间范围查询,用于快速追溯一个人在传染源地区的驻留信息。

其次,将用户在当前城市的驻留信息提取出来,并在时间维度上以小时为单位进行分割,基于GridId和TimeBucket做聚合统计,得出每个空间网格每小时内来自传染源地区人员的数量Count和人员的OID集合,存储在一张HBase表中,如图5(b)所示,该表以GridId+TimeBucket为Key,Count+OIDs为Value,提供GridId查询或GridId+时间范围查询,用于快速查询来自传染源区域的人员在当前城市每个时间段内的空间分布情况。

图5 分析结果存储表结构

基于图5(b)所示的分析结果,可以快速查询当前城市各区域在各时间段内高危人群的分布情况,并且可以基于Count实现直观的热力图展示效果。同时还可以通过OID追溯一个人在传染源地区的详细驻留信息,如图5虚线所示。

五、总结

本文介绍了一套基于轨迹数据的人口流向分析方案。该方案使用HBase分布式存储引擎和Spark分布式内存计算引擎,以大量轨迹数据为基础,分析来自某一地区的人口在当前城市的时空分布情况。以此分析结果为依据,政府部门可以在类似新冠肺炎疫情防控等重大事件中采取准确及时的举措,同时也为研究地方人口结构,经济发展状况,以及城市建设规划等多领域提供有价值的决策依据。

参考文献:

[1]Ruiyuan Li, Huajun He, Rubin Wang, Sijie Ruan, Yuan Sui,Jie Bao, Yu Zheng. TrajMesa: ADistributed NoSQL Storage Engine for Big Trajectory Data (Short Paper). The 36th IEEEInternational Conference on Data Engineering. (ICDE 2020) 

 

往期文章:

JUST技术:基于轨迹的新冠易感人群查询方案

JUST技术:基于时空孪生神经网络的轨迹识别

JUST技术|CK实现时序数据管理

JUST技术:利用迁移学习生成新城市的轨迹

JUST技术:利用轨迹拼接分析实时可达区域

转载请注明:康瑞部落 » JUST技术:基于轨迹数据的人口流向分析技术

这篇关于JUST技术:基于轨迹数据的人口流向分析技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308033

相关文章

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt