SensorThings API 用统一资源模型连接传感器、观测与空间对象
说明 Thing、Datastream、Sensor 和 Observation 等资源怎样建立观测证据链,并覆盖时间、位置、分页和质量谱系。
SensorThings API 用统一资源模型连接传感器、观测与空间对象
物联网系统常把设备信息、传感器说明、观测值和位置分散在不同接口中,客户端难以知道某个数值由什么设备、在何处、何时、针对什么现象产生。OGC SensorThings API 用一组相互链接的资源表达这条证据链,并提供统一查询方式。它既适用于固定环境站,也能表示移动平台和随时间变化的位置。
OGC SensorThings API Part 1: Sensing Version 1.1 定义了 Thing、Location、Datastream、Sensor、ObservedProperty、Observation 与 FeatureOfInterest 等实体。标准解决交换语义和接口一致性,不自动保证传感器准确、时间同步或观测质量。
资源关系把观测放回业务语境
Thing 表示现实或虚拟对象,Location 描述它所在的位置;Thing 可以关联多个历史位置。Sensor 说明执行观测的过程或设备,ObservedProperty 表示被观测现象,Datastream 将 Thing、Sensor 和 ObservedProperty 与统一的观测类型、单位联系起来。Observation 承载结果和时间,FeatureOfInterest 则表示结果真正描述的对象或区域。
这种拆分避免在每条观测中重复全部元数据,也要求标识稳定。更换设备但继续同一业务数据流时,应判断是更新 Sensor、创建新 Datastream,还是保留校准事件。若直接覆盖旧设备信息,历史观测会被错误解释为由新设备产生。
单位不能只写在人类可读名称里。Datastream 应明确单位名称、符号和定义;结果结构复杂时,还要用 observationType 与 resultQuality 说明。不同数据流即使都叫“温度”,也可能分别是空气、地表或设备内部温度,ObservedProperty 的定义要可区分。
时间与位置需要同时管理版本
Observation 至少涉及现象时间,即现实中被观测的时间;还可以记录结果时间,即系统得到结果的时间。延迟上传、批量回补和质量重算会使二者不同。客户端按时间查询时要明确使用哪个字段,服务端也应保持时区和精度一致。
移动 Thing 的 Location 会变化,Observation 的 FeatureOfInterest 可以携带观测发生位置。仅查询 Thing 当前 Location 不能还原历史轨迹。高频移动数据若为每个点创建冗余资源,会产生存储压力,需要在标准表达、批量接口和轨迹模型之间合理设计。
位置通常使用 GeoJSON 几何。坐标顺序、CRS 约定和维度必须明确,接收端要验证数值范围。传感器位置不一定等于被观测对象位置,例如岸基相机观察远处目标,二者应分别建模。
GeoJSON 对应的点、线、面仍需遵守简单要素的几何语义;OGC Simple Feature Access 的标准入口为 https://www.ogc.org/standards/sfa/。实现还应明确无效几何、空几何和跨日期变更线的处理,避免位置字段能够解析却无法用于空间查询。
查询能力要配合分页与资源限制
SensorThings API 采用 OData 风格查询,可使用 $filter、$select、$expand、$orderby 和分页。它方便客户端减少往返,但深层展开、宽时间范围和复杂过滤可能造成昂贵查询。服务应限制页大小、展开深度、时间跨度和排序字段,并返回可继续访问的下一页链接。
客户端不能假设一页包含全部结果,也不能自行拼接不可信的下一页地址。增量同步应使用稳定排序和时间、标识组合游标,处理同一时间戳的多条观测。观测更正和删除需要另外的版本或审计机制,仅按最大时间追加会漏掉历史更新。
写入接口要验证 Thing 与 Datastream 的归属、结果类型、单位和时间范围。批量上传应支持部分失败报告和幂等标识,网络重试不能制造重复观测。设备凭证要限制在其被授权的数据流,不能只因知道 Datastream ID 就允许写入。
质量、谱系和安全属于实现责任
标准中的 resultQuality 可以携带质量信息,但组织需要定义可计算、可查询的质量词汇,例如校准状态、检出限、缺测原因和人工审核。异常值不应直接删除;可以保留原始观测,发布修订结果并记录处理算法和版本。这样下游才能区分设备原始值与质量控制产品。
观测量巨大时,冷热分层、时间分区和聚合产品很常见。聚合值应使用独立 Datastream 或清晰元数据说明窗口、统计量和缺测规则,不能覆盖原始数据。空间索引和时间索引要与主要查询模式一致,并在真实分页和并发条件下压测。
生产验证应贯穿资源关系、时间语义、GeoJSON、过滤、分页、批量写入、权限和异常恢复。还要测试设备时钟漂移、迟到数据、单位变更和传感器替换。SensorThings API 提供了一套可互操作的观测语言;长期可信的数据服务仍依赖稳定标识、质量谱系和受控写入。