2. 海洋监测数据采集与时间序列形成
海洋监测的时间序列并不是“仪器一开就自然存在”的东西。它由传感器按固定节律把物理量转换为电信号、再经采集器量化编码、由时钟打上时间戳、最终按某种文件格式落盘,才形成一条条可被追溯和计算的记录。理解这条链路,是后续清洗、对齐和分析的前提。本节围绕采样原理、时间戳、采样频率与分辨率、常见格式以及从原始观测到时间序列的完整流程展开。
传感器采样原理:从连续海洋到离散数字
海洋中的温度、盐度、流速、溶解氧等量在时间上是连续变化的,而数据记录必然是离散的。以常见的温盐深仪(CTD)为例,温度传感器多为热敏电阻或铂电阻,其阻值随温度变化,采集电路把阻值转换为电压,再经模数转换器(ADC)量化为整数码值。设ADC为16位、参考电压为2.5 V,则每个码值约对应 2.5/65536 ≈ 38 μV;若传感器灵敏度为 10 mV/℃,则一个码值约对应 0.0038 ℃,这就是量化步长。实际记录值还要经过厂家标定系数换算,例如温度常写成 T = a₀ + a₁·V + a₂·V² 的形式,V为电压或原始码值。
采样包含两个动作:保持与量化。采样保持电路在采样瞬间“冻结”电压,避免转换期间信号变化;量化则把连续电压映射到有限码值。因此原始观测天然带有量化误差,且该误差不会因后续处理而消失。理解这一点,才能正确看待数据中“看起来过于整齐”的小数位。
时间戳记录方式:给每条记录定位
时间戳决定了一条记录“属于哪个时刻”。工程上有三种常见方式:一是采集器本地时钟打点,每条记录写入采集时刻;二是首条记录时刻+采样间隔推算,只记录起始时间,后续按频率外推;三是外部授时同步,如GPS或北斗秒脉冲(PPS)对齐,使时钟长期不漂移。浮标长期布放时,晶振日漂移可达数秒量级,若只靠本地时钟,一个月后时间轴可能偏移数十秒,对高频流速观测影响显著。
时间戳还必须明确时区与基准。海洋数据通常统一使用UTC,并在元数据中注明;若混用北京时间(UTC+8),跨设备合并时会出现8小时错位。此外要区分“采样时刻”和“记录写入时刻”:前者是物理量被测量的瞬间,后者是数据落盘的时间,二者在带缓冲的采集系统中可能相差数十毫秒甚至更多。整理时应以采样时刻为准,并保留原始时间字段以便核查。
采样频率与分辨率:两个容易混淆的概念
采样频率指单位时间内采集并记录的样本数,单位Hz,其倒数为采样间隔Δt。例如1 Hz对应每1秒一条记录,10分钟平均数据则Δt=600 s。根据奈奎斯特采样定理,要无失真地还原信号,采样频率应高于信号最高频率成分的2倍。潮流以半日周期为主,若只关心日均变化,10分钟采样已足够;但若研究湍流脉动,可能需要1 Hz甚至更高。采样过低会把高频变化“折叠”成虚假的低频波动,即混叠,且事后无法从数据中分离。
分辨率则包含两层:一是幅度分辨率,由ADC位数和传感器灵敏度决定,即前文所述量化步长;二是时间分辨率,由采样间隔决定。二者相互独立:一台仪器可以1 Hz采样但温度分辨率只有0.01 ℃,也可以10分钟采样却有0.001 ℃的分辨率。整理数据时必须同时记录这两类信息,否则后续计算变化率、做频谱分析时缺乏依据。此外,仪器标称分辨率不等于有效分辨率,实际还受噪声限制,常通过多次平均降低随机噪声,但平均会牺牲时间分辨率,这是需要权衡的。
常见数据格式:NetCDF、CSV、TXT
NetCDF是海洋领域的主流格式,采用自描述结构,可同时存放多维变量(如时间×深度×站号)、单位、缺测值、坐标轴和全局属性。它支持分块压缩,适合大体量、多变量的观测数据,读取时可按变量切片,不必全部载入内存。缺点是需专门库(如Python的netCDF4、xarray)读取,纯文本工具无法直接查看。
CSV以逗号分隔,首行为列名,通用性最强,Excel和各类脚本都能直接读写,适合整理后的小规模时间序列表。缺点是丢失元数据(单位、缺测约定、时间基准需另附说明),且文件体积大、解析速度慢。
TXT多为空白或制表符分隔的定长/自由格式,常见于仪器原始输出,往往带有若干行文件头说明,字段位置固定但缺少统一标准。解析时需按行跳过头部、按列切分,容错性要求高。
| 格式 | 元数据 | 体积与读取 | 典型用途 |
|---|---|---|---|
| NetCDF | 内嵌完整 | 压缩好,需专用库 | 多变量长期观测归档 |
| CSV | 基本无,需外附 | 体积大,通用易读 | 整理后分析、交换 |
| TXT | 文件头非标准 | 体积中等,需定制解析 | 仪器原始输出 |
从原始观测到时间序列的整理流程
假设拿到一台浮标CTD的原始TXT文件,每行含日期、时间、温度原始码值、盐度、压力,头部有5行说明。整理可按以下顺序推进:
- 解析文件头与列结构:确认分隔符、列顺序、缺测填充值(如-999)、时间是否为UTC。
- 构造时间轴:把日期与时间合并为统一时间戳,检查间隔是否恒为设定值,标记出间隔异常处(如丢包导致的跳变)。
- 码值换算:用标定系数把原始码值转为物理量,保留换算公式与系数版本。
- 缺测与异常标记:把填充值转为NaN,对超出物理范围(如盐度<0或>42)的值打可疑标记,不直接删除。
- 统一输出:整理为“时间戳、温度、盐度、压力、质量标记”的CSV,并在伴随说明中写明单位、时区、采样间隔和缺测约定。
需要强调的是,时间序列的“规整”不等于“好看”。等间隔是理想状态,实际数据常因通信中断、仪器重启出现缺口。整理时应保留缺口而非强行插值填补,插值属于分析阶段的选择,且必须记录方法。只有把采样原理、时间戳、频率与分辨率、格式约定都落实到字段和元数据中,后续的质控、统计和可视化才有可靠基础。