php+判断上升下降,PHP通过GPX循环计算轨道的总上升/下降

博主正在寻求一种更精确的方法来计算GPX文件中轨迹的总上升和下降。他们当前的代码通过比较相邻点的海拔差异来估算,但发现这在平坦路段上产生了不准确的结果。为了解决这个问题,他们希望找到一个方法来减少因微小海拔变化引起的误差积累,尤其是在没有明显地形变化的路段上。目标是确保在实际平坦路线上的总上升和下降接近零。
摘要由CSDN通过智能技术生成

我想通过gpx文件循环并计算总上升和下降.我有一个函数可以计算两组lat长点之间的高程差异,我设置了simplexml来读取&循环遍历gpx文件trkseg点.

问题是,这不准确(实际上并不准确).

这两条线将导致不同的上升和下降,就像在现实生活中一样:

$total_ascent += ($val - $last_elevation);

$total_descent += ($val - $last_elevation);

有人知道,如何更精确地计算轨道的总上升和下降?

这是我当前的代码片段来计算它($track_elevations是一个包含整个轨道高程的数组):

if (!empty($track_elevations)) {

$total_ascent = $total_descent = 0

$lowest_elevation = $highest_elevation = $last_elevation = null;

foreach ($track_elevations as &$val) {

if (!is_null($last_elevation)) {

if ($last_elevation < $val) {

$total_ascent += ($val - $last_elevation);

}

elseif ($last_elevation > $val) {

$total_descent += ($last_elevation - $val);

}

}

if (is_null($lowest_elevation) or $lowest_elevation > $val) {

$lowest_elevation = $val;

}

if (is_null($highest_elevation) or $highest_elevation < $val) {

$highest_elevation = $val;

}

$last_elevation = $val;

}

}

$track_elevations数组的示例:

$track_elevations = array(

327.46,

328.27,

329.32,

330.11,

329.46,

329.39,

329.68,

331.04,

333.23,

333.46,

332.97,

332.88,

332.99,

332.75,

332.74,

334.01,

333.62

)

实际上,我在平路上骑自行车.但是我的代码片段会计算,我已经上升并下降了几米.也许我应该在两个高程之间添加一些精度限制……

我想要实现的目标:

我会尝试更好地解释它 – 当我骑车时.在平坦的道路上20公里(几乎没有上升和下降),总上升和下降应该接近0.但是当我总结$track_elevations(就像在我的代码片段中)时,我将获得$total_ascent和$total_descent f.e. 500米…因为$track_elevations中的每个数组元素之间是差异几厘米,但我仍然骑在平坦的道路上…而在总和中它会聚集到大量的米…希望现在它更清楚了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值