Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 将地图上的点转换为多边形_Algorithm_Polygon_Point - Fatal编程技术网

Algorithm 将地图上的点转换为多边形

Algorithm 将地图上的点转换为多边形,algorithm,polygon,point,Algorithm,Polygon,Point,我们在地图上有数千个点。这些点是随着人的移动而定期进行的测量,因此每个点在窗口内的位置是随机的,但当您查看数据时,可以看到所采取的路径。 为了更快地渲染数据(现在是段塞),我想将聚集点转换为多边形并绘制它们(我可以通过为缩放级别拾取正确的多边形细节来处理丢失的细节) 有什么好的快速算法可以做这样的事情吗?我认为不可能知道所走的确切路径,但假设距离给定点最近的点是路径上的下一点是一个相当合理的假设。我不确定你要处理的多边形的大小,但最终你会计算出地图上哪个点与当前点最接近,而那个点将是多边形中的下

我们在地图上有数千个点。这些点是随着人的移动而定期进行的测量,因此每个点在窗口内的位置是随机的,但当您查看数据时,可以看到所采取的路径。 为了更快地渲染数据(现在是段塞),我想将聚集点转换为多边形并绘制它们(我可以通过为缩放级别拾取正确的多边形细节来处理丢失的细节)


有什么好的快速算法可以做这样的事情吗?

我认为不可能知道所走的确切路径,但假设距离给定点最近的点是路径上的下一点是一个相当合理的假设。我不确定你要处理的多边形的大小,但最终你会计算出地图上哪个点与当前点最接近,而那个点将是多边形中的下一个点。如果多边形非常大,则需要计算点之间的大圆距离以确保精度。

您希望多边形表示什么?您是指覆盖移动路径区域(即仅边界)的闭合区域中的多边形吗?还是所有访问点之间的直线段的精确多边形?后者的绘制速度不会比点本身快,因为它将是一个具有与点一样多的角的多边形

如果此人在某个区域内走动(例如,配送司机覆盖城市的一部分),则可以通过点的凸包来近似其“覆盖区域”。这是一个封闭的凸多边形,如果数据集中有N个点,则其角点介于3到N个之间

定义

算法


如果您希望对路径进行近似处理,而不是对某个覆盖区域进行近似处理,则始终可以通过(例如)在用户进一步放大时,每7个点绘制一次,然后每5个点绘制一次,然后每3个点绘制一次,来生成粗略的LOD算法。更复杂的LOD算法可以从点p0和p1开始,使用通过这些点的方向,并查看从方向线到p2的距离。如果p2离测线足够近,则跳过该测线,并调查p3。如果行驶方向有足够大的变化,将最后两个点标记为当前路线并重复。允许的方向更改将是LOD参数,用于确定绘制了多少个点。此算法将尝试近似路径上的“重要”点(方向发生变化)。

对于聚集点,您可以使用deck gls hexagon layer,从文档->hexagon layer根据点阵列渲染六边形热图。它取六边形容器的半径,将点投影到六边形容器中。六边形的颜色和高度按其包含的点数缩放


超级酷的例子->

hmmm。请再次阅读问题。这不完全是你要回答的。我在问是否有一种用多边形逼近一组点的快速算法。是的,但我的回答给了你一种算法。速度快还是慢有待决定。谢谢!我将研究凸包算法。对于未来的读者:类似的问题(有很好的答案)=>