【问题标题】:How to approximate a vector contour from an elevation raster?如何从高程栅格近似矢量轮廓?
【发布时间】:2009-02-10 18:02:48
【问题描述】:

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

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

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

Another question 提到了我的,但发帖人再也没有解释他是如何实现最后一步的,这是我缺少的部分。

【问题讨论】:

  • 不幸的是,谷歌搜索大多以关于如何在 ARCgis 或 Mapview 中执行此操作的页面结束。

标签: java math vector 2d gis


【解决方案1】:

您可能希望适应封闭的贝塞尔样条曲线(曲线)。

有一个page with a Java applet 可以进行这种拟合。看看他们的(未注释的,bleh)PSegment.java

如果这不能很好地完成这项工作,Fitting B-Spline Curves to Point Clouds by Squared Distance Minimization 对于这项任务来说应该是多余的。

有关更多信息,Google(学术)搜索“b 样条拟合”和“封闭贝塞尔样条”之类的内容应该会有所帮助。

【讨论】:

    【解决方案2】:

    MATLAB 使用等高线图执行此操作:请参阅contour 函数——它从 f(x,y) 数据网格生成等高线数据。我对他们使用的算法了解不多(他们确实有page which discusses it),但也许值得看看Octave equivalent

    根据论文有一个thesis on contour plotting 和一个CodeProject page

    【讨论】:

      【解决方案3】:

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

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

      这是一张使用 GDAL 从USGS height data 创建的轮廓的地图:

      【讨论】:

      • 您能提供GDAL中轮廓的示例或链接吗?请
      • 请参阅gdal.org/gdal_contour.html。不幸的是,我还没有三年半前的例子。
      猜你喜欢
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      相关资源
      最近更新 更多