【问题标题】:Calculate area of cross section for varying height计算不同高度的横截面面积
【发布时间】:2018-03-20 11:17:26
【问题描述】:

我试图弄清楚如何计算河流横截面的面积。

对于横截面,我在 5 m 宽的河流上每隔 25 cm 计算深度。

x_profile <- seq(0, 500, 25)
y_profile = c(50, 73, 64, 59, 60, 64, 82, 78, 79, 76, 72, 68, 63, 65, 62, 61, 56, 50, 44, 39, 25)

如果有人对如何在 r 中完成此操作有一些建议,我们将不胜感激。

【问题讨论】:

  • 对我来说这似乎是一个集成问题。我会通过使用线性插值和应用求积公式来处理它(最明显的选择是trapezoidal rule)。该公式基本上简化为istep * depth_i 的总和,其中step = 0.5m

标签: r area integral


【解决方案1】:

我们可以使用sf 包创建一个显示横截面的多边形,然后计算面积。注意,要创建一个多边形,需要在创建矩阵m时再提供三个点c(0, 0)c(500, 0)c(0, 0)

x_profile <- seq(0, 500, 25)
y_profile <- c(50, 73, 64, 59, 60, 64, 82, 78, 79, 76, 72, 
               68, 63, 65, 62, 61, 56, 50, 44, 39, 25)

library(sf)

# Create matrix with coordinates
m <- matrix(c(0, x_profile, 500, 0, 0, -y_profile, 0, 0),
            byrow = FALSE, ncol = 2)

# Create a polygon
poly <- st_polygon(list(m))

# View the polygon
plot(poly)

# Calcualte the area
st_area(poly)
31312.5

【讨论】:

  • 非常感谢!看起来很棒!关于如何计算面积作为水位函数的任何想法,因为水开始填满横截面,从最深点开始?
  • @Nicolle 我还不知道。一种想法是使用显示深度的线来分割多边形并计算面积。
  • @Nicolle 顺便说一句,在有人提供原始问题的答案后更改您的问题不是一个好主意。如果我有时间,我可能会更新我的答案,但我不能保证。
  • 非常抱歉,我明白了。我从来没有打算改变这个问题,我只是想让它更清楚。但我完全明白你的意思。
  • 我接受了你的回答并提出了一个关于计算充水部分的新问题(如果你有时间,link)谢谢你的回答!
猜你喜欢
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
相关资源
最近更新 更多