1

从 GRASS 7.2.2 切换到 7.6.1 后,v.overlay (operator=or) 会引发错误“尚不支持与点的交叉点”。从这个较早的问题中,我了解到这是由面积为 0 的多边形引起的。在 7.2.2 中,v.overlay 操作提到它遇到面积 = 0 的多边形并跳过它们。

GRASS 7.6.1 的更新日志指出 v.overlay 提高了复杂叠加层的性能(这就是我想使用它的原因),但这可能也改变了对面积 = 0 的多边形的处理。

使用工具 rmsa,break,snap,rmdangle,rmline,rmdupl,rmdac,rmarea 的 v.clean 操作不会删除面积 = 0 的多边形。删除面积 = 0 的要素(使用 v.to.db 计算面积后)也不起作用。

下面的代码示例。overlay2 是先前覆盖函数的产物,不会引发错误。overlay2 已经包含 area=0 的多边形,因此在 v.clean 操作期间不会创建这些多边形

v.clean input=overlay2 output=overlay2_clean type=area error=overlay2_error_clean tool=rmsa,break,snap,rmdangle,rmline,rmdupl,rmdac,rmarea threshold=0.001 --overwrite

v.overlay.exe ainput=overlay2_clean alayer=1 atype=area binput=newinput blayer=1 btype=area output=overlay3 operator=or snap=0.001 --overwrite

任何人都知道如何在执行 v.overlay 函数之前删除 area = 0 的多边形?

4

0 回答 0