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

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Java整合Protocol Buffers实现高效数据序列化实践

《Java整合ProtocolBuffers实现高效数据序列化实践》ProtocolBuffers是Google开发的一种语言中立、平台中立、可扩展的结构化数据序列化机制,类似于XML但更小、更快... 目录一、Protocol Buffers简介1.1 什么是Protocol Buffers1.2 Pro