风玫瑰(Wind Rose)作图及分析
风玫瑰图在风力发电、气象、城市规划乃至保险等领域有着广泛应用,本文简单介绍了风玫瑰图的作图过程和简要的可视化与分析思路。
风玫瑰图
风玫瑰图(wind rose plot)作为一种气象科学的专用图表,是用来定量分析气象要素中风的一种工具。同时,风玫瑰图作为风电场建设前期必不可少的步骤——“风能资源评估”的主要工具,也越来越受到能源部门的建设者和规划者的重视。在风玫瑰图的极坐标系上,每一部分的长度表示该风向出现的频率,最长的部分表示该风向出现的频率最高。风玫瑰图通常分16个方向,也有的再细分为32个方向。因图形似玫瑰花朵,故此得名。
具体而言,风玫瑰图可分为风向玫瑰图和风速玫瑰图,用来简单描述某一地区风向风速的分布。风玫瑰图采用极坐标系来呈现数据,极坐标系下从外向内的方向代表风的方向,某条半径的长度,也就代表了该风向在所有记录中的比例(百分比、频次)。如果半径长度代表的是平均风速的大小,此时风玫瑰图就为风速玫瑰图。
进一步地,风玫瑰图可以同时展现风速和风向两类信息。在风向玫瑰图的基础上,在每一个方向上,如果将半径划分按照不同风速出现的比例加以标注(类似直方图的形式),风速的统计信息就得以呈现出来。
显然,风玫瑰图反映了一个地方的风力特点,“风玫瑰”中最大的花瓣就是当地的主导风向,因此在气候计算、城市规划、风力发电等方面有广泛的应用。同时,风玫瑰图的制作也并不复杂:
- 采集实时风向风速数据(例如,频率5分钟);
- 将采集的风速风向数据统计到各个方向上;
- 进行数据的清洗和规范化,绘制极坐标直方图。
基于windrose的风玫瑰图
导入数据
在Python中,我们将采用windrose库(https://github.com/python-windrose/windrose )来绘制玫瑰图。国内的风速的高频数据没有找到,这里采用美国国家可再生能源实验室(The National Renewable Energy Laboratory, https://www.nrel.gov/ )提供的数据作为示例。
1 | import matplotlib.pyplot as plt |
1 | stn = pd.read_csv(os.getcwd()+'/data/47084-2007.csv', nrows=3, header=None) |
0 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
0 | SiteID | 47084.000000 | Site Timezone | -7.0 | Data Timezone | 0.0 |
1 | Longitude | -106.101776 | NaN | NaN | NaN | NaN |
2 | Latitude | 39.378006 | NaN | NaN | NaN | NaN |
从数据的表头信息可以看出,气象站点位于北纬39.378度,西经106.102度,从地图上可以看出大致位于美国科罗拉多州落基山脉内,距离落基山脉最高峰埃尔伯特峰几十公里,利用Cartopy可以很容易地标出站点位置。
1 | fig = plt.figure(facecolor='grey',figsize=(15, 12)) |
Text(-76.101776, 29.378006, 'Station Location')
可以看到数据的采样频率为5分钟,测量的风速为地表100米高度的风,除风速和方向信息以外,还有风力资源、温度、气压等信息。根据风速和方向,可以进一步得到风速在水平和垂直方向上的分量,u-wind、v-wind分别为水平、垂直方向的风速分量。南北水平方向,东西垂直方向。按上北、下南、左西、右东建立坐标轴,正北为0°,顺时针风向为正:
其中,WS-风速,WD-风向。
1 | df = pd.read_csv(os.getcwd()+'/data/47084-2007.csv', header=3) |
风力数据可视化
首先看一下,风速和风向在一年之内的变化情况、风向的分布(风速的见后)以及风速与风向之间的关系。可以明显观察到以下现象:
- 夏季的风速(6月底~8月底)明显小于其他季节;
- 风向以西风为主,尤以西微偏北居多,夏季西风的比例明显小于其他季节;
- 极端强风主要来自于西风方向。
1 | (ggplot(data=df) + |
1 | (ggplot(data=df) + |
1 | (ggplot(data=df) + |
C:\ProgramData\Anaconda3\lib\site-packages\plotnine\stats\stat_bin.py:93: UserWarning:
'stat_bin()' using 'bins = 134'. Pick better value with 'binwidth'.
1 | from windrose import WindroseAxes, WindAxes, plot_windrose |
风玫瑰图
通过风玫瑰图,我们可以更加直观地看到风向、风速的分布情况,得到与上面相同的结论。
1 | ax = WindroseAxes.from_ax() |
除了可以画直方图以外,还可以画等高线图,具体命令如下:
1 | _ = plot_windrose(df, kind='contour', var_name='windspeed', |
此外,windrose库具有简单的统计功能,可以采用Weibull分布拟合风速的概率密度直方图。
1 | bins = np.arange(0,50+1,1) |
C:\ProgramData\Anaconda3\lib\site-packages\windrose\windrose.py:620: VisibleDeprecationWarning:
Passing `normed=True` on non-uniform bins has always been broken, and computes neither the probability density function nor the probability mass function. The result is only correct if the bins are uniform, when density=True will produce the same result anyway. The argument will be removed in a future version of numpy.
最后,我们将2007年一年的数据按照月度分别绘制风玫瑰图,可以看出风向和风力的月度变化。
1 | import datetime |
上图除了验证了前面的结论以外,还可以发现11月和3月的风力最大、风向最为集中,而非1月或者12月。7月份风向更加偏北,东北风、(东)南风的比例大大增加,但是风的整体强度不大。
之所以呈现出这样的特点,与站点所处地理位置的气候特点密切相关。该站点位于落基山脉内,北纬39度多,位于中纬度地带。中学地理曾经学过,中纬度环流与低纬度和极地环流不同,并非完整闭合,但是在上空主要由西风带主导。显然该位置自然而然以西风为主。
北美大陆的气压配置图式与亚欧大陆相似,具有四个活动中心,即:两个副极地低压中心—北大西洋冰岛低压和北太平洋阿留申低压;两个副热带高压中心—北大西洋亚速尔高压和北太平洋夏威夷高压。另外,在大陆内部也有一个冬高夏低、冬夏交替的气压活动中心。冬季,海洋温度高于大陆温度,西风更加强盛;夏季,大陆温度高于海洋温度,西风活动减弱。查阅有关资料可知,
- 冬季,太平洋沿岸,主要吹海风,其中北纬40°以北多西南风,北纬40°以南为西风和西北风,到北纬30°以南转为东北风;
- 夏季,太平洋沿岸,北纬50°以北吹西南风,北纬50°~40°之间由西风转为西北风,北纬40°以南转为北风和东北风。
前面说过该站点位于北纬40度附近,因此冬季主要为西风和西北风,而在夏季北风、西北风、东北风甚至南风都有(南风的整体强度很小),其具体原因有待进一步学习。夏季的风向比较紊乱,一方面是由于此地本来以西风为主,虽然西风减弱,但是仍然具有相当强的实力,另一方面,北美大陆面积较小,海陆热力差异不如亚洲显著,因此风的强度有“中和”的感觉。当然,一年的数据也存在偶然性,需要多年的数据加以分析。
小结
通过使用python的windrose库,本文分析了美国科罗拉多州落基山脉一个站点2007全年的风力特点,风玫瑰图的确是直观高效。而且还发现,风力分布的特点可以用中学学过的地理知识得以解释,真的让人欢欣鼓舞。实际上,除了分析单个站点一年的分布情况以外:
- 往细里说,可以以天为单位,分析每天的风力波动情况,以及每天随着季节的变化;
- 往大里说,可以分析不同年的风力变化情况,分析厄尔尼诺、拉尼娜等大尺度的影响以及全球变化的影响;
- 往空间里说,可以分析相邻位置站点之间的关系。
- 此外,还可以分析极端风力的分布用来指导风力发电、天气指数保险等业务。
参考资料
- https://www.linkedin.com/pulse/wind-rose-chonghua-yin/
- https://www.nrel.gov/grid/western-wind-data.html
- https://github.com/python-windrose/windrose
- https://www.wcc.nrcs.usda.gov/climate/windrose.html
- https://en.wikipedia.org/wiki/Atmospheric_circulation
- https://www.pexels.com/photo/woman-holding-black-flag-1571734/
- https://en.wikipedia.org/wiki/Wind_rose