指定经度纬度的epw天气文件下载
import requestsurl = "https://re.jrc.ec.europa.eu/api/tmy"params = {"lat": 36, "lon": 120, "outputformat": "epw"}resp = requests.get(url, params=params)withopen("my_weather.epw", "wb") as f:f.write(resp.content)print("EPW 文件已保存")
步骤1:明确目标:准备一个标准化请求
在通过API获取数据时,首先需要与服务器“约定”好请求的数据内容和格式。
-
核心API地址:
https://re.jrc.ec.europa.eu/api/tmy。这是PVGIS服务器上专门用于获取TMY数据的功能接口。 -
请求参数 (params):
-
lat=36&lon=120:服务器的输入是地理坐标,即你需要的气象站位置。 -
outputformat="epw":这是一份明确的格式要求,告诉服务器直接返回可供EnergyPlus等专业软件直接读取的.epw文件,而不是未经处理的原始CSV等文本数据。
步骤2:递交请求:生成HTTP请求
requests.get(url, params=params) 这个函数调用将上面的参数组合成一个标准的HTTP GET请求。这个请求的逻辑等价于在浏览器地址栏输入:https://re.jrc.ec.europa.eu/api/tmy?lat=36&lon=120&outputformat=epw。
步骤3:获得响应:PVGIS服务器开始“工作”
当PVGIS服务器收到你的明确请求后,便会触发其后台计算流程:
-
数据库检索:根据你提供的坐标,从其庞大的气象数据库(例如最常被使用的ERA5数据集)中,调取该位置长达10年甚至更久的历史气象数据。
-
TMY数据合成:服务器运行其内置算法(通常是Sandia等成熟方法),从多年数据中为每个月份遴选出最具代表性的月份。整个拼接过程,本质上是在服务器端完成一次自动化的小规模计算。
-
封装EPW文件:服务器将计算生成的8760小时(365天×24小时)的TMY数据,按照EPW格式的严格规范(包含文件头、数据标签等)打包成一个字节流。
步骤4:接收并保存:保存本地文件
resp = requests.get(...) 这一行已经将服务器生成的EPW文件下载到了变量 resp 中,而文件内容则存储在 resp.content 属性里。最终代码通过标准的文件写入操作 with open("my_weather.epw", "wb") as f: f.write(resp.content),将这个二进制文件保存到你的电脑磁盘上。
总结
总之,这段代码的工作原理是:你通过API向PVGIS服务器发送了一个精确的请求,触发服务器为你的位置实时计算并生成数据的典型气象年(TMY)数据,最后以EPW文件格式返回并提供给你本地保存。
夜雨聆风