问题标签 [douglas-peucker]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 在 R 语言中找不到“DouglasPeuckerEpsilon”
我正在尝试在 R 中使用 Douglas Peucker 算法。通过执行以下代码,我收到以下错误:
这是因为我没有安装DP包吗?
algorithm - 增量线简化
网上有很多关于普通线路简化的资料,
https://www.jasondavies.com/simplify/
https://bost.ocks.org/mike/simplify/
http://geomalgorithms.com/a16-_decimate-1.html
http://mourner.github.io/simplify-js/
即当简化点预先知道时。Visvalingam 的算法,Douglas-Peucker 算法,但是如果容差参数是固定的并且预先不知道点怎么办。我有很多点,我不想运行 N * Log(N) 算法 M 千次,而是希望它逐步处理我的集合,交点无关紧要,重点只是减少具有最小视觉影响的数据集的大小是否有一些聪明的方法来处理这个问题?
algorithm - 如何减少 10k 数据点并在较小的显示器上显示它们?阿杜诺
我正在为我的 DMM 开发一个可视数据记录器,它将每个测量值写入 RS232 接口。在那里我连接了一个 Teensy 3.6 并收集数据点。对于每个点,我都有时间戳和测量值。我将收集 10.000 个读数。我想以两种方式在显示器(800x480)上显示测量数据。首先作为滚动图,从右到左滚动并显示最后一分钟左右。这工作正常。
其次,我想总共显示所有收集的测量值(最多 10k 点)。所以我必须缩小或压缩数据,但我想保留曲线的形状。为了让您了解它的外观,请观看 Dave 在 YT 上关于 EEV 的视频 ( https://youtu.be/SObqPuUozNo ) 并跳至 41:20。在那里,您可以看到另一个 DMM 如何缩小传入数据并显示它。大约在 1:01:05 10k 测量值显示在仅 400 像素宽的显示区域上。
问题是,这是怎么做到的?我听说过 Douglas-Pucker 算法,但不知道这是否是正确的方法以及如何在 Arduino/Teensy 平台上使用它。
非常欢迎任何帮助,谢谢......
python - 带 GPS 的 Ramer-Douglas-Peucker 算法
我有 GPS 数据,可以靠近北极/南极并且可以移动数千公里。
如果我建立一个距离矩阵,例如:
我可以在上面应用 Ramer-Douglas-Peucker 算法吗?
我总是将一组 x,y 坐标作为 RDP 算法的输入,但在我的情况下,不存在保留距离的转换。
c# - 查找形状上的角/边(可以定义该形状的最小顶点)
我正在尝试获得以下形状的角:
我所说的角落是指这个(红点):
可以定义此形状的最小点数。
我已经实现了以下内容:
这适用于矩形形状,但旋转后的形状非常清晰,因此,此代码效果不佳:
- 蓝色像素(在这张照片和下面的照片中)是方法
vertices
处理的变量Optimize
。 - 绿色像素是检测到的角/边缘(在两张照片上)。
但是形状的锐度只定义了侧倾,那么我该怎么做才能改善呢?
另外,我已经测试了 Accord.NET BaseCornersDetector 继承的类,但是使用HarrisCornersDetector获得了最好的结果,但是:
许多边缘/角落是不必要的,它们不在需要的地方(见第一张照片)。
c# - 沿路径螺旋绘制点
好吧,我正在尝试优化我在这里所做的(平滑不同幅度的噪声(第 2 部分))。
因此,我从头开始(https://youtu.be/o7pVEXhh3TI)做了一个新的实现来绘制路径:
这就是 DrawLines 的实际作用:
这是Bresenham 算法的一个实现。
这个实现更好,因为我已经将迭代从 280k 降低到 6k,但是有一个问题,你可以看到这是不准确的......
首先工作的方式是获取形状上每个段的垂直线(绿色像素),然后在该段的起点和终点之间画线。使用Ramer-Douglas-Peucker 算法获得分段。
所以我想画出螺旋状的“橙色”路径。我不知道如何解释这一点,基本上,获得相同的路径,但是有一个比例(翻译/转换?从其中心开始的点列表,带有偏移/距离),但我认为我会有同样的错误。
任何指南将不胜感激。我可以使用什么算法来绘制带有“层”的路径?
javascript - 有没有办法减少复杂封闭 SVG 路径中的坐标数?
我想做的是采用封闭路径(在本例中为地图区域)绘制的 SVG 形状,并减少点数以创建更简单的形状。
我尝试实施 Ramer-Douglas-Peucker 算法来减少点数。例如,这是一个使用 simple.js 库的小提琴:
https://jsfiddle.net/0t3n8762/
在阅读了这个问题之后,如果我理解正确的话,似乎该算法并不是真正设计用于封闭形状而是开放式路径。我尝试将每条路径分成两部分(因此有两条线共同构成整个形状)并在重新组合它们之前在每条路径上运行算法,尽管结果看起来基本相同:
https://jsfiddle.net/caqwL3t7/
可能(并且确实很可能)我只是没有掌握算法应该如何工作并且正在错误地实现它。或者也许我应该尝试一种完全不同的方法。
我想要制作的是一条更简单的路径,它仍然保留原始的整体形状,用更少的点绘制。实际结果是扭曲的形状,与原始形状几乎没有共同之处。
go - Golang 简化折线数据
我正在使用 golang 拉取巨大的geojson数据集,我想知道 golang 是否有类似 simple.js 的东西,这会减少折线中的点数同时保持其形状?