michunrong123的个人博客分享 http://blog.sciencenet.cn/u/michunrong123

博文

如何计算多个方位角(Cardinal direction)的均值--R

已有 8158 次阅读 2017-12-31 21:47 |个人分类:科研软件|系统分类:科研笔记| 迁徙, 风向

方位角指从某点的真北方向起,按顺时针方向到目标方向之间水平夹角(1)。

计算多个方位角的平均值时,求的并不是算数平均值。

譬如1°和359°的均值应是0°或360°,而不是(1+359)/2=180。

方位角的运算应用向量(矢量)运算,下文是在R中计算多个方位角的均值的代码,目的是做记录,详细解释可参考(2)。

    # 读取数据

data.alb <- read.csv("..../data.csv")

# 将要计算的方向转化为横纵方向的数值 u(东西,水平),v(南北,垂直), ws指风速,

#wd指风向

data.alb$u.wind <-  data.alb$ws * sin(2 * pi * data.alb$wd/360)

data.alb$v.wind <-  data.alb$ws * cos(2 * pi * data.alb$wd/360)

#分别计算u,v方向风的均值

mean.u <- mean(data.alb$u.wind, na.rm = T)

mean.v <- mean(data.alb$v.wind, na.rm = T)


#用atan2将u,v方向的风的均值转换为实际的方向和速度

#计算风向

wd.average <- (atan2(mean.u, mean.v) * 360/2/pi) + 180
wd.average

# 计算风速
ws.vector.average <- ((mean.u^2 + mean.v^2)^0.5)
ws.vector.average


##############################################################

###注意这里求的是风向,与一般的移动方向、飞行方向不同。

举个例子:风向为90°,指的是风从90°方向吹来;移动方向90°,指的是向90°方向移动。

上式风向计算末尾+180,适用于风向;若是计算移动方向,不用加或结果为负数时+360。



完毕。

20171231下午



1. https://baike.baidu.com/item/%E6%96%B9%E4%BD%8D%E8%A7%92/493239?fr=aladdin)

2. https://www.researchgate.net/profile/Stuart_Grange2/publication/262766424_Technical_note_Averaging_wind_speeds_and_directions/links/54f6184f0cf27d8ed71d5bd4/Technical-note-Averaging-wind-speeds-and-directions.pdf



https://blog.sciencenet.cn/blog-704337-1092408.html

上一篇:R 如何将NetCDF (nc)格式数据分层转存为asc格式
下一篇:如何计算多个方位角(Cardinal direction)的均值--R---补充
收藏 IP: 185.113.97.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-29 09:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部