CN107491495A - 空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 - Google Patents
空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 Download PDFInfo
- Publication number
- CN107491495A CN107491495A CN201710609563.4A CN201710609563A CN107491495A CN 107491495 A CN107491495 A CN 107491495A CN 201710609563 A CN201710609563 A CN 201710609563A CN 107491495 A CN107491495 A CN 107491495A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- track
- segment
- orbit segment
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000015654 memory Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 9
- 241001269238 Data Species 0.000 claims description 12
- 238000013480 data collection Methods 0.000 claims description 11
- 238000013500 data storage Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 6
- 238000011017 operating method Methods 0.000 claims description 6
- 210000004027 cell Anatomy 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 210000000352 storage cell Anatomy 0.000 claims description 3
- 238000002789 length control Methods 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 6
- 238000009412 basement excavation Methods 0.000 abstract description 4
- 238000007726 management method Methods 0.000 abstract description 4
- 238000007405 data analysis Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 9
- 238000002474 experimental method Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000007418 data mining Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000005065 mining Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 241000406668 Loxodonta cyclotis Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000035800 maturation Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000012512 characterization method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,依次包括以下步骤:采用均匀网格对轨迹进行分段处理,将轨迹与网格的交叉点作为轨迹的分割点;在完成所有轨迹分段操作之后,同一网格的轨迹段被集中组织;最后以“数据文件”形式作为存储单元将网格中的轨迹段存入存储设备。发明根据用户对于时空轨迹数据访问空间属性的特点针对性地设计数据文件的格式,具有无数据缺失、高I/O效率和易于实现等特点,适用于轨迹数据的存储管理和数据分析与挖掘领域。
Description
技术领域
本发明属于时空数据的存储管理技术,具体涉及一种空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法。
背景技术
近年来,随着全球定位技术和网络通信技术的发展和成熟,移动终端产生的时空轨迹数据的规模越来越大。在综合考虑存储设备的技术性能与价格成本之后,通常轨迹数据采用辅助存储设备(如磁盘)进行存储。但是,轨迹数据的挖掘算法常常在执行过程中引发大量的随机I/O操作,这成为了影响算法性能提升的重要因素。通过研究时空轨迹数据在辅助存储设备中的存储方法,减少随机I/O操作次数,缩短执行时间,有效提升挖掘算法的执行性能。
关于轨迹数据的存储方案,工业界普遍采用成熟的数据库技术。例如,甲骨文公司的Oracle Spatial产品基于对象-关系模式存储和管理空间数据,其中的SDO_GEOMETRY对象类型可以用来存储轨迹数据。又如,微软公司的SQL Server同样提供了对空间数据的支持功能。开源数据库PostgreSQL的扩展插件PostGIS提供的空间数据类型也可以构造出Trajectory数据类型。上述软件产品大多采用基于关系数据库扩展出的空间数据库来存储轨迹数据。虽然此类解决方案提供了成熟的空间数据类型和空间访问接口,使用方便。但是,轨迹数据本质上不是结构化数据,并不完全适合关系数据库。因而,这样的存储方法无法针对轨迹的时空特性提供高效率的访问方法,从而影响数据访问的性能。
学术界针对此问题也展开了相关研究。Mediano M[1]等人提出采用轨迹形式表示二维空间长矢量,在经过分段处理后按照原始顺序依次存储。实际操作时仅需读取所需片段,避免非必要数据的读取,提升了数据访问效率。Chakka V[2]等人也采用了基于轨迹段的存储方法,但其存储方法采用在线算法实现。基本思想是将添加的轨迹分段处理后按照空间关系进行组织,将邻近的轨迹段归为一组,同组轨迹段在磁盘上连续存放,这样的存储方法可以有效提升邻近空间轨迹的磁盘访问效率。通常时空数据在空间分布上具有偏斜的特性,Botea V[3]等人基于此观察采用空间四象限划分的方法将历史时空点数据分组到不同大小的空间网格中,每个网格存储的数据规模大致相同,并且相邻时空点数据在磁盘上邻近存储。另一个相近的研究工作是Mauroux P提出的TrajStore[4],它也研究轨迹数据的存储问题,不同之处是TrajStore的存储方法支持数据压缩和新轨迹的添加功能。Wang HZ[5]等人研究了内存中轨迹数据的组织方法。按照时间顺序以“帧”为单位进行分组,并且采用压缩和Cache优化的技术提升数据访问性能。由于该存储方法是针对内存设备而设计的,因此无法直接移植到磁盘设备上。
轨迹数据存储方法对轨迹数据挖掘算法的性能影响很大。现有的轨迹数据挖掘包含轨迹模式挖掘、轨迹聚类、轨迹分类和时空图挖掘等研究内容。其中不同的挖掘算法访问轨迹数据的方式各不相同,因而在存储设备上轨迹数据按照轨迹访问方式进行存储与组织最有利于算法性能的发挥。例如,轨迹聚类算法的核心操作是对空间中的轨迹段进行聚类运算。打破原始轨迹的数据组织方式,按照空间属性对轨迹数据进行重新分组,显然这种方法更优。由此可见,轨迹数据存储方法的设计应该充分考虑数据访问的方式。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,本发明根据用户对于时空轨迹数据访问空间属性的特点针对性地设计数据文件的格式,具有无数据缺失、高I/O效率和易于实现等特点,适用于轨迹数据的存储管理和数据分析与挖掘领域。
技术方案:本发明一种空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,依次包括以下步骤:
(1)采用均匀网格对轨迹进行分段处理,将轨迹与网格的交叉点作为轨迹的分割点;
(2)在完成所有轨迹分段操作之后,同一网格的轨迹段被集中组织;
(3)以“数据文件”形式作为存储单元将网格中的轨迹段存入存储设备;
(4)对存储之后的轨迹数据文件进行初始化、轨迹添加、顺序读取和时间查询操作;
其中,时空轨迹数据集TrajDB=(Traj1,Traj2,…,Trajn),轨迹Traji=<pi1,pi2…pim>,pij代表轨迹Traji中的第j个点,每个点包含x,y和t三种属性,分别代表在t时刻移动对象的经纬度坐标x和y;轨迹表示成由轨迹段组成的序列,即Sij代表轨迹Traji中的第j条轨迹段。
进一步的,所述步骤(3)中的数据文件包括文件首部、数据区、空闲区和索引区;所述文件首部记录数据文件的元数据,该元数据包括偏移量、文件链接、空间属性和数据容量;所述数据区中最小的存储单位为数据块,每个数据块中存储若干条轨迹段,数据块中的轨迹段包括轨迹段首部和轨迹段数据区;所述索引区记录数据区中每个轨迹段的时间信息。
进一步的,所述文件首部中的偏移量包括:(I)文件数据区偏移量是数据文件中数据区的起始位置,用于数据访问操作中定位数据区的数据;(II)文件空闲区偏移量是数据文件空闲区的起始位置,用于定位新添加数据的起始位置;(III)文件索引区偏移量是数据文件索引区的起始位置,用于读取索引和添加新数据的索引信息;当一个数据文件无法容纳所有数据时,当前数据文件通过所述文件链接来链接其他数据文件解决存储容量不足的问题,在文件首部中的前序文件链接和后序文件链接分别指向与当前数据文件相关联的前一个数据文件和后一个数据文件,方便访问邻近的数据文件;当时空轨迹数据量过大时,一份轨迹数据集必须存储在多个相互链接的数据文件中,其中每个数据文件仅对应于网格空间中的某个部分区域,采用“数据文件对应的网格区域”标识该区域;而数据文件中所有轨迹数据全体的最小外接矩形MBR也被同样保存在数据文件首部中;除了上述字段之外,还包含一些关于读写操作方面的数据。“空闲区的容量”表明当前数据文件中还可以存储的轨迹段的数据总量(包括轨迹段在数据区和索引区的数据量总和)。“数据块的容量”和“当前数据块的剩余容量”用于新轨迹存储时的策略选择,存储策略的介绍详见下节数据文件的基本操作部分。
进一步的,所述数据区中每个数据块的第一个字段是一个跨块标志位,跨块标志取值为0或者1,“1”表示当前轨迹段的数据存储在当前数据块和下一数据块中,读取时需要一并处理;“0”表示当前轨迹段仅存储在当前数据块中;轨迹段首部包括轨迹段长度和轨迹段ID,轨迹段长度用来表示轨迹段在当前数据块中的存储区域,轨迹段ID是轨迹段的唯一编号用于合并分散在多个数据块中的轨迹段;轨迹段数据区全部由点数据构成,每个点数据包括经度、纬度和时刻。
进一步的,所述索引区的具体字段功能描述如下:
(I)轨迹段的偏移量用于定位轨迹段在数据文件中的位置;
(II)轨迹段中数据的最早时刻和最晚时刻,用来筛选满足数据访问的时间条件。
进一步的,所述步骤(4)中新的数据文件默认大小为64M字节,而数据块的大小应该和辅助存储设备的“分配单元”的大小在数值上保持一致,初始化操作的具体步骤如下:新建空的数据文件,然后按照数据块的基本格式在文件首部中依次写入各相应字段的初始值。
进一步的,所述步骤(4)中当添加新的轨迹数据集时,首先采用空间网格将轨迹划分成轨迹段,然后将同属相同网格的轨迹段添加至对应的数据文件中;向指定数据文件中添加轨迹段数据集的具体步骤如下:
(A)按照时间对轨迹段进行排序
对给定的轨迹段根据其最早时刻和持续时间进行排序,即如果轨迹段的最早时刻相同,则持续时间短的轨迹段排在前面;此处,最晚时刻-最早时刻=持续时间;
(B)添加轨迹段的数据区和索引区记录
按照步骤(A)的排序结果,依次取出每条轨迹段,按照如下步骤进行添加:
a、计算当前轨迹段中所有点的总数据量Lpdata,加上轨迹段首部的大小(8字节),得到轨迹段将在数据块中存储的数据量再加上轨迹段在索引区的记录大小(20字节),得到该轨迹段在数据文件中存储的总数据量比较和空闲区容量,如果空闲区存储空间足够,则顺序执行下一步骤;否则新建数据文件F,并且将当前文件通过文件首部中的链接字段与新文件F相互链接;然后,将当前轨迹段添加到文件F中,即更换数据文件重新执行步骤a;
b、比较文件首部中的当前数据块剩余容量Lrb,如果则表明当前数据块中存在足够空间存储该轨迹段,则顺序执行下一步骤;否则表明当前数据块容量不够,执行步骤d;
c、读取当前空闲区的偏移量,同时记录此偏移量值,为添加索引区记录做准备,然后,按照轨迹段格式,在空闲区偏移位置处写入轨迹段数据,包括轨迹段长度、ID和所有点数据,随后更新Lrb,然后执行步骤e;
d、读取当前空闲区的偏移量,将当前文件的读写位置移至新数据块开始处。比较轨迹段和数据块容量Lblock,如果则设置当前数据块的跨块标志字段为“0”,按照步骤c执行轨迹段写入操作;否则设置当前数据块的跨块标志字段为“1”,将“4091”写入轨迹段长度字段,然后写入轨迹段ID,完成轨迹段首部之后,开始写入点数据,直至当前轨迹段填满为止,随后更新Lrb,然后,计算当前数据块已经写入的点数据总量Lw,更新执行步骤b;
e、读取当前索引区的偏移量,按照表2规定的字段长度,从索引区偏移位置前19个字节处将轨迹段的起始位置、最早时刻和最晚时刻写入到数据文件中;
f、更新文件首部中的空闲区偏移量、索引区偏移量、空闲区容量和当前数据块的剩余容量;
g、计算新加入轨迹段的MBRseg,并和文件首部中的MBR进行对比,如果MBRseg与MBR不存在包含关系,则更新MBR使得可以包含MBRseg,否则文件首部中MBR保持不变。
进一步的,所述步骤(4)中顺序读取的操作步骤如下:
1)、访问程序从数据文件首部中获得数据区的偏移量offsets和空闲区的偏移量offsete;
2)、访问程序从offsets位置开始读取数据块到内存中,根据数据块的跨块标志判断是否加载后续数据块,直至跨块标志为0停止;
3)、访问程序在内存中进行数据转换和提取操作,跳过“跨块标志”读取轨迹段长度,根据该长度控制轨迹段数据的读取范围,首先读出轨迹段ID,然后以24字节为一个单元,读出点数据的经度、纬度和时刻数据,直至读完所有点数据;
4)、如果跨块标志为“0”,表明不存在一条跨越两个数据块的轨迹段;否则,采用步骤2)的方法继续读下一段,同样读出所有点数据,根据读出的轨迹段ID号和已读的轨迹段进行合并;
5)、重复步骤2)~4)操作,直至读文件至offsete位置停止。
进一步的,所述步骤(4)中时间查询的操作步骤如下:
i、加载索引区的所有轨迹段摘要,包括偏移位置、开始时间和结束时间;
ii、根据给定的时间条件,对比索引区轨迹段的时间区间进行筛选,得到候选轨迹段集合C;
iii、逐一访问C中的每个轨迹段的偏移位置,首先读出轨迹段ID,然后以24字节为一个单元,读出点数据的经度、纬度和时刻数据,直至读完所有点数据,在重组这些数据后返回查询结果。
有益效果:本发明从空间维度上重新组织时空轨迹数据,通过空间区域地划分将轨迹进行分段处理,将相邻的轨迹段在存储设备上邻近存放。与现有技术相比,本发明具有以下优点:
1.存储对象为轨迹段,本发明打破时空轨迹原有的数据结构,按照有利于空间属性访问的原则重新组织时空轨迹数据。该方法通过网格划分轨迹得到轨迹段,以此作为时空轨迹在辅助存储设备上存储的最小单元,摈弃了传统的以空间点数据作为存储单元的方法。这样的存储方法更有利于以子轨迹作为处理对象的时空轨迹数据挖掘算法。
2.支持时间查询的索引区设计:轨迹数据中同时包含空间信息和时间信息。为了便于访问数据文件中轨迹的时间信息,本发明设计了索引区。该区记录了所有数据块的时间区间。在进行时间查询时,可以快速便捷地过滤数据块,进而找到符合条件的轨迹数据。
3.数据文件可相互链接:由于一个数据文件无法存储大规模的轨迹数据集,因此本发明设计了数据文件之间的链接功能。通过文件首部中的“前序文件链接”和“后序文件链接”将多个文件连接起来,解决大规模轨迹数据集的存储问题。
4.I/O优化的数据组织方式:为了保证以最少的I/O读取轨迹数据,所有轨迹段都尽可能采用最少的数据块存储,而数据块的容量等于辅助存储设备一次I/O的数据量,所以采用了I/O优化的数据组织方式后可以明显提高轨迹数据的读写效率。
附图说明
图1为实施例中基于空间划分的轨迹分段示意图;
图2为实施例中数据文件格式中的区域划分示意图;
图3为文件首部的基本格式示意图;
图4为数据区中数据块的基本格式示意图;
图5为索引区的格式示意图;
图6为实施例中在数据块中添加轨迹段的示意图;
图7为实施例中窗口查询的时间性能示意图;
图8为实施例中DBSCAN的时间性能示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
本发明一种空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,依次包括以下步骤:
(1)采用均匀网格对轨迹进行分段处理,将轨迹与网格的交叉点作为轨迹的分割点;
(2)在完成所有轨迹分段操作之后,同一网格的轨迹段被集中组织;
(3)以“数据文件”形式作为存储单元将网格中的轨迹段存入存储设备;
(4)对存储之后的轨迹数据文件进行初始化、轨迹添加、顺序读取和时间查询操作;
其中,时空轨迹数据集TrajDB=(Traj1,Traj2,…,Trajn),轨迹Traji=<pi1,pi2…pim>,pij代表轨迹Traji中的第j个点,每个点包含x,y和t三种属性,分别代表在t时刻移动对象的经纬度坐标x和y;轨迹表示成由轨迹段组成的序列,即Sij代表轨迹Traji中的第j条轨迹段。
如图1所示,轨迹Traj1、Traj2、Traj3和Traj4被空间网格Grid分割成多个轨迹段,其中网格Grid(1,2)包含轨迹段S13、S33和S44,它们被存储在同一数据文件中。并且,当访问指定空间区域中的轨迹时,查询算法通过比对各网格的空间属性来快速定位候选的轨迹段,避免大量不相关轨迹段的访问,有效提高查询处理的执行效率。此外,由于轨迹数据挖掘算法中存在大量的分析型查询,因而提高查询性能可以对轨迹挖掘算法在运行效率上有实质性地提升。
如图2所示,所述步骤(3)中的数据文件包括文件首部、数据区、空闲区和索引区;所述文件首部记录数据文件的元数据,该元数据包括偏移量、文件链接、空间属性和数据容量;所述数据区中最小的存储单位为数据块,通常其大小等于一次I/O的数据量,一条时空轨迹由多条轨迹段组成,每条轨迹段使用尽可能少的数据块进行存储,这样可以保证最少的I/O代价,每个数据块中存储若干条轨迹段(但是如果一条轨迹段的数据量过大,也可以存储在多个数据块中),数据块中的轨迹段包括轨迹段首部和轨迹段数据区;所述索引区记录数据区中每个轨迹段的时间信息。
如图3所示,所述文件首部中的偏移量包括:(I)文件数据区偏移量是数据文件中数据区的起始位置,用于数据访问操作中定位数据区的数据;(II)文件空闲区偏移量是数据文件空闲区的起始位置,用于定位新添加数据的起始位置;(III)文件索引区偏移量是数据文件索引区的起始位置,用于读取索引和添加新数据的索引信息;当一个数据文件无法容纳所有数据时,当前数据文件通过所述文件链接来链接其他数据文件解决存储容量不足的问题,在文件首部中的前序文件链接和后序文件链接分别指向与当前数据文件相关联的前一个数据文件和后一个数据文件,方便访问邻近的数据文件;当时空轨迹数据量过大时,一份轨迹数据集必须存储在多个相互链接的数据文件中,其中每个数据文件仅对应于网格空间中的某个部分区域,采用“数据文件对应的网格区域”标识该区域;而数据文件中所有轨迹数据全体的最小外接矩形MBR也被同样保存在数据文件首部中。
除了上述字段之外,还包含一些关于读写操作方面的数据。“空闲区的容量”表明当前数据文件中还可以存储的轨迹段的数据总量(包括轨迹段在数据区和索引区的数据量总和),“数据块的容量”和“当前数据块的剩余容量”用于新轨迹存储时的策略选择,存储策略的介绍详见下节数据文件的基本操作部分。
如图4所示,所述数据区中每个数据块的第一个字段是一个跨块标志位,跨块标志取值为0或者1,“1”表示当前轨迹段的数据存储在当前数据块和下一数据块中,读取时需要一并处理;“0”表示当前轨迹段仅存储在当前数据块中;轨迹段首部包括轨迹段长度和轨迹段ID,轨迹段长度用来表示轨迹段在当前数据块中的存储区域,轨迹段ID是轨迹段的唯一编号用于合并分散在多个数据块中的轨迹段;轨迹段数据区全部由点数据构成,每个点数据包括经度、纬度和时刻。
如图5所示,所述索引区的具体字段功能描述如下:
(I)轨迹段的偏移量用于定位轨迹段在数据文件中的位置;
(II)轨迹段中数据的最早时刻和最晚时刻,用来筛选满足数据访问的时间条件。这样能够根据指定的时间条件可以快递过滤得到候选的轨迹段,节省了大量的I/O代价。
进一步的,所述步骤(4)中新的数据文件默认大小为64M字节,数据块默认为4k字节,初始化操作的具体步骤如下:新建空的数据文件;然后按照表1所示,在文件首部中依次写入各相应字段的初始值。
表1数据文件首部字段的初始化表
字段 | 长度(字节) | 默认值 |
文件数据区偏移量 | 4 | 4096 |
文件空闲区偏移量 | 4 | 4096 |
文件索引区偏移量 | 4 | 67108864 |
前序文件链接 | 50 | 0(代表NULL) |
后续文件连接 | 50 | 0(代表NULL) |
整个文件的最小外接矩形 | 8*4=32 | 0,0,0,0 |
整个文件对应的网格区域 | 2*2=4 | 0,0 |
空闲区的容量 | 4 | 67104768 |
数据块的容量 | 4 | 4096 |
当前数据块的剩余容量 | 2 | 4096 |
进一步的,所述步骤(4)中当添加新的轨迹数据集时,首先采用空间网格将轨迹划分成轨迹段,然后将同属相同网格的轨迹段添加至对应的数据文件中;向指定数据文件中添加轨迹段数据集的具体步骤如下:
(A)按照时间对轨迹段进行排序
对给定的轨迹段根据其最早时刻和持续时间进行排序,即如果轨迹段的最早时刻相同,则持续时间短的轨迹段排在前面;此处,最晚时刻-最早时刻=持续时间;
(B)添加轨迹段的数据区和索引区记录
按照步骤(A)的排序结果,依次取出每条轨迹段,按照如下步骤进行添加:
a、计算当前轨迹段中所有点的总数据量Lpdata,加上轨迹段首部的大小(8字节),得到轨迹段将在数据块中存储的数据量再加上轨迹段在索引区的记录大小(20字节),得到该轨迹段在数据文件中存储的总数据量比较和空闲区容量,如果空闲区存储空间足够,则顺序执行下一步骤;否则新建数据文件F,并且将当前文件通过文件首部中的链接字段与新文件F相互链接;然后,将当前轨迹段添加到文件F中,即更换数据文件重新执行步骤①;
b、比较文件首部中的当前数据块剩余容量Lrb,如果则表明当前数据块中存在足够空间存储该轨迹段,则顺序执行下一步骤;否则表明当前数据块容量不够,执行步骤④;
c、读取当前空闲区的偏移量,同时记录此偏移量值,为添加索引区记录做准备,然后,按照图4中的轨迹段格式,在空闲区偏移位置处写入轨迹段数据,包括轨迹段长度、ID和所有点数据,随后更新Lrb,如图6中轨迹段S12的写入,然后执行步骤⑤;
d、读取当前空闲区的偏移量,将当前文件的读写位置移至新数据块开始处。比较轨迹段和数据块容量Lblock,如果则设置当前数据块的跨块标志字段为“0”,按照步骤③执行轨迹段写入操作;否则设置当前数据块的跨块标志字段为“1”,将“4091”写入轨迹段长度字段,然后写入轨迹段ID,完成轨迹段首部之后,开始写入点数据,直至当前轨迹段填满为止,随后更新Lrb,然后,计算当前数据块已经写入的点数据总量Lw,更新执行步骤②;
e、读取当前索引区的偏移量,按照表2规定的字段长度,从索引区偏移位置前19个字节处将轨迹段的起始位置、最早时刻和最晚时刻写入到数据文件中;
f、更新文件首部中的空闲区偏移量、索引区偏移量、空闲区容量和当前数据块的剩余容量;
g、计算新加入轨迹段的MBRseg,并和文件首部中的MBR进行对比,如果MBRseg与MBR不存在包含关系,则更新MBR使得可以包含MBRseg,否则文件首部中MBR保持不变。
表2数据区和索引区的字段长度
当然,为了提高数据文件MBR的计算效率,可以对于新添加的轨迹段集合进行最小外接矩形计算,然后与当前文件的MBR进行合并,这样能够避免逐一计算每条轨迹段造成的频繁更新。
如图6所示,所述步骤(4)中顺序读取的操作步骤如下:
1)、访问程序从数据文件首部中获得数据区的偏移量offsets和空闲区的偏移量offsete;
2)、访问程序从offsets位置开始读取数据块到内存中,根据数据块的跨块标志判断是否加载后续数据块,直至跨块标志为0停止;
3)、访问程序在内存中进行数据转换和提取操作,如图4所示,跳过“跨块标志”读取轨迹段长度,根据该长度控制轨迹段数据的读取范围,首先读出轨迹段ID,然后以24字节为一个单元,读出点数据的经度、纬度和时刻数据,直至读完所有点数据;
4)、如果跨块标志为“0”,表明不存在一条跨越两个数据块的轨迹段;否则,采用步骤2)的方法继续读下一段,同样读出所有点数据,根据读出的轨迹段ID号和已读的轨迹段进行合并;
5)、重复步骤2)~4)操作,直至读文件至offsete位置停止。
进一步的,所述步骤(4)中时间查询的操作步骤如下:
i、加载索引区的所有轨迹段摘要,包括偏移位置、开始时间和结束时间;
ii、根据给定的时间条件,对比索引区轨迹段的时间区间进行筛选,得到候选轨迹段集合C;
iii、逐一访问C中的每个轨迹段的偏移位置,首先读出轨迹段ID,然后以24字节为一个单元,读出点数据的经度、纬度和时刻数据,直至读完所有点数据,在重组这些数据后返回查询结果。
实施例1:
为了验证本发明的实际效果,设计了如下实验。选取2012年11月2日至8日北京市12408辆出租车2500条GPS数据作为数据集。在经过线性插值后,最终得到1.13G的测试数据集。所有实验程序采用Java语言开发实现。实验环境配置为Intel Core i5处理器、2.6GHz主频、8G内存和500G转速7200转/秒的硬盘。
为了验证空间属性优先的时空轨迹存储方法的在数据访问中的性能,设计了两个实验,分别为窗口查询和DBSCAN聚类算法(轨迹数据挖掘中最具有代表性的聚类算法)。空间查询中的窗口尺寸是以北京市的面积为参考基准,根据特定比例随机产生(见表3)。空间属性优先的轨迹存储方法中的均匀网格规模为60×60。而DBSCAN的密度阈值设为5,距离阈值设为200米。具体参数信息参考表3。所有的查询实验都是取50次测试的平均值作为最终测试结果。由于DBSCAN测试非常耗时,因而取5次测试的平均值作为最终结果。
为了测试轨迹存储方法的有效性和可行性,实现了经典的原序保持的时空轨迹存储方法和本发明的空间属性优先的时空轨迹存储方法,并且进行了实验比较。为了表述方便,后续实验分析将采用表4中的英文简称代替存储方法的中文全称。
表3实验参数设置情况
表4轨迹存储方法列表
实验结果与分析:
以下将依次测试两种存储方法在窗口查询和聚类算法实验中的性能。
1、窗口查询实验
窗口查询是指查找指定空间范围内的轨迹段。以下将从轨迹数据量变化和空间窗口比例两方面测试两种存储方法的性能。不难发现,在这两种情况下落入窗口的轨迹段数量都会随之增加,因此所有存储方法的查询时间也相应增加。但是,由于两种存储方法的轨迹数据组织方式不同,因而查询时间的变化情况并不一样。如图7(a)、(b)所示,CT的时间代价明显要高于ST,这是因为在CT中窗口范围内的轨迹段非集中存储,数据访问的I/O代价自然很高。然而由于ST方法中空间窗口中的轨迹段在存储设备中连续存放,有效降低了数据访问时I/O的次数,因而ST方法的表现自然更加出色。
2、DBSCAN聚类实验分析
DBSCAN算法对给定时刻的移动对象进行聚类处理,主要的数据访问操作是在指定时刻查找指定空间范围内的点数据。如图8所示,ST比CT表现得更好一些。这主要是因为ST方法中点数据按照网格进行了重新组织,由网格构成的邻域十分有利于DBSCAN的范围查询执行,所以ST比CT的时间代价更小。
Claims (9)
1.一种空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:依次包括以下步骤:
(1)采用均匀网格对轨迹进行分段处理,将轨迹与网格的交叉点作为轨迹的分割点;
(2)在完成所有轨迹分段操作之后,同一网格的轨迹段被集中组织;
(3)以“数据文件”形式作为存储单元将网格中的轨迹段存入存储设备;
(4)对存储之后的轨迹数据文件进行初始化、轨迹添加、顺序读取和时间查询操作;
其中,时空轨迹数据集TrajDB=(Traj1,Traj2,…,Trajn),轨迹Traji=<pi1,pi2…pim>,pij代表轨迹Traji中的第j个点,每个点包含x,y和t三种属性,分别代表在t时刻移动对象的经纬度坐标x和y;轨迹表示成由轨迹段组成的序列,即Sij代表轨迹Traji中的第j条轨迹段。
2.根据权利要求1所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述步骤(3)中的数据文件包括文件首部、数据区、空闲区和索引区;所述文件首部记录数据文件的元数据,该元数据包括偏移量、文件链接、空间属性和数据容量;所述数据区中最小的存储单位为数据块,每个数据块中存储若干条轨迹段,数据块中的轨迹段包括轨迹段首部和轨迹段数据区;所述索引区记录数据区中每个轨迹段的时间信息。
3.根据权利要求2所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:
所述文件首部中的偏移量包括:(I)文件数据区偏移量是数据文件中数据区的起始位置,用于数据访问操作中定位数据区的数据;(II)文件空闲区偏移量是数据文件空闲区的起始位置,用于定位新添加数据的起始位置;(III)文件索引区偏移量是数据文件索引区的起始位置,用于读取索引和添加新数据的索引信息;
当一个数据文件无法容纳所有数据时,当前数据文件通过所述文件链接来链接其他数据文件解决存储容量不足的问题,在文件首部中的前序文件链接和后序文件链接分别指向与当前数据文件相关联的前一个数据文件和后一个数据文件,方便访问邻近的数据文件;
当时空轨迹数据量过大时,一份轨迹数据集必须存储在多个相互链接的数据文件中,其中每个数据文件仅对应于网格空间中的某个部分区域,采用“数据文件对应的网格区域”标识该区域;而数据文件中所有轨迹数据全体的最小外接矩形MBR也被同样保存在数据文件首部中。
4.根据权利要求2所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述数据区中每个数据块的第一个字段是一个跨块标志位,跨块标志取值为0或者1,“1”表示当前轨迹段的数据存储在当前数据块和下一数据块中,读取时需要一并处理;“0”表示当前轨迹段仅存储在当前数据块中;
轨迹段首部包括轨迹段长度和轨迹段ID,轨迹段长度用来表示轨迹段在当前数据块中的存储区域,轨迹段ID是轨迹段的唯一编号用于合并分散在多个数据块中的轨迹段;轨迹段数据区全部由点数据构成,每个点数据包括经度、纬度和时刻。
5.根据权利要求2所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述索引区的具体字段功能描述如下:
(I)轨迹段的偏移量用于定位轨迹段在数据文件中的位置;
(II)轨迹段中数据的最早时刻和最晚时刻,用来筛选满足数据访问的时间条件。
6.根据权利要求1所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述步骤(4)中新的数据文件默认大小为64M字节,而数据块的大小应该和辅助存储设备的“分配单元”的大小在数值上保持一致,初始化操作的具体步骤如下:新建空的数据文件,然后按照数据块的基本格式在文件首部中依次写入各相应字段的初始值。
7.根据权利要求1所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述步骤(4)中当添加新的轨迹数据集时,首先采用空间网格将轨迹划分成轨迹段,然后将同属相同网格的轨迹段添加至对应的数据文件中;向指定数据文件中添加轨迹段数据集的具体步骤如下:
(A)按照时间对轨迹段进行排序
对给定的轨迹段根据其最早时刻和持续时间进行排序,即如果轨迹段的最早时刻相同,则持续时间短的轨迹段排在前面;此处,最晚时刻-最早时刻=持续时间;
(B)添加轨迹段的数据区和索引区记录
按照步骤(A)的排序结果,依次取出每条轨迹段,按照如下步骤进行添加:
a、计算当前轨迹段中所有点的总数据量Lpdata,加上轨迹段首部的大小,得到轨迹段将在数据块中存储的数据量再加上轨迹段在索引区的记录大小得到该轨迹段在数据文件中存储的总数据量比较和空闲区容量,如果空闲区存储空间足够,则顺序执行下一步骤;否则新建数据文件F,并且将当前文件通过文件首部中的链接字段与新文件F相互链接;然后,将当前轨迹段添加到文件F中,即更换数据文件重新执行步骤a;
b、比较文件首部中的当前数据块剩余容量Lrb,如果则表明当前数据块中存在足够空间存储该轨迹段,则顺序执行下一步骤;否则表明当前数据块容量不够,执行步骤d;
c、读取当前空闲区的偏移量,同时记录此偏移量值,为添加索引区记录做准备,然后,按照数据块的轨迹段格式,在空闲区偏移位置处写入轨迹段数据,包括轨迹段长度、ID和所有点数据,随后更新Lrb,然后执行步骤e;
d、读取当前空闲区的偏移量,将当前文件的读写位置移至新数据块开始处。比较轨迹段和数据块容量Lblock,如果则设置当前数据块的跨块标志字段为“0”,按照步骤c执行轨迹段写入操作;否则设置当前数据块的跨块标志字段为“1”,将“4091”写入轨迹段长度字段,然后写入轨迹段ID,完成轨迹段首部之后,开始写入点数据,直至当前轨迹段填满为止,随后更新Lrb,然后,计算当前数据块已经写入的点数据总量Lw,更新执行步骤b;
e、读取当前索引区的偏移量,按照相应字段长度,从索引区偏移位置前19个字节处将轨迹段的起始位置、最早时刻和最晚时刻写入到数据文件中;
f、更新文件首部中的空闲区偏移量、索引区偏移量、空闲区容量和当前数据块的剩余容量;
g、计算新加入轨迹段的MBRseg,并和文件首部中的MBR进行对比,如果MBRseg与MBR不存在包含关系,则更新MBR使得可以包含MBRseg,否则文件首部中MBR保持不变。
8.根据权利要求1所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述步骤(4)中顺序读取的操作步骤如下:
1)、访问程序从数据文件首部中获得数据区的偏移量offsets和空闲区的偏移量offsete;
2)、访问程序从offsets位置开始读取数据块到内存中,根据数据块的跨块标志判断是否加载后续数据块,直至跨块标志为0停止;
3)、访问程序在内存中进行数据转换和提取操作,跳过“跨块标志”读取轨迹段长度,根据该长度控制轨迹段数据的读取范围,首先读出轨迹段ID,然后以相应字节为一个单元,读出点数据的经度、纬度和时刻数据,直至读完所有点数据;
4)、如果跨块标志为“0”,表明不存在一条跨越两个数据块的轨迹段;否则,采用步骤2)的方法继续读下一段,同样读出所有点数据,根据读出的轨迹段ID号和已读的轨迹段进行合并;
5)、重复步骤2)~4)操作,直至读文件至offsete位置停止。
9.根据权利要求1所述的空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法,其特征在于:所述步骤(4)中时间查询的操作步骤如下:
i、加载索引区的所有轨迹段摘要,包括偏移位置、开始时间和结束时间;
ii、根据给定的时间条件,对比索引区轨迹段的时间区间进行筛选,得到候选轨迹段集合C;
iii、逐一访问C中的每个轨迹段的偏移位置,首先读出轨迹段ID,然后以相应字节为一个单元,读出点数据的经度、纬度和时刻数据,直至读完所有点数据,在重组这些数据后返回查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710609563.4A CN107491495B (zh) | 2017-07-25 | 2017-07-25 | 空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710609563.4A CN107491495B (zh) | 2017-07-25 | 2017-07-25 | 空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491495A true CN107491495A (zh) | 2017-12-19 |
CN107491495B CN107491495B (zh) | 2019-11-12 |
Family
ID=60644789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710609563.4A Active CN107491495B (zh) | 2017-07-25 | 2017-07-25 | 空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491495B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108444487A (zh) * | 2018-01-30 | 2018-08-24 | 北京小度信息科技有限公司 | 导航数据处理方法、导航方法及相关装置 |
CN109522428A (zh) * | 2018-09-17 | 2019-03-26 | 华中科技大学 | 一种基于索引定位的图计算系统的外存访问方法 |
CN110160539A (zh) * | 2019-05-28 | 2019-08-23 | 北京百度网讯科技有限公司 | 地图匹配方法、装置、计算设备和介质 |
CN110174115A (zh) * | 2019-06-05 | 2019-08-27 | 武汉中海庭数据技术有限公司 | 一种基于感知数据自动生成高精度定位地图的方法及装置 |
CN110765128A (zh) * | 2019-09-17 | 2020-02-07 | 江苏海平面数据科技有限公司 | 基于大规模gps数据的优化存储方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090024357A1 (en) * | 2006-02-28 | 2009-01-22 | Toyota Jidosha Kabushiki Kaisha | Object Path Prediction Method, Apparatus, and Program, and Automatic Operation System |
CN102646070A (zh) * | 2012-02-29 | 2012-08-22 | 武汉大学 | 一种基于区域的时空轨迹数据存储方法 |
CN106649656A (zh) * | 2016-12-13 | 2017-05-10 | 中国科学院软件研究所 | 一种面向数据库的时空轨迹大数据存储方法 |
-
2017
- 2017-07-25 CN CN201710609563.4A patent/CN107491495B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090024357A1 (en) * | 2006-02-28 | 2009-01-22 | Toyota Jidosha Kabushiki Kaisha | Object Path Prediction Method, Apparatus, and Program, and Automatic Operation System |
CN102646070A (zh) * | 2012-02-29 | 2012-08-22 | 武汉大学 | 一种基于区域的时空轨迹数据存储方法 |
CN106649656A (zh) * | 2016-12-13 | 2017-05-10 | 中国科学院软件研究所 | 一种面向数据库的时空轨迹大数据存储方法 |
Non-Patent Citations (1)
Title |
---|
吉根林 等: "时空轨迹大数据模式挖掘研究进展", 《数据采集与处理 》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108444487A (zh) * | 2018-01-30 | 2018-08-24 | 北京小度信息科技有限公司 | 导航数据处理方法、导航方法及相关装置 |
CN109522428A (zh) * | 2018-09-17 | 2019-03-26 | 华中科技大学 | 一种基于索引定位的图计算系统的外存访问方法 |
CN109522428B (zh) * | 2018-09-17 | 2020-11-24 | 华中科技大学 | 一种基于索引定位的图计算系统的外存访问方法 |
CN110160539A (zh) * | 2019-05-28 | 2019-08-23 | 北京百度网讯科技有限公司 | 地图匹配方法、装置、计算设备和介质 |
CN110174115A (zh) * | 2019-06-05 | 2019-08-27 | 武汉中海庭数据技术有限公司 | 一种基于感知数据自动生成高精度定位地图的方法及装置 |
CN110765128A (zh) * | 2019-09-17 | 2020-02-07 | 江苏海平面数据科技有限公司 | 基于大规模gps数据的优化存储方法 |
CN110765128B (zh) * | 2019-09-17 | 2024-02-23 | 江苏海平面数据科技有限公司 | 基于大规模gps数据的优化存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107491495B (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491495B (zh) | 空间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 | |
CN102999519B (zh) | 一种数据库的读写方法及系统 | |
CN102521406B (zh) | 海量结构化数据复杂查询任务的分布式查询方法和系统 | |
CN104809237B (zh) | LSM-tree索引的优化方法和装置 | |
CN106777351A (zh) | 基于art树分布式系统图存储计算系统及其方法 | |
CN102521405B (zh) | 支持高速加载的海量结构化数据存储、查询方法和系统 | |
CN107451233A (zh) | 时间属性优先的时空轨迹数据文件在辅助存储设备中的存储方法 | |
CN103020204B (zh) | 一种对分布式顺序表进行多维区间查询的方法及其系统 | |
CN103366015B (zh) | 一种基于Hadoop的OLAP数据存储与查询方法 | |
CN101916299B (zh) | 一种基于文件系统的三维空间数据存储管理方法 | |
CN106599040A (zh) | 一种面向云存储的分层索引方法与检索方法 | |
CN110059067A (zh) | 一种水利空间矢量大数据存储管理方法 | |
CN102402617A (zh) | 一种利用分片及稀疏位图的易压缩数据库索引存储系统及其相应的构建、调度和查询处理方法 | |
CN103118132B (zh) | 一种面向时空数据的分布式缓存系统及方法 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN106933511B (zh) | 考虑负载均衡与磁盘效率的空间数据存储组织方法及系统 | |
CN103914462B (zh) | 一种数据存储和查询方法以及装置 | |
CN110309233A (zh) | 数据存储的方法、装置、服务器和存储介质 | |
CN108536692A (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
CN108021702A (zh) | 基于LSM-tree的分级存储方法、装置、OLAP数据库系统及介质 | |
CN110196847A (zh) | 数据处理方法和装置、存储介质及电子装置 | |
CN109994131A (zh) | 一种基于索引的工频录波文件压缩存储方法及系统 | |
CN103336828B (zh) | 实时数据库读取及写入方法 | |
CN104794237B (zh) | 网页信息处理方法及装置 | |
CN106951519A (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 |