如何将风向以程度转换为指南针方向

经过雅各布·戴维斯|更新:2016年1月6日|评论:2

搜索博客


订阅博客

在发布新的博客文章时,设置您的偏好,以接收电子邮件通知,以匹配您感兴趣的领域。


区域 /申请

产品分类

活动

公司 /新闻

输入你的电子邮箱地址:



建议一篇文章

您想了解更多有关有关的话题吗?让我们知道。请尽可能具体。

将这个领域空白

风向标

筛选以度列出的风向数据时,您会感到迷失吗?例如,您能在想象自己的心中哪个方向195度?如果您的数据记录器可以将数据放在指南针方向上,会更容易吗?在本文中,我将与您分享一种简单的方法,可以使用CRBASIC编程语言将风向数据从学位转换为指南针方向。

指南针和学位

如果您像我一样,指南针的方向(北,南,东和西)比学位更容易理解。例如,如果有人问我前进的路线,我不会说:“ 270度的前进五个街区。”对我来说,这更容易,如果我说,失落的司机“去西边五个街区”。

同样,在描述风向时,指南针点往往比学位更容易理解。气象学家在天气预报中使用指南针点,因为人们更容易可视化和记住。例如,气象学家可能会说:“风暴将从西方吹进去。”

就风向而言,既幸运又不幸的是,数据记录仪不会像我们人类那样“思考”。

  • 幸运的是,我们的数据记录器扫描我们的传感器,将测量值转换为电信号,并以程度存储数据,这些数据比指南针方向更精确。
  • 不幸的是,我们可能会努力脱离有程度的风向数据。

使用索引数组

为了脱离风向数据,lET在我们的转换过程中开始。为了将学位转换为指南针方向,我首先将指南针分为16个扇区,分别为22.5度。这些部门就像派的切片,以指南针为中心。

提示:如果您想使用八个扇区而不是16个扇区,则使用一个较短的查找表,则除以45度而不是22.5度。

要进行转换,我使用索引数组作为查找表,而不是案子操作说明。我更喜欢索引的数组,因为代码比A的代码更快,更紧凑案子操作说明。此外,索引阵列适用于均匀间隔的数据箱,例如一组数量。(数据箱是数字范围的类别。)相反,案子对于数据箱不均匀间隔的应用,指导是一个更好的选择,例如确定将水描述为热,温暖或冷的温度范围。(“热”和“冷”值将是较大的垃圾箱,“温暖”将是一个较小的垃圾箱。)

由于指南针上的北部可以描述为0度或360度,因此我们必须为其使用两个数据箱。这意味着,对于我们的16个指南针扇区,我们实际上在查找表中需要17个值。第一个值和最后一个值均为北方。下表显示了具有16个不同指南针扇区的17个值:

指南针部门

1

n

2

nne

3

NE

4

5

e

6

ESE

7

se

8

SSE

9

s

10

SSW

11

SW

12

WSW

13

w

14

wnw

15

西北

16

nnw

17

n

您可以将数据记录程序中的数组用作查找表。填充数组的一种简单方法是分配初始值。确保您使用类型细绳并将每个值包装在报价中。代码线有点长,但是很简单:

DIM扇区(17)为字符串 * 3 = {“ n”,“ nne”,“ ne”,“ ene”,“ e”,“ es”,“ se”,“ sse”,“ sse”,“ s”,“ s”,“ ssw”,“ SW”,“ WSW”,“ W”,“ WNW”,“ NW”,“ NNW”,“ N”}

执行Modulo部门

现在,我们需要将风向转换为与数组中17个索引值相对应的整数值。

为了将风向限制在360度,我们需要执行模量操作以在将总学位除以360后找到其余部分。

例如,如果我们正在使用405度,我们将该值除以360。这样做为我们提供了1个,其余(或模量)为45:

  • 405 /360 = 1,剩余45
  • 这可以写为405 mod 360 = 45。

在此示例中,其余45度是需要转换为指南针的方向。

笔记:尽管大多数传感器都不需要此步骤,但是如果您将其包含在程序中,则不会引起任何问题。

与数组匹配

如果我们将风向除以22.5(每个扇区的度)和圆形,我们的数字范围从0到16。

index = winddir mod 360 index = round(index/ 22.5,0)+1 compassdir = sector(index)

在上一个示例中,如果我们以45度的剩余时间除以22.5,我们将获得2:2:

  • 45 / 22.5 = 2

如果我们添加1,结果为3:

  • 2 + 1 = 3

在我们的表上,“ 3”的值对应于“ ne”的方向。

因此,我们的剩余45度转换为东北方向。

我们可以将整个数学函数放在数组的索引参数中。括号迫使从内而外的操作顺序:

COMPANSDIR =扇区(圆形((Winddir mod 360)/ 22.5,0)+1)

将程序放在一起

将所有部分放在一起,我们将获得以下数据记录程序程序。只需添加您的测量和数据表即可。

'将公共变量宣布为float单位winddir = digrees dim sector(17)为字符串 * 3 = {“ n”,“ nne”,“ ne”,“ ne”,“ ene”,“ ene”,“ e”,“ e”,“ es”,“ se”,“ se”,“ SSE”,“ S”,“ SSW”,“ SW”,“ WSW”,“ W”,“ WNW”,“ NW”,“ NNW”,“ N”} public Compassdir作为字符串 * 3'主要程序BeginProg扫描(1,SEC,0,0)'添加风传感器测量在这里CompassDir = sector(圆形((Winddir mod 360)/ 22.5,0)+1)'将风向转向17个扇区。部门1和17都是N. NextScan Endprog

申请想法

在本文中,我希望我能帮助您找到使用一些CRBASIC编程代码更好地理解,使用和共享风向数据的方法。如果你有我们的RTMC软件产品,该软件能够获取风向数据,并将学位直接转换为指南针显示。

随意分享您想使用指南针点来报告风向的情况。您能想到可以使用此方法的类似案例带有均匀间隔的数据箱吗?在下面发布您的想法。


分享这篇文章



关于作者

雅各布·戴维斯雅各布·戴维斯(Jacob Davis)是坎贝尔科学公司(Campbell Scientific万博matex网页登录,Inc。)的技术支持经理。他指导一群才华横溢的技术支持工程师。他的专长包括串行通信和高级数据记录程序编程。雅各布拥有水文学硕士学位,并在进入坎贝尔科学公司之前与大型灌溉项目合作。万博matex网页登录

查看该作者的所有文章。


评论

Thiago|10/31/2018在01:11 pm

好贴。

如何将计算指南数据写入表格?

我需要从风传感器E计算出30分钟的平均数据数据,将其从表中写入指南针数据。我不知道该怎么做。

杰达维斯|2018年10月31日下午01:29

指南针扇区是字符串变量,只能通过示例指令将其保存到表中。困难,在您的情况下,必须先计算风的矢量平均值。可以从数据表中读取值。但是,您无法将该指南针扇区保存到同一桌子上。

以前,我们通过仅与风车向量制作桌子来解决局限性。然后,您将其读取该值,并可以在主表中使用其他数据保存。GetRecord是从表中读取值的最简单方法。

登录或注册评论。

我们活跃于社交媒体上!
通过在这些平台上关注我们,请了解我们的最新更新:

Baidu