我正在尝试
set97 <- gIntersection(setbp,d97)
并收到错误消息:
Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") :
TopologyException: found non-noded intersection between LINESTRING (533036 -314770, 533036 -314770) and LINESTRING (533036 -314780, 533036 -314770) at 533035.88110651996 -314769.97350772272
(setbp是一个县的一个部门 - 用于人口普查目的 - 而d97是巴西亚马逊直到1997年的砍伐森林。)当我这样做时
gIsValid(d97)
gIsValid(setbp)
gIntersects(setbp,d97)
我对所有三个问题都是正确的。那么,怎么了?我将尝试gBuffer的宽度为0(它解决了一些问题),但我想了解发生了什么。
编辑:gBuffer没有用。 @mdsumner建议我逐行执行gIntersection,但到目前为止(在尝试了3种不同的方法之后),它也不起作用(查看注释)。更奇怪的是,TopologyException是由gIsValid未检测到的几何奇怪的“条带”引起的,更糟糕的是,距交叉多边形(上面的setbp,注释中的setbpi)几公里。我会尝试here显示的功能,虽然它似乎不是一个舍入问题。