我一直在使用rgeos的setdiff()多年,但我发现重做工作的怪癖。我基本上想要做的是在Akima生成的图像映射上覆盖透明孔。 我发现我需要指定一个比要切割孔的多边形略大的孔顶点。 这是示例脚本: 库(rgeos)
将“maxy”更改为2.1可提供所需的效果。为什么不用于1.9?
maxy <- 1.9
maxy <- 2.1
x1 <- c(1, 1, 2, 2, 1)
y1 <- c(1, 2, 2, 1, 1)
xy1 <- cbind(x1, y1)
p1 <- as(xy1, "gpc.poly")
plot(p1, main="p1")
x2 <- c(1.1, 1.5, 1.9, 1.1)
y2 <- c(1.1, maxy, 1.1, 1.1) # NOTE: 'maxy' is here!
xy2 <- cbind(x2, y2)
p2 <- as(xy2, "gpc.poly")
plot(p2, main="p2")
plot(setdiff(p1, p2),
poly.args = list(col = "grey"),
main="setdiff(p1, p2)", asp=1)
如果无法解决这个问题,还有另一种方法可以解决这个问题吗?
提前致谢。