CN112685428B - 一种基于海量位置轨迹数据时空分析方法 - Google Patents
一种基于海量位置轨迹数据时空分析方法 Download PDFInfo
- Publication number
- CN112685428B CN112685428B CN202110263944.8A CN202110263944A CN112685428B CN 112685428 B CN112685428 B CN 112685428B CN 202110263944 A CN202110263944 A CN 202110263944A CN 112685428 B CN112685428 B CN 112685428B
- Authority
- CN
- China
- Prior art keywords
- spatial
- space
- function
- spark
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于海量位置轨迹数据时空分析方法,包括:将空间位置索引信息以ORC文件格式保存在HDFS中;利用Google的S2几何库将对空间位置索引信息Spatial Object转为设定的一种内存格式;基于OGC Open‑Gis标准实现空间函数Spatial UDF;通过Spark SQL来描述时空分析的操作,利用空间位置索引和过滤下推提取轨迹信息,利用空间函数和spark算子进行查询分析计算。本发明的技术方案在存储压缩率、时空分析性能、组件运维成本等方面较传统方案以及业界已有方案有较为明显优势,说明了该方法的可行性和有效性。
Description
技术领域
本发明公开了一种基于海量位置轨迹数据时空分析方法,涉及位置轨迹数据分析技术领域。
背景技术
随着移动互联网、物联网、5G的飞速发展,我们可以获取到大量的时间和空间属性的高维数据,从这些海量的位置轨迹数据中挖掘出有用的信息一直是个研究重点,同时也对数据库产品的存储和分析能力提出了严峻的挑战。而传统数据库在海量位置轨迹数据下存储存在瓶颈,无法进行分布式扩展,缺乏针对时空数据模型、时空索引和时空算子。
比如,PostGIS是对象关系型数据库PostgreSQL的一种扩展,来支持GIS对象存储在数据库,提供空间位置索引以及函数来分析处理GIS对象,但是单机版的PostgreSQL存储空间有限,数据存储压缩效率也不高。针对海量位置轨迹数据的场景,GeoMesa提供基于分布式计算系统的大规模地理空间分析能力,支持水平扩容,但是存储计算依赖如HBase、Spark等外部组件,数据多次转换,同时也具有较高的运维成本。另外,已有方案从海量位置轨迹数据中,快速并精确提取出包含在指定几何空间区域中的大量数据,也存在一定的性能瓶颈。
发明内容
为了解决已有技术方案中存储空间扩容难、数据压缩率不高、位置数据过滤与拉取低效、时空分析能力不足等问题,本发明提供一种基于海量位置轨迹数据时空分析方法,本发明所公开的技术方案通过Spark、ORC搭建基础架构,数据存储在HDFS上。通过S2构建空间位置索引,在Spark SQL上扩展时空计算方法(空间计算、边界过滤等)。
本发明为解决上述技术问题采用以下技术方案:
一种基于海量位置轨迹数据时空分析方法,所述方法包括:
步骤一、将空间位置索引信息以ORC文件格式保存在HDFS中;
步骤二、利用Google的S2几何库将对空间位置索引信息Spatial Object转为设定的一种内存格式;
步骤三、基于OGC Open-Gis标准实现空间函数Spatial UDF;
步骤四、通过Spark SQL来描述时空分析的操作,利用空间位置索引和过滤下推提取轨迹信息,利用空间函数和spark算子进行查询分析计算。
作为本发明的进一步优选方案,步骤一中,所述空间位置索引指:设定空间数据schema为(longitude,latitude,fact),所述的longitude表示精度,latitude表示纬度,fact表示事实明细数据,将指定空间区域的明细数据读取出来;
所述利用Google的S2几何库将对空间位置索引信息Spatial Object转为设定的一种内存格式具体为:将经纬度转为S2的Cell编码值并且空间上相邻的区域的编码值前缀相同。
作为本发明的进一步优选方案,所述步骤三中,引入空间过滤函数ST_WITHIN,基于S2表示的空间区域S2Polygon对象,将磁盘中的数据顺序读取出来后,在内存中使用空间过滤函数进行边界过滤,该函数支持Code Gen,减少了copy到spark计算层的数据量。
作为本发明的进一步优选方案,所述步骤二中还包括基于catalyst提供S2空间类型的扩展,具体方法为:
步骤一:扩展spark中的UserDefinedType,定义FS2PolygonUDT;
步骤二:编写序列化和反序列化,实现经纬度集合和多边形互转,定义FS2Polygon。
作为本发明的进一步优选方案,所述步骤四中还包括基于Spark的rule的扩展提供内置时空函数的注册以及地理位置索引条件的下推,具体方法为:
步骤一:扩展spark中的Rule[LogicalPlan], 定义MyUDFTransformRule;
步骤二:编写递归函数traverse,遍历逻辑执行计划树,提取ST_WITHIN函数参数,转换为CellID的IN条件,使用AND拼接到谓词条件上;
步骤三:在apply 中调用traverse,传入LogicalPlan对象进行处理,返回转换之后的LogicalPlan。
本发明采用以上技术方案与现有技术相比,具有以下技术效果:本发明基于空间和时间维度对位置轨迹数据进行空间位置的交叉并计算,如人员轨迹碰撞、人员轨迹伴随、卡口车辆碰撞、卡口车辆伴随等。该方法可以应用在提供时空分析的数据存储和计算产品中。
本技术方案相较于传统方案,数据压缩比为1 : 9.5-12.4;在人员位置碰撞场景中,本技术方案相较于传统方案,性能提升区间在1.3%~39%之间;在人员轨迹伴随场景中,本技术方案相较于传统方案,性能提升约18%~48%左右。
实验结果表明,本发明的技术方案在存储压缩率、时空分析性能、组件运维成本等方面较传统方案以及业界已有方案有较为明显优势,说明了该方法的可行性和有效性。
附图说明
图1是本发明所述方法的技术架构图。
图2是本发明的一个应用场景中,使用空间位置索引的场景示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
下面结合附图对本发明的技术方案做进一步的详细说明:
本发明所公开的技术方案给出了在Spark中基于Google的S2几何库在海量位置轨迹数据上构建空间位置索引的方式,同时充分利用Spark丰富的算子、函数扩展、谓词下推和Code Gen能力,实现了高效的空间位置交叉并计算,如人员(车辆)位置碰撞、人员(车辆)轨迹伴随等业务场景。
本发明所述方法的技术架构图如图1所示,首先,将空间位置索引信息以ORC文件格式保存在HDFS中。其次,利用S2将对空间位置索引信息Spatial Object转为一种内存格式,包括点、线和面等。然后,基于OGC Open-Gis标准实现了ST_WITHIN过滤、交并叉等空间函数Spatial UDF。最后,通过Spark SQL来描述时空分析的操作,利用空间位置索引和过滤下推尽可能少地提取轨迹信息,利用空间函数和spark算子进行高效的查询分析计算。
本发明所述技术方案中,几个关键组件的说明如下:
空间位置索引指:设定空间数据schema为(longitude,latitude,fact),所述的longitude表示精度,latitude表示纬度,fact表示事实明细数据,将指定空间区域的明细数据读取出来。暴力的做法就是将空间区域的所有经纬度作为条件进行匹配,这样对CPU计算和磁盘IO负担比较重,执行性能较为低下。为此,本技术方案引入了基于S2的空间位置索引的能力,将经纬度转为S2的Cell编码值并且空间上相邻的区域的编码值前缀相同。此时,若干个经纬度查询就转为了几个Cell编码进行过滤,大大加快了查询性能。
空间过滤函数,在实际的业务中,使用空间位置索引是这样的场景。下发的空间区域(如圆形)查询,需要基于S2计算出该区域的近似最优覆盖,此时会得出多个特定Level的Cell编码值,如图2所示。
由此可见,该方式会出现实际空间区域边界以外的数据。因此,本发明所公开的技术方案引入了空间过滤函数ST_WITHIN。基于S2表示的空间区域S2Polygon对象,将磁盘中的数据顺序读取出来后,在内存中使用空间过滤函数进行边界过滤,与此同时该函数支持Code Gen,减少了copy到spark计算层的数据量。
时空分析,基于Spark SQL和Spark MLlib的强大的分布式SQL查询和机器学习算法库的应用,来丰富和提升了时空的数据的分析能力。
下面给出本技术方案技术架构核心功能的详细实现方式,并基于 200亿的测试数据集进行轨迹碰撞、伴随的对比测试。
技术实现
1、基于catalyst提供S2空间类型的扩展。
步骤一:扩展spark中的UserDefinedType,定义FS2PolygonUDT;
步骤二:编写序列化和反序列化,实现经纬度集合和多边形互转,定义FS2Polygon。
2、基于Spark的rule的扩展提供内置时空函数的注册以及地理位置索引条件的下推。步骤一:扩展spark中的Rule[LogicalPlan], 定义MyUDFTransformRule;
步骤二:编写递归函数traverse,遍历逻辑执行计划树,提取ST_WITHIN函数参数,转换为CellID的IN条件,使用AND拼接到谓词条件上;
步骤三:在apply 中调用traverse,传入LogicalPlan对象进行处理,返回转换之后的LogicalPlan。
采用Spark SQL表示两区域轨迹碰撞的SQL用法,数据表trace结构模式如下:
+--------------------------+------------+--------------+
| col_name | data_type | comment |
+--------------------------+------------+--------------+
| ltime | bigint | NULL |
| mobile | bigint | NULL |
| longitude | double | NULL |
| latitude | double | NULL |
+--------------------------+------------+--------------+
SQL示例:
WITH
A1 AS
(
SELECT
'A1' AS areaIdList, COUNT(1) AS msgInfoCount,
1 AS areaCount, mobile
FROM trace
WHERE
ST_WIHTIN(longitude, latitude,
'circle(112.54393096379341,37.813511547414,500)')
AND ltime BETWEEN 1595088001 AND 1598198399 AND ( mobile is not null )
GROUP BY mobile
),
A0 AS
(
SELECT
'A0' as areaIdList, COUNT(1) AS msgInfoCount,
1 AS areaCount, mobile
FROM tsloadinfo_1
WHERE
ST_WIHTIN(longitude, latitude,
'circle(112.54441766571873,37.8103601107515,500)')
AND ltime BETWEEN 1595088001 AND 1598198399 AND ( mobile isnot null )
GROUP BY mobile
),
A0_A1 AS ( SELECT * from A1 UNION ALL SELECT * from A0 )
SELECT
mobile, COLLECT_LIST(areaIdList) AS areaIdList,
COUNT(areaIdList) AS areaCount,
SUM(msgInfoCount) AS msgInfoCount
FROM A0_A1
GROUP BY mobile HAVING COUNT(areaIdList) >= 2;
本发明的实验测试与效果说明如下。
本实验旨在通过已有的业务场景使用的传统方案和本技术方案的应用进行对比测试,从存储压缩、人员位置碰撞、人员轨迹伴随三个维度来说明本技术方案的有效性。
实验设置
传统方案:采用Rocks-DB来存储海量位置轨迹数据,将空间位置索引和时间维度信息编码为Key,轨迹数据作为Value进行保存,采用单JVM实现数据并行抽取、空间边界过滤、碰撞、伴随分析计算的复杂逻辑。
本技术方案:采用HDFS+ORC+Yarn+Spark+S2Geometry的技术方案,最终通过Spark的SQL引擎实现碰撞、伴随分析的分布式计算。
上述两种方案,同时接入200亿的测试数据集,基于同样的碰撞、伴随分析进行对比测试。
效果说明
存储压缩:本技术方案相较于传统方案,数据压缩比为1 : 9.5-12.4;
人员位置碰撞场景:本技术方案相较于传统方案,性能提升区间在1.3%~39%之间;
人员轨迹伴随场景:本技术方案相较于传统方案,性能提升约18%~48%左右。
实验结果表明,本技术方案在存储压缩率、时空分析性能、组件运维成本等方面较传统方案以及业界已有方案有较为明显优势,说明了该方案的可行性和有效性。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
Claims (4)
1.一种基于海量位置轨迹数据时空分析方法,其特征在于,所述方法包括:
步骤一、将空间位置索引信息以ORC文件格式保存在HDFS中;
步骤二、利用Google的S2几何库将对空间位置索引信息Spatial Object转为设定的一种内存格式;
步骤三、基于OGC Open-Gis标准实现空间函数Spatial UDF;
步骤四、通过Spark SQL来描述时空分析的操作,利用空间位置索引和过滤下推提取轨迹信息,利用空间函数和spark算子进行查询分析计算;
所述步骤四中还包括基于Spark的rule的扩展提供内置时空函数的注册以及地理位置索引条件的下推,具体方法为:
步骤一:扩展spark中的Rule[LogicalPlan], 定义MyUDFTransformRule;
步骤二:编写递归函数traverse,遍历逻辑执行计划树,提取ST_WITHIN函数参数,转换为CellID的IN条件,使用AND拼接到谓词条件上;
步骤三:在apply 中调用traverse,传入LogicalPlan对象进行处理,返回转换之后的LogicalPlan。
2.如权利要求1所述的一种基于海量位置轨迹数据时空分析方法,其特征在于,步骤一中,所述空间位置索引指:设定空间数据schema为(longitude,latitude,fact),将指定空间区域的明细数据读取出来;
所述利用Google的S2几何库将对空间位置索引信息Spatial Object转为设定的一种内存格式具体为:将经纬度转为S2的Cell编码值并且空间上相邻的区域的编码值前缀相同。
3.如权利要求1所述的一种基于海量位置轨迹数据时空分析方法,其特征在于,所述步骤三中,引入空间过滤函数ST_WITHIN,基于S2表示的空间区域S2Polygon对象,将磁盘中的数据顺序读取出来后,在内存中使用空间过滤函数进行边界过滤,该函数支持Code Gen,减少了copy到spark计算层的数据量。
4.如权利要求1所述的一种基于海量位置轨迹数据时空分析方法,其特征在于,所述步骤二中还包括基于catalyst提供S2空间类型的扩展,具体方法为:
步骤一:扩展spark中的UserDefinedType,定义FS2PolygonUDT;
步骤二:编写序列化和反序列化,实现经纬度集合和多边形互转,定义FS2Polygon。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110263944.8A CN112685428B (zh) | 2021-03-10 | 2021-03-10 | 一种基于海量位置轨迹数据时空分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110263944.8A CN112685428B (zh) | 2021-03-10 | 2021-03-10 | 一种基于海量位置轨迹数据时空分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685428A CN112685428A (zh) | 2021-04-20 |
CN112685428B true CN112685428B (zh) | 2021-07-06 |
Family
ID=75458409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110263944.8A Active CN112685428B (zh) | 2021-03-10 | 2021-03-10 | 一种基于海量位置轨迹数据时空分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685428B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220285A (zh) * | 2017-04-24 | 2017-09-29 | 中国科学院计算技术研究所 | 面向海量轨迹点数据的时空索引构建方法 |
CN111090816A (zh) * | 2019-11-29 | 2020-05-01 | 北京明略软件系统有限公司 | 时空轨迹数据的管理方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10902464B2 (en) * | 2013-08-27 | 2021-01-26 | Verizon Media Inc. | Spark satellite clusters to HADOOP data stores |
CN103593430B (zh) * | 2013-11-11 | 2017-03-22 | 胡宝清 | 一种基于移动对象时空信息轨迹分段聚类的方法 |
CN106209989B (zh) * | 2016-06-29 | 2019-04-16 | 山东大学 | 基于spark平台的空间数据并行计算系统及其方法 |
CN107122443B (zh) * | 2017-04-24 | 2019-09-17 | 中国科学院软件研究所 | 一种基于Spark SQL的分布式全文检索系统及方法 |
CN112052280B (zh) * | 2020-09-10 | 2022-04-29 | 厦门市美亚柏科信息股份有限公司 | 一种基于时空数据的实有人口分析方法及系统 |
-
2021
- 2021-03-10 CN CN202110263944.8A patent/CN112685428B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220285A (zh) * | 2017-04-24 | 2017-09-29 | 中国科学院计算技术研究所 | 面向海量轨迹点数据的时空索引构建方法 |
CN111090816A (zh) * | 2019-11-29 | 2020-05-01 | 北京明略软件系统有限公司 | 时空轨迹数据的管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112685428A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lv et al. | BIM big data storage in WebVRGIS | |
Pfoser | Indexing the trajectories of moving objects | |
Frentzos | Indexing objects moving on fixed networks | |
CN107590250A (zh) | 一种时空轨迹生成方法及装置 | |
Xia et al. | Big traffic data processing framework for intelligent monitoring and recording systems | |
Zhang et al. | Parallel online spatial and temporal aggregations on multi-core CPUs and many-core GPUs | |
CN106202207A (zh) | 一种基于HBase‑ORM的索引及检索系统 | |
CN106649656A (zh) | 一种面向数据库的时空轨迹大数据存储方法 | |
CN110990726A (zh) | 时空大数据智能服务系统 | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
Alarabi et al. | TAREEG: A MapReduce-based system for extracting spatial data from OpenStreetMap | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
Zhang et al. | U2STRA: High-performance data management of ubiquitous urban sensing trajectories on GPGPUs | |
CN111221813B (zh) | 数据库索引以及数据库查询的处理方法、装置及设备 | |
Azri et al. | Dendrogram clustering for 3D data analytics in smart city | |
Bakli et al. | A spatiotemporal algebra in Hadoop for moving objects | |
CN111522892A (zh) | 地理要素的检索方法及装置 | |
Jung et al. | Real-time car tracking system based on surveillance videos | |
Zhang et al. | High-performance online spatial and temporal aggregations on multi-core cpus and many-core gpus | |
CN112685428B (zh) | 一种基于海量位置轨迹数据时空分析方法 | |
CN111563080A (zh) | 一种空间数据索引和拓扑方法、装置及存储介质 | |
He et al. | Just-traj: A distributed and holistic trajectory data management system | |
Wang et al. | Geo-store: a spatially-augmented sparql query evaluation system | |
CN113806376B (zh) | 索引构建方法及装置 | |
CN115129787A (zh) | 一种维护区块链数据的方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |