# 原子文件 定义如下几种原子文件: | 文件名 | 内容 | 示例 | | ----------- | ------------------------------ | ------------------------------------------- | | xxx.geo | 存储地理实体属性信息。 | geo_id, type, coordinates | | xxx.usr | 存储交通使用者信息。 | usr_id, gender, birth_date | | xxx.rel | 存储实体间的关系信息,如路网。 | rel_id, type, origin_id, destination_id | | xxx.dyna | 存储交通状态信息。 | dyna_id, type, time, entity_id, location_id | | xxx.ext | 存储外部信息,如天气、温度等。 | ext_id, time, properties | | config.json | 用于补充描述各表信息。 | | 注:对于不同的交通预测任务,可能用到不同的原子文件,同一个数据集不一定包含全部六种原子文件。 **`.geo`、`.usr`、 `.rel`、 `.dyna` 和 `.ext` 的格式类似 `csv` 文件, 即含有多列数据。** 如果在处理成原子文件的过程中,对任意一种id进行了重映射,**我们推荐从0开始编号**! ## Geo 表 Geo 表中一个元素由以下四部分组成: **geo\_id、 type、 coordinates、 properties (多列)**。 * geo\_id: 主键,唯一确定一个 geo 实体。 (如传感器, 经纬度点, 路段, 区域等的编号) * type: 表示该 geo 的类型。有 \[`Point`, `LineString`, `Polygon`\] 三种值。 这三种取值与 [Geojson](https://tools.ietf.org/html/rfc7946#section-1) 中的点线面一致。 * coordinates:由 float 类型组成的数组或嵌套数组。 描述 geo 实体的位置信息,采用 [Geojson](https://tools.ietf.org/html/rfc7946#section-1) 的 coordinates 格式 * properties: 描述该 geo 的属性信息,若有多个属性,可以使用不同的列名定义为多列数据,如 `POI_name`, `POI_type`。 (**对于网格数据,必有两列 `row_id` 和 `column_id` 属性表示网格的行列编号**。) > 注: Geojson 的 coordinates 格式为: (**经度, 纬度**) > > * Point: \[102.0, 0.5\] > > * LineString: \[ \[102.0, 0.0\], \[103.0, 1.0\], \[104.0, 0.0\], \[105.0, 1.0\] \] > > * Polygon: \[\[ \[100.0, 0.0\], \[101.0, 0.0\], \[101.0, 1.0\], \[100.0, 1.0\], \[100.0, 0.0\] \]\] ## Usr 表 Usr 表中一个元素由以下两部分组成: **usr\_id, properties (多列)**。 * usr\_id: 主键,唯一确定一个 usr 实体。 * properties: 描述该 usr 实体的属性信息,若有多个属性,可以使用不同的列名定义为多列数据,如 `gender`,`birth_date`。 ## Rel 表 Rel 表中一个元素由以下四个部分组成: **rel\_id、 type、 origin\_id、 destination\_id、 properties(多列)**。 * rel\_id: 主键,唯一确定一个实体间的关系。 * type: 枚举类。取值为 \[`usr`,`geo`\],表示该关系是基于 `geo` 还是 `usr`。 * origin\_id: 关系起点方的 ID,为 Geo 表或 Usr 表中的一个。 * destination\_id: 关系终点方的 ID,为 Geo 表或 Usr 表中的一个。 * properties: 描述该关系所具有的属性信息。若有多个属性,可以使用不同的列名定义多列数据。 ## Dyna 表 Dyna 表中一个元素由以下五部分组成: **dyna\_id、 type、 time、 entity\_id(多列)、 properties(多列)**。 ### 各列介绍 * dyna\_id: 主键,唯一标识动态表中的一条记录。 * type: 枚举类。一共有两种取值: `trajectory`(轨迹预测任务) 和 `state`(状态预测任务)。 * time: 时间信息,采用 [ISO-8601 标准](https://www.iso.org/iso-8601-date-and-time-format.html) 中的日期时间组合表示法, 如: `2020-12-07T02:59:46Z`。 * entity\_id: 描述该记录是基于哪一个实体观测产生的,就是 `geo` 或 `usr`的编号。 * properties: 描述该条记录的属性信息,若有多个属性,可以使用不同的列名定义为多列数据,比如既有速度数据、又有流量数据。 ### 详细说明 * 对于交通状态预测任务: * 格式为:*dyna\_id, state, time, entity\_id, properties*,**entity\_id** 可能有不同变化。 * 对于传感器、路段、区域等实体来讲此列就是对应的编号, entity\_id 的列名为 \[**entity\_id**\], 文件后缀名为 `.dyna`。 * 对于网格结构的交通数据,entity\_id 变成2列,列名为 \[**row\_id, column\_id**\],文件后缀名为 `.grid`。 * 对于基于OD结构的交通数据,entity\_id 变成2列,列名为 \[**origin\_id, destination\_id**\],文件后缀名为 `.od`。 * 对于网格结合OD结构的交通数据,entity\_id 变成4列,列名为 \[**origin\_row\_id, origin\_column\_id, destination\_row\_id, destination\_column\_id**\],文件后缀名为 `.gridod`。 * 对于轨迹相关任务: 轨迹数据包括GPS点轨迹、基于路段的轨迹(路网匹配后)、用户签到轨迹(基于POI的轨迹)。 - GPS点轨迹 - 格式为: ***dyna_id, type, time, entity_id, (traj_id), coordinates, properties***. - **entity\_id**列的内容应为**usr\_id**,**traj_id**表示同一用户的多条轨迹的编号(从0开始),如果用户只有一条轨迹,则该列可以为空,**coordinates**列的内容为GPS点的纬度和经度。 * 基于路段的轨迹 * 格式为: ***dyna_id, type, time, entity_id, (traj_id), location, properties***. * **entity\_id**列的内容应为**usr\_id**,**traj_id**表示同一用户的多条轨迹的编号(从0开始),如果用户只有一条轨迹,则该列可以为空,**location**列的内容是**geo\_id**,指向geo表代表一个路段。 * 基于POI的轨迹 * 格式为: ***dyna_id, type, time, entity_id, (traj_id), location, properties***. * **entity\_id**列的内容应为**usr\_id**,**traj_id**表示同一用户的多条轨迹的编号(从0开始),如果用户只有一条轨迹,则该列可以为空,**location**列的内容是**geo\_id**,指向geo表代表一个POI。 对于特定任务,轨迹下一个位置预测任务的输入基于POI点的轨迹,到达时间估计任务的输入为GPS点的轨迹或基于路段的轨迹,地图匹配任务的输入为GPS点的轨迹,输出的是基于路段的轨迹。 ### 数据排列方式 - **Dyna 表中,应该按照