CSV数据格式

0 点赞
Sim Racing Telemetry
转载

关于如何导入和使用导出的CSV数据的说明,以及【系统】字段的文档。【系统】字段允许你正确管理导出的数据并重新创建正确的遥测流。本指南不涵盖游戏相关字段。 导入到Excel/LibreOffice/... 要在第三方软件(如Microsoft Excel、LibreOffice、Matlab等)中正确导入CSV文件,你必须正确配置导入选项以匹配文件格式。使用文本编辑器打开CSV文件将显示数据的确切格式。导出的CSV文件使用以下设置: 格式:分隔(非“固定宽度”) 字段分隔符:制表符(非逗号或其他); 小数分隔符:.(点号字符,不是逗号或其他符号) 字符集/编码:UTF-8 阅读系统字段和数据字段部分,了解更多关于数值的信息。 LibreOffice 中有效导入选项的示例:

遥测数据段 CSV文件中的每一行都包含特定【遥测数据段】的数据。【遥测数据段】包含赛道上固定距离处的遥测数据(通常从开始测量圈速的点,即终点线开始测量),其中相近的遥测数据会被“整合”为单个样本(为此我们采用了一种特殊且复杂的算法)。这样一来,你可以选择一个特定的数据段,并能从所有可用圈速中获取相应的遥测数据。 系统字段 如果你想正确分析或重建遥测数据流,某些导出字段非常重要。 字段名称 描述 validBin 该行是否包含有效数据(1表示有效,0表示无效)。无效行可忽略。某些圈速(例如比赛开始圈和比赛结束圈)仅包含少量有效数据行。为了简化部分软件的管理(例如数学/统计软件通常将此类CSV文件导入为多维矩阵),我们始终导出所有圈速的遥测数据单元,包括无效数据单元。当某行数据无效时,所有游戏相关字段均设为“-1”。 carId:车辆标识符字符串(由游戏报告) trackId:赛道标识符字符串(由游戏报告) trackLength:赛道长度(单位:米,由游戏报告)。字段“lap_distance”表示遥测数据单元在赛道长度上的距离。 lapIndex:CSV文件中圈速的从零开始的索引。文件中的每一圈都有不同的索引。 lapNum:0为基准的圈数,在比赛中显示。其含义与lapFlag字段相关(详见后文说明)。 lapFlag:0表示正常圈,1表示“比赛开始”圈。这会改变其他多个字段的含义(例如lapNum字段,详见后文说明)。 binIndex:圈内“遥测数据单元”的0为基准索引。不同圈中具有相同binIndex的数据可以进行比较。 lap_number:游戏显示的0为基准圈数。建议使用lapNum字段。lap_distance:此采样点在赛道上的位置,以赛道上此区间的距离表示,通常从开始测量圈速的点开始计算。 lap_time:圈数索引为lapNum的单圈圈速。请注意,根据lapFlag(详见后文说明),它可能会跨越不同的lapIndex值。 其他字段因游戏而异,此处不做介绍(但可参见【数据字段】部分获取一些有用的通用信息)。通常,设为“-1”的值表示“无效”。 “lapFlag”字段 对于正常圈,lapFlag为0,lapNum为从0开始计数的圈数。但如果想要准确还原比赛中的事件,必须处理一种特殊情况:在某些比赛中,比赛开始于常规终点线之前(即起跑线位于常规终点线之前——如果起跑线在终点线之后,这也没有问题,因为所有数据已经保持一致。此类额外距离通过以下方式记录: - 圈标记设为1; - 圈数设为0(因为这显然属于第一圈的一部分); - 圈时开始计时(因此额外距离会计入第一圈时间); - 圈距离记录赛道上正确的常规位置(即与常规终点线的距离); - 圈索引设为0。在通过常规终点线后,系统会报告“常规”数据: lapFlag设为0; lapNum保持为0(因为我们仍处于第一比赛圈); lap_time不会重置(因为它仍在计算第一比赛圈的时间); lap_distance会重置,以始终报告在赛道上的正确位置; lapIndex增加并设为1。 虽然lapFlag设为1的样本从遥测角度来看并无意义,但它们可能包含比赛中的重要事件(如超车和位置变化)。根据你的需求,为简单起见,你可以忽略lapFlag设为1的圈数,这样就能处理简单、一致且有效的数据。圈速和分段时间 圈速 为了使数据分组在数学上保持一致,每个分组都关联到赛道上一个唯一的“代表性”位置(具体由圈速距离报告)。这通常与单圈中精确的最后一毫米不匹配,因此圈时字段总是比实际记录的圈速略慢。我们可能会在未来添加此信息。 分段时间 由于并非所有游戏和赛道都有相同数量的分段,将每个分段导出为单独的列会使CSV文件更难解析(列的数量和名称将不再具有固定的布局)。未来我们将分析添加新列的选项,以特殊格式“打包”相关信息。数据字段 大多数数据字段取决于游戏,此处不做详述。通常,设为“-1”的值表示“无效”。不过,我们会尽量以一致的方式管理所有数据。 计量单位 所有导出数据均采用“国际单位制”规定的计量单位。 例如,所有速度均以“米/秒”导出,而在应用程序中会转换为更实用的单位(例如:车辆速度会从米/秒转换为公制的千米/小时或英制的英里/小时;而悬挂速度则继续使用米/秒)。 单位转换通常很简单:例如,要将米/秒转换为千米/小时,只需乘以3.6即可。关于单位换算,有许多在线资源。 对于大多数矢量数据(例如速度),我们尽可能使用本地坐标参考系(即相对于车辆),其中X分量代表“向前”(纵向)值,Y分量代表“向右”(横向)值,Z分量代表“向上”(垂直)值。 对于所有由多个分量组成的参数(例如速度),我们仅导出单个分量。在应用程序中,除单个分量外,我们还会显示欧几里得范数(当然,在有意义的情况下)。例如速度就是这种情况:应用程序中显示的速度值是向量(velocity_X、velocity_Y、velocity_Z)的模,但获取并导出的真实【遥测数据】仅包含这3个分量(velocity_X、velocity_Y和velocity_Z——速度标量值只是由SRT计算得出,并非源遥测数据的一部分)。要计算相同的值,你只需应用此公式(将所有“P”分量设为0)。