【问题标题】:Polyline simplification折线简化
【发布时间】:2018-09-17 20:40:24
【问题描述】:
我正在尝试理解this 代码。
我的理解是,代码会尝试根据公差来优化几何。基本上它检查两点之间的距离是否小于公差,并相应地保留/删除这些点。
不过我有一个问题。点是经纬度格式。该代码只是计算欧几里得距离的平方(我们都知道的简单平方公式)。这不是一种错误的方法,因为基于纬度的距离与欧几里得距离不同吗?
第二,公差的单位是什么?在这个test 中,使用了公差值 5。这个值如何适应这里?
【问题讨论】:
标签:
javascript
gis
polyline
【解决方案1】:
我的理解是,代码会尝试根据公差来优化几何。基本上它检查两点之间的距离是否小于公差,并根据需要保留/删除点。
是的,这是第一步,在第二步中,它会尝试找到(基本上)对齐的连续行并将它们合并。
不过我有一个问题。点采用经纬度格式。代码只是计算欧几里得距离的平方(我们都知道的简单平方公式)。这不是一种错误的方法,因为基于经纬度的距离与欧几里得距离不同吗?
(c) 2017, Vladimir Agafonkin
Simplify.js, a high-performance JS polyline simplification library
该代码并不声称适用于 lat-lng 坐标。虽然它们看起来像 2d 坐标,但它们代表 3d 空间中的点;我没有看到代码是为此而编写的。
另一方面,将其重写为 3d 空间应该不会太复杂。然后您所要做的就是将您的 lat-lng 点转换为 3d-coordiantes
第二,公差的单位是什么?在测试中,使用公差值 5。这个值如何适应这里?
像素,英里,没关系。与您通过的点相同的单位。