【问题标题】:Something in areapl() function that I can't understand in R我在 R 中无法理解的 areapl() 函数中的某些内容
【发布时间】:2014-10-28 17:10:04
【问题描述】:

我正在尝试学习如何使用 R 包中的一些函数来计算面积。 areapl() 是我在 splancs 包中找到的第一个。帮助文件末尾有一个示例:

x <- c(1,0,0,1,1,1,1,3,3,1)
y <- c(0,0,1,1,0,0,-1,-1,0,0)
m <- cbind(x, y)
plot(m, type="b")
areapl(m)
areapl(m[1:5,])
areapl(m[6:10,])

显然areapl(m[1:5,]) 和areapl(m[6:10,]) 的答案是我们所期望的,但是当我尝试这个areapl(m) 时,它给了我1 作为答案。我的预期是areapl(m[1:5,]) 和areapl(m[6:10,]) 的总和应该是3,而不是两个区域的差。

谁能帮我理解这个函数是如何工作的?

非常感谢您的帮助。

【问题讨论】:

  • 来自?areapl - "计算多边形的面积。如果多边形自相交,则面积将不正确。跨度>
  • 自相交是指重叠吗?我也尝试过其他选项,只要一个图中有两个区域,结果就不会正确。
  • 事实上,多边形本身会加倍。例如,您可以定义与提供3 区域相同的形状,例如:x &lt;- c(1,0,0,1,1 ,3, 3, 1,1);y &lt;- c(0,0,1,1,0,0,-1,-1,0);
  • 我明白了,谢谢您的帮助

标签: r polygon area


【解决方案1】:

您必须保持积分的顺序(顺时针或逆时针)。试试:

   x[6:10]<-x[10:6]
   y[6:10]<-y[10:6]
   m <- cbind(x, y)
   areapl(m)

我没有安装splancs,也没有对其进行测试。但是,我用其他多边形库对其进行了测试,所以我很确定这就是问题所在。您顺时针提供了第一个多边形的点,逆时针提供了第二个多边形的点。试着保持连贯,你应该没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多