11

我有一个存储为栅格的高程图。我想将平滑的“矢量”曲线拟合到恒定高度的轮廓。在我的应用程序中,数据实际上是地理海拔,但问题可以推广到两个变量的任何函数。

如果有帮助,我可以生成另一个具有抗锯齿轮廓线的栅格,并将其用作矢量拟合过程的输入。

这个问题很相似,但我正在寻找一个可以在我的 Java 应用程序中使用的免费库,或者我(非数学家)可以自己实现的算法的解释。此外,就我而言,我已经找到了我关心的所有“边缘”——我只需要将它们矢量化。

另一个问题涉及我的问题,但发帖人从未返回解释他如何实施最后一步,这是我缺少的部分。

4

3 回答 3

3

您可能想要拟合封闭的贝塞尔样条曲线(曲线)。

有一个带有 Java 小程序的页面可以做到这一点。看看他们的(未注释的,bleh)PSegment.java

如果这不能很好地完成这项工作,那么通过平方距离最小化将 B 样条曲线拟合到点云对于该任务来说应该是多余的。

有关更多信息,谷歌(学者)搜索“b样条拟合”和“封闭贝塞尔样条”之类的东西应该会有所帮助。

于 2009-02-10T20:05:42.547 回答
2

MATLAB 使用等高线图执行此操作:查看contour函数——它从 f(x,y) 数据网格生成等高线数据。我对他们使用的算法了解不多(他们确实有一个讨论它的页面),但也许值得看看Octave 等价物

一篇关于等高线绘图的论文和一个基于该论文的CodeProject 页面。

于 2009-02-10T21:50:38.770 回答
1

我使用GDAL。在我看来,您可能不想创建 Bézier 样条曲线,这会增加复杂性。短线段就足够了。

唯一的问题是您必须在数据准备时创建轮廓,而不是在您的 Java 应用程序中。

这是一张使用 GDAL从USGS 高度数据创建的一些等高线的地图:

在此处输入图像描述

于 2012-12-24T19:59:50.327 回答