【发布时间】:2010-10-08 03:13:57
【问题描述】:
我在互联网上四处寻找,找不到解决这个特定问题的完美算法:
我们的客户有一组点和重量数据以及每个点,如下图所示:
weighted points http://chakrit.net/files/stackoverflow/so_heightmap_points.png
其中,我们有一个 GIS 程序,可以从这些点及其权重值生成“高度图”或某种地形数据,但由于我们有近一千个数据点并且这些数据会随着时间而变化,所以我们希望创建我们自己的工具来自动生成这些高度图。
到目前为止,我已尝试使用Sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2) 计算每个像素到最近数据点的距离的权重,并将权重和距离因子应用于数据点的颜色以生成该特定像素的渐变颜色:
heightmap result http://chakrit.net/files/stackoverflow/so_heightmap_result.png
您可以看到,某些数据点的配置仍然存在问题,当数据点很多时,算法有时会生成一个相当多边形的图像。理想的结果应该看起来更像一个省略号,而不是一个多边形。
这是来自维基百科关于梯度上升的文章的一个示例图片,它展示了我想要的结果:
mountains http://chakrit.net/files/stackoverflow/so_gradient_descent.png
梯度上升算法不是我感兴趣的。我对什么感兴趣;是首先计算该图片中的原始函数的算法,提供具有权重的数据点。
我没有上过任何拓扑数学课程,但我可以做一些微积分。我想我可能遗漏了一些东西,并且不知道应该在那个 Google 搜索框中输入什么内容。
我需要一些指示。
谢谢!
【问题讨论】:
-
您希望生成的地形有多平滑?你有负位移和正位移吗?我假设重量不是指直接占据的“小山”而是最大点。
-
@ShuggyCoUk 1. 尽可能流畅,没有太多复杂性。 2. 所有值都是正数。 3. 是的,它可以解释为山的最大点并且仍然是正确的。
-
@chakrit 图片链接已损坏,请尽可能修复它们
标签: algorithm gis geospatial arcgis heatmap