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