功能简介
设备传感器记录仪每次采集一条带时间戳的浏览器传感器记录。每一行可包含样本 ID、手机姿态、设备定位,以及近似的太阳高度角与方位角,整个会话可导出为 CSV。
测量范围
本应用记录的是原始的浏览器姿态角。它不会把手机标定到叶片、不会推导叶片法向量,也不会认证测量精度。请采用可重复的物理放置规程,并针对你的实验进行验证。
开始之前
- 在支持运动/姿态传感器的手机或平板上,使用 HTTPS 页面打开。
- 浏览器询问时,允许运动/姿态与定位权限。在 iOS 上,该请求必须由一次明确的点击触发。
- 决定好手机与每个样本的对齐方式,并全程保持一致。
- 定位、海拔与姿态是否可用取决于设备和浏览器;不支持的数值会显示为
N/A,或在导出时以空单元格呈现。
快速流程
- 打开应用,点击 Enable sensors(启用传感器)。
- 在 Leaf or sample ID(叶片或样本 ID)中输入一个值。
- 按你的采样规程所定义的位置握持手机。
- 点击 Capture Sample(采集样本),等待定位与姿态读数。
- 检查新增的一行,包括定位精度和两个时间戳。
- 对更多样本重复上述步骤,然后点击 Export CSV(导出 CSV)。
控件与输出
| 控件或面板 | 实际行为 |
|---|---|
| Enable sensors | 请求运动/姿态权限,随后请求当前定位。 |
| Leaf or sample ID | 为下一条记录添加一个可选的文本标识,最多 80 个字符。 |
| Capture Sample | 在需要时请求权限,获取一次新的定位,短暂等待一个姿态事件,并追加一行记录。 |
| Refresh Location | 刷新定位面板,但不创建样本行。 |
| Current orientation | 显示来自浏览器 deviceorientation 事件的 alpha、beta 和 gamma。 |
| Latest location | 显示纬度、经度、可选的海拔,以及浏览器报告的水平精度。 |
| Export CSV | 下载当前页面会话中记录的所有行。 |
CSV 的列为:
leafId,timestamp,latitude,longitude,altitude,geoAccuracy_m,alpha_deg,beta_deg,gamma_deg,sunElevation_deg,sunAzimuth_deg,sensorTimestamp
工作原理
- 姿态事件通过
requestAnimationFrame采样;一次采集使用最新可用的事件。 - 地理定位请求高精度,超时 15 秒,且不使用缓存位置。
- 太阳赤纬和时差根据本地日历日估算。真太阳时由经度和设备时区偏移推导。
- 高度角由纬度、赤纬和时角计算。方位角以正北为起点顺时针报告,范围为
0–360°。 - CSV 数值会被转义,以电子表格公式字符开头的文本在导出前会加上前缀。
太阳计算是一种轻量近似。它不做大气折射、地形地平线或海拔校正。
数据、隐私与外部服务
传感器数值和采集的记录行都留在当前浏览器标签页内。本应用不会把数据集发送到任何分析服务。导出会通过一个临时浏览器 URL 生成本地 CSV 文件。
运动和地理定位是受保护的浏览器能力。请求是否可用、返回何种精度,由浏览器和操作系统决定。
局限性
科研使用
alpha并不保证在每台设备上都是绝对的罗盘航向。- 传感器偏置、手机壳、磁干扰、设备安装方式以及浏览器坐标约定都可能影响读数。
- GPS 精度不等同于测量级精度,海拔常常不可用或存在噪声。
- 采集的记录行仅存在于页面内存中,刷新后若未导出即丢失。
- 当太阳位于地平线以下时,太阳高度角可能为负。
排障
| 问题 | 应检查什么 |
|---|---|
| 运动权限被拒绝 | 在浏览器或系统设置中为本站启用运动/姿态权限,然后再次点击 Enable sensors。 |
| 收不到姿态读数 | 保持手机唤醒,确认它具备运动传感器,并尝试使用较新的移动浏览器。 |
| 定位不可用 | 启用定位服务,移动到信号更清晰的区域后重试。该请求最长可能耗时 15 秒。 |
| 太阳相关字段为空 | 太阳计算需要有效的纬度和经度。 |
| 导出按钮不可用 | 请先至少采集一行样本。 |
