我正在尝试在Flask应用程序中创建一个天气小部件。我被困在工作与风向度(角度)。你知道吗
如果我们使用以下图像作为表示:
当我们在风向上工作时,我们被限制在360度范围内。我想根据风向在360度范围内指定一个图标,以帮助您了解以下信息:
| Cardinal Direction | Degree Direction |
|:------------------:|------------------|
| N | 348.75 - 11.25 |
| NNE | 11.25 - 33.75 |
| NE | 33.75 - 56.25 |
| ENE | 56.25 - 78.75 |
| E | 78.75 - 101.25 |
| ESE | 101.25 - 123.75 |
| SE | 123.75 - 146.25 |
| SSE | 146.25 - 168.75 |
| S | 168.75 - 191.25 |
| SSW | 191.25 - 213.75 |
| SW | 213.75 - 236.25 |
| WSW | 236.25 - 258.75 |
| W | 258.75 - 281.25 |
| WNW | 281.25 - 303.75 |
| NW | 303.75 - 326.25 |
| NNW | 326.25 - 348.75 |
我将把键/值存储在dict中,并创建一个if-elif-else循环,该循环将执行以下操作:
from numpy import arange
degrees = the_json_response['wind']['deg']
wind_directions = {
'N': arange(348.75, 11.25, 0.25),
...
}
degrees_range = range(0, 360)
if degrees in wind_direction['N']:
dirction = north_icon
elif degrees in wind_direction['NNE']:
direction = north_north_east_icon
以上只是伪代码。。总而言之,我该如何应用它,使我们只在360度范围内工作,因为很明显,它在北风方向工作时会抛出错误,因为它在348.75-11.25范围内,我们需要告诉它我们在360度范围内工作。你知道吗
我一辈子都搞不懂的原因是我从来没有学过复杂的数学(对我来说就是这样)。如果有人对我如何更好地应用这些建议有什么建议,我会非常乐意接受这些建议。你知道吗
这里有一个想法:您可以检查度数范围的上限是否低于下限,然后在两步过程中创建
arange
。例如:348.75, 11.25
是上限11.25
小于下限348.75
的唯一情况,这意味着由于周期性,360
介于两者之间。对于所有其他度数范围和方向,上限大于下限。因此,您可以创建N
,在一个范围中包含360
,在另一个范围中包含其余的值。你知道吗只是个想法,也许你可以改进一下。你知道吗
若要将任何数字包装到特定范围,请使用模(
%
):How does % work in Python?。幸运的是,python实现使结果的符号始终等于右操作数。以下是一些示例,说明了模如何将所有内容包装到所需的范围:鉴于此,很容易将任何度值映射到字母缩写。每个缩写代表一个22.5度宽的窗口。窗口从零偏移了11.25度,所以我们可以通过
该索引将始终是一个介于0和15之间的数字。您可以直接使用它索引指南针的点列表,而无需任何词典或昂贵的搜索:
这是因为你所有的箱子都是一样大小的。如果你想要罗盘上更多的点数,你可以把11.25和22.5减半。如果你有不相等的箱子,你最好的办法是使用模来规范化你的输入,然后在箱子边缘做一个二进制搜索。你知道吗
相关问题 更多 >
编程相关推荐