weather_landscape:基于 Python 和 Pillow 的天气数据可视化项目

Visualizing Weather Forecasts Through Landscape Imagery

分支2Tags0
当前项目代码仓暂无内容

气象如画:通过风景图像可视化天气预报

house

传统气象站常以原始数字数据形式展示传感器读数。浏览这类仪表盘往往令人感到信息繁杂且压力重重,因为用户需要花费大量精力去定位、解读并有效可视化特定参数。

观看风景图像对人眼而言更为自然。观察风景元素所带来的舒缓效果能减轻压力,且几乎无需费力,从而带来更轻松的视觉体验。

以下方法展示了如何将气象信息编码到风景图像中,实现无数字或极少依赖数字数据的呈现方式。

编码原则

该风景图像展现了林间的一座小屋。图像的水平轴代表24小时时间线,从左侧代表当前时刻的小屋开始,延伸至右侧次日的天气状况。沿垂直轴分布的各种风景元素象征着不同的天气事件和条件。某一事件离当前时刻越远,在图像中就越靠右显示。

encode

风景图像中可编码以下信息:

  • 便于时间线导航的时间标记:
    • 日出和日落时间
    • 正午和午夜
  • 天气预报信息:
    • 风向和风力
    • 温度变化
    • 最高和最低温度值
    • 云量
    • 降水量
  • 当前天气状况:
    • 温度
    • 气压
  • 非气象事件:
    • 生日
    • 节假日

实现方案

图像生成代码采用Python编写,使用Pillow库,并基于OpenWeather提供的数据。该图像专为296x128电子墨水显示屏设计。代码已在Python 3.9版本上测试通过。

事件图像 描述
example 日出
example 日落
example 云量
example 当前时间位置
example 午夜
example 正午
example 南风
example 东风
example 西风
example 北风
example 降雨
example 降雪
example 高气压
example 正常气压
example 低气压
example 非气象事件:某人的生日。

树木越高,表示预期风力越大。森林中若出现多种不同类型的树木,则表示风向为中间方向。

示例

景观图片 描述
example 当前时间为中午左右,预计天气晴朗,伴有少量云。夜间将刮起适度的北风。目前气温正在上升,但日落后将开始下降,在日出前达到最低点。在此期间,风向预计将转为东北风。
example 太阳正在升起,今天将是炎热晴朗的一天,伴有轻微的东南风。日落后气温仍将保持高位,风向将转为东风,并在整个傍晚逐渐增强。
example 全天及夜间将寒冷多雨。夜间南风将转为西北风。别忘了明天是某人的生日。

景观在一天中的变化

Dynamic

运行代码

准备 Linux 环境

./makevenv.sh
source .venv/bin/activate

准备环境 Windows

makevenv.bat
.venv/Scripts/Activate

图像创建测试

secrets.py 中使用您的 OpenWeather API 密钥更新 OWM_KEY 变量。

(可选)在 secrets.py 中更改坐标为您所在的位置。

python run_test.py

在“tmp”文件夹中查找生成的图像。

运行服务器

python run_server.py

设置

从浏览器访问服务器页面,即可查看生成的图像数量。

电子墨水模块

设置

硬件设置包括一块ESP32 开发板和一个2.9英寸电子墨水显示模块。目前,该设置仅显示从互联网获取的图像,每15分钟更新一次。目前尚不确定图像生成代码是否可适配 ESP32 上的 MicroPython 环境。

更多信息

手机

设置

测试过程中会生成多张图像。黑白图像适用于电子墨水模块,而彩色图像则可用于手机主屏幕。对于安卓设备,有一款名为Web Image Widget的应用,可让您创建一个显示互联网图像的小部件。使用时,先从仓库启动服务器脚本,然后添加一个指向其中一张生成图像的小部件即可。

安卓

项目介绍

通过景观图像直观展现天气预报【此简介由AI生成】

定制我的领域
121.83 K87访问 GitHub