在轮廓图中平滑多边形?
这是等高线图,所有级别的多边形都可用。 让我们问问如何平滑多边形,使所有顶点保留在其精确位置? 实际上,轮廓是在网格数据的顶部制作的,您可能会建议然后对网格数据进行平滑处理,因此最终的轮廓将更加平滑。请注意,这并不是我所希望的,因为诸如高斯滤波器之类的平滑功能将删除少量数据,并将更改第三个变量的范围,例如在我的应用程序中不允许的高度。 实际上,我正在寻找一段代码(最好在Python中),该代码可以使2D多边形(任何类型:凸形,凹形,自相交等)平滑化,并且相当容易(忘记代码页)并且准确。 仅供参考,ArcGIS中有一个功能可以完美地做到这一点,但是对于这个问题,我不是选择使用第三方商业应用程序。 1) Scipy.interpolate: 如您所见,样条曲线(红色)不令人满意! 2) 这是使用此处给出的代码得到的结果。运行不正常! 3) 对我来说,最好的解决方案应该是如下图所示,其中仅通过更改一个值即可逐渐平滑正方形。我希望有类似的概念可以平滑任何形式的多边形。 满足样条通过点的条件: 4) 这是我在数据上逐行在Python中实现“ whuber的想法” 的方法。由于结果不好,可能存在一些错误。 K = 2是一场灾难,因此对于k> = 4。 5) 我在有问题的位置上删除了一个点,现在所得到的样条曲线与凸纹样条相同。但这仍然是一个问题,为什么该方法不适用于所有情况? 6) 可以通过以下方式很好地平滑whuber的数据(由矢量图形软件绘制),其中平滑添加了一个额外的点(与更新比较) 4): 7) 有关某些标志性形状,请参见Python版本的Whuber代码的结果: 请注意,该方法似乎不适用于折线。对于角折线(轮廓),绿色是我想要的,但变成红色。这需要解决,因为等高线图总是多段线,尽管闭合的多段线可以像我的示例中那样视为多边形。还不是更新4中出现的问题尚未解决。 8)[我的最后一个] 这是最终的解决方案(不完美!): 请记住,您将不得不对恒星所指向的区域执行某些操作。我的代码中可能存在错误,或者建议的方法需要进一步开发以考虑所有情况并提供所需的输出。