如何创建动画气象图Python?
天气图表也称为Meteorogram这是相对于一个或多个气象变量的图形表示,以时间,是否观察到的或特定位置的预测。
气象图的结构
在 Meteogram 中,时间沿 X 轴绘制,而不同天气参数的值沿 Y 轴绘制。最常见的天气参数是降水量、温度、气压、云量、风速和风向。
每帧包含 5 天气象图,每个气象图都有基于天气参数的不同图表,如下所示:
- 温度象形图也将显示从日出到日落的时间,
- 不同高度的云层
- 风速预报将显示风的传播方向。
创建动画气象图
在我们开始创建 Meteogram 之前,您应该在 Meteoblue 网站上注册并订阅有关您的地理位置的时事通讯。要获得一些您首选位置的气象图,需要几天时间才能为您提供气象图。然后我们等了几天才能获得几乎 7-8 天的地理定位气象图,并在通过电子邮件收到气象图的附件后下载它们。在这种情况下,我们收集了大约 9 个气象图并创建了气象图的动画。
需要的模块
使用imageio 库创建动画气象图,具有多种功能,允许我们读取和写入包括动画图像在内的各种图像数据。可以使用命令pip安装该库。
Pathlib是Python中的一个模块,它提供用于处理文件和目录的对象 API。
imageio
pathlib
在我们的内核中,导入文件夹或目录中的气象图,并为您选择的文件夹指定标题。在这里,标题是“气象图”。 imageio 库支持各种图像格式。要读取存储在文件夹/目录中的所有图像,请使用imread() 方法执行以下命令,该方法用于为具有 RGBA 值的所有图像创建 NumPy 数组,然后将气象图存储在列表image_list 中。
通过将示例Meteogram附件存储在目录中并将文件夹命名为Meteogram 来动画Meteogram ,然后使用imageio包 animate 或为存储在目录中的附件/图像创建 GIF。在这里,我们导入imageio库和pathlib模块,然后检查存储在电子邮件中的图像路径,即image_path 。
- image_path.glob('*.png'): glob 是此路径所代表的目录'source_images' 中的给定模式,生成任何类型的所有匹配文件。 *这种模式意味着它是递归通配符。
Syntax: Path.glob(pattern)
- imageio.imread(file_name):要从指定的 URI 读取图像,我们必须使用 imageio.imread() 方法。然后将此图像附加到 image_list 中,然后用于编写法师以动画图像(Meteogram)
Syntax: imageio.imread(“filename or path”)
Parameter-
filename/path: Absolute or Relative path of the image file.
Returns: numpy array which comes with a dict of metadata at its meta attribute.
代码:
Python3
# importing path library from pathlib package
from pathlib import Path
# extracting meteograms by specifying
# path of the folder
image_path = Path('../input/meteogram')
# images from folder is stored in image_list
images = list(image_path.glob('*.png'))
image_list = []
for file_name in images:
# imread() creating numpy array
# of every image stored in image_list
image_list.append(imageio.imread(file_name))
Python3
imageio.mimwrite('animated_meteogram.gif', image_list)
Python3
# Import imageio packages
# Generate GIF/animation of meteogram
import imageio
from pathlib import Path
image_path = Path('../input/meteogram')
images = list(image_path.glob('*.png'))
# create an array to
# store meteogram images
image_list = []
for file_name in images:
image_list.append(imageio.imread(file_name))
# to verify all images are read
image_list
# using this function will write images to a
# specified file animated_meteogram.gif
imageio.mimwrite('animated_meteogram.gif', image_list)
image_list命令将以数组的形式显示每个气象图的数据。现在继续使用mimwrite() 方法创建动画气象图,然后动画气象图将保存在您指定的目录中,并采用.gif 格式。
imageio.mimwrite():使用此函数将图像写入从image_list 中获取的指定文件animated_meteogram.gif
Syntax: imageio.mimwrite(uri, ims, format=None, **kwargs)
Parameter:
uri: a file name or file object. ImageIO will write some images into this file.(e.g: animated_from_images.gif )
ims: a list of image data. Each image data you can read by imageio.imread() function
format: The format of uri, it can be .png, .gif etc
代码:
蟒蛇3
imageio.mimwrite('animated_meteogram.gif', image_list)
执行该图表用于上述代码动画之后将被创建并输出被保存在animated_meteogram.gif然后将动画天气图表的名称的根目录。
下面是完整的Python实现:
蟒蛇3
# Import imageio packages
# Generate GIF/animation of meteogram
import imageio
from pathlib import Path
image_path = Path('../input/meteogram')
images = list(image_path.glob('*.png'))
# create an array to
# store meteogram images
image_list = []
for file_name in images:
image_list.append(imageio.imread(file_name))
# to verify all images are read
image_list
# using this function will write images to a
# specified file animated_meteogram.gif
imageio.mimwrite('animated_meteogram.gif', image_list)
输出:
现在让我们执行我们编写的Python程序,这将显示我们通过从电子邮件中提取附件收集的气象图的动画。在下面的视频中,我们可以看到创建了一个 GIF 文件,它是上面执行的动画气象图。