【问题标题】:How to smooth elevation gain from GPS Points如何平滑 GPS 点的高程增益
【发布时间】:2021-12-08 14:22:50
【问题描述】:

我这里有个大问题:

我有一组 GPS 数据,需要计算一些信息,除了路线中的总海拔增益,我都做了。 有一个像 [825.23423, 827.39420, 828.19319, ...] 这样的数组,它存储每个 gps 点的高度,我需要计算全部总和。 问题是 gps 不是那么准确,有时会给出一些不正确的高度,这会使总和出错。 我尝试了很多方法来平滑数据,这里有一些:

  • 设置一个最小值以对海拔增益求和
  • 获取“子阵列”并制作它们的媒体以求和之后的高程增益。
  • 获取“子数组”,然后弹出并移动不常见的值以求和。
  • 而我混合所有的实际方式,它变得更好,但甚至没有接近完美:
const getMediaFixed = (values: number[]) => {
      values.sort((a, b) => {
        return a - b;
      });
      values.pop();
      values.shift();
      const media = values.reduce((a, b) => a + b) / values.length;
      return media;
    };

    let last: number = elevations[0];
    let elevationSum = 0;
    // let countLimit: number = 1;
    for (let i = 0; i < elevations.length - 5; i += 5) {
      let media: number;
      if (i <= elevations.length - 4) {
        media = getMediaFixed([
          elevations[i],
          elevations[i + 1],
          elevations[i + 2],
          elevations[i + 3],
          elevations[i + 4],
        ]);
      } else {
        media = elevations[i];
      }

      const temp = 0.75 * last + 0.25 * media;
      if (temp - last > 0) {
        elevationSum += temp - last;
      }
      last = temp;
    }

关键是它无论如何都不起作用。

这是一个可以从 GPX 文件完美计算的网站(我找不到寻求帮助的联系人): https://www.trackreport.net

感谢任何改进代码的想法!

【问题讨论】:

  • 您是否尝试过使用 moving average 之类的东西来平滑数据点?
  • 我今天试过了,但它适用于某些类型的路线,而不适用于其他类型。
  • 你有关于海拔高度的样本数据点吗?

标签: javascript gps kalman-filter elevation


【解决方案1】:

我使用指数移动平均线来平滑阵列,然后我使用 1 米来忽略错误!

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2012-10-24
    • 2023-03-23
    • 2015-02-26
    • 2013-05-24
    相关资源
    最近更新 更多