我正在将几个函数从
sp
包转换为terra
,但在计算多边形面积时遇到了不一致的问题。下面的代码示例展示了我的问题。x = seq(0, 2 * pi, length.out = 100)
circle = cbind(sin(x), cos(x))
# sp/rgeos version
poly.1 = sp::SpatialPolygons(list(sp::Polygons( list(sp::Polygon(circle) ), "circle")))
area.1 = rgeos::gArea(poly.1)
# terra version
poly.2 = terra::vect(circle, type = "polygons", crs = "local")
area.2 = terra::expanse(poly.2, transform = F)
area.1 - area.2 # != 0
我已经了解到 poly.1
和 poly.2
应该描述的是同一个多边形。但每个多边形的面积计算结果不同(相似,但足以与现有代码兼容性不良)。
有人可以指出我是否做错了什么吗?还是有什么方法可以让terra
提供与area.1
相同的值?