当两个相同的SpatVector对象在union
下组合时,将创建与原始对象相同的新SpatVector对象。这是预期的行为。
a = terra::vect(cbind(c(0, 0, 1, 1, 0), c(0, 1, 1, 0, 0)), type = "polygons", crs = "local")
terra::union(a, a)
all.equal(a, terra::union(a, a)) # TRUE
但是,合并范围为零的SpatVector对象时,会添加其他尺寸。
b = terra::vect(cbind(rep(0, 5), rep(0, 5)), type = "polygons", crs = "local")
terra::union(b, b)
all.equal(b, terra::union(b, b)) # Not true (lengths differ).
为什么零范围的SpatVectors处理方式不同?有没有可能把这些优雅地融合在一起?我的用例包括添加一系列SpatVectors来创建一个复合对象,其中包含任何/所有组件的最大范围。零区对象不应该添加任何内容,因此terra::union(a, b)
应该与a
相同。有人能帮我到那里吗?
1条答案
按热度按时间j91ykkif1#
可能是因为您正在合并两个无效多边形。
既然他们是无效的,你不能做一个工会,你得到他们两个回来?这是一个奇怪的角落错误,你可以report。
下面是一个解决方法: