从GRASS 7.2.2切换到7.6.1后,v.overlay(operator = or)引发错误“尚不支持带点的交叉点”。从更早的question中,我收集到这是由面积为0的多边形引起的。在7.2.2中,v.overlay操作提到它遇到面积为0的多边形并跳过它们。
GRASS 7.6.1的变更日志指出,v.overlay改善了复杂叠加的性能(这就是为什么我想使用它),但是这可能也改变了area = 0的多边形的处理方式。>
使用rmsa,break,snap,rmdangle,rmline,rmdupl,rmdac,rmarea工具进行v.clean操作不会删除area = 0的多边形。删除area = 0的要素(使用v.to计算面积后.db)也不起作用。
下面的代码示例。 overlay2是先前的overlay函数的产品,不会抛出错误。 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的多边形吗?