当前位置: 首页 > news >正文

调用API历史和未来气象数据获取

文章目录

    • 历史气象数据获取
    • 未来气象数据获取

在做业务中需要用到气象数据,这就需要自己去找,推进一个API,调用接口,输出经纬度就可以获取历史及未来相关气象维度的数据了。

历史气象数据获取

import openmeteo_requests
from datetime import datetime,timedelta
import pandas as pd
import time
import requests_cache
from retry_requests import retry#输入地区的经纬度
longitude = '122.32'
latitude = '23.42'cache_session = requests_cache.CachedSession('.cache', expire_after = -1)
retry_session = retry(cache_session, retries = 5, backoff_factor = 0.2)
openmeteo = openmeteo_requests.Client(session = retry_session)
url = "https://archive-api.open-meteo.com/v1/archive"
start_tday = pd.to_datetime(datetime.now().strftime('%Y-%m-%d'))
end_tday = (start_tday-timedelta(days = 1)).strftime('%Y-%m-%d')params = {"latitude": latitude,"longitude": longitude,"start_date": "2025-07-14","end_date": end_tday,"daily": ["temperature_2m_max", "temperature_2m_min", "apparent_temperature_max", "apparent_temperature_min", "wind_speed_10m_max", "sunshine_duration", "apparent_temperature_mean", "temperature_2m_mean", "precipitation_sum", "et0_fao_evapotranspiration", "weather_code"],"timezone": "auto"
}
responses = openmeteo.weather_api(url, params=params)# Process first location. Add a for-loop for multiple locations or weather models
response = responses[0]
print(f"Coordinates {response.Latitude()}°N {response.Longitude()}°E")
print(f"Elevation {response.Elevation()} m asl")
print(f"Timezone {response.Timezone()}{response.TimezoneAbbreviation()}")
print(f"Timezone difference to GMT+0 {response.UtcOffsetSeconds()} s")# Process daily data. The order of variables needs to be the same as requested.
daily = response.Daily()
temperature_2m_max = daily.Variables(0).ValuesAsNumpy()
temperature_2m_min = daily.Variables(1).ValuesAsNumpy()
apparent_temperature_max = daily.Variables(2).ValuesAsNumpy()
apparent_temperature_min = daily.Variables(3).ValuesAsNumpy()
wind_speed_10m_max = daily.Variables(4).ValuesAsNumpy()
sunshine_duration = daily.Variables(5).ValuesAsNumpy()
apparent_temperature_mean = daily.Variables(6).ValuesAsNumpy()
temperature_2m_mean = daily.Variables(7).ValuesAsNumpy()
precipitation_sum = daily.Variables(8).ValuesAsNumpy()
et0_fao_evapotranspiration = daily.Variables(9).ValuesAsNumpy()
weather_code= daily.Variables(10).ValuesAsNumpy()weather_data = pd.DataFrame({'时间': pd.date_range(start='2025-07-14', end=end_tday),'最高温度':temperature_2m_max,'最低温度':temperature_2m_min,'最高表观温度':apparent_temperature_max,'最低表观温度':apparent_temperature_min,'最大风速':wind_speed_10m_max,'日照持续时间':sunshine_duration,'平均表观温度':apparent_temperature_mean,'平均温度':temperature_2m_mean,'降雨总和':precipitation_sum,'参考蒸散量':et0_fao_evapotranspiration,'天气代码':weather_code})
time.sleep(2)

在这里插入图片描述

未来气象数据获取

未来气象最多能获取16天的。


import openmeteo_requests
from datetime import datetime,timedelta
import pandas as pd
import time
import requests_cache
from retry_requests import retrylongitude = '105.32'
latitude = '32.13'# Setup the Open-Meteo API client with cache and retry on error
cache_session = requests_cache.CachedSession('.cache', expire_after = 3600)
retry_session = retry(cache_session, retries = 5, backoff_factor = 0.2)
openmeteo = openmeteo_requests.Client(session = retry_session)# Make sure all required weather variables are listed here
# The order of variables in hourly or daily is important to assign them correctly below
url = "https://api.open-meteo.com/v1/forecast"
forecast_days = 16
params = {"latitude": latitude,"longitude": longitude,"daily": ["temperature_2m_max", "temperature_2m_min", "apparent_temperature_max", "apparent_temperature_min", "wind_speed_10m_max", "sunshine_duration", "apparent_temperature_mean", "temperature_2m_mean", "precipitation_sum", "et0_fao_evapotranspiration", "weather_code"],"timezone": "auto","forecast_days": forecast_days
}
responses = openmeteo.weather_api(url, params=params)response = responses[0]
print(f"Coordinates {response.Latitude()}°N {response.Longitude()}°E")
print(f"Elevation {response.Elevation()} m asl")
print(f"Timezone {response.Timezone()}{response.TimezoneAbbreviation()}")
print(f"Timezone difference to GMT+0 {response.UtcOffsetSeconds()} s")# Process daily data. The order of variables needs to be the same as requested.
daily = response.Daily()
temperature_2m_max = daily.Variables(0).ValuesAsNumpy()
temperature_2m_min = daily.Variables(1).ValuesAsNumpy()
apparent_temperature_max = daily.Variables(2).ValuesAsNumpy()
apparent_temperature_min = daily.Variables(3).ValuesAsNumpy()
wind_speed_10m_max = daily.Variables(4).ValuesAsNumpy()
sunshine_duration = daily.Variables(5).ValuesAsNumpy()
apparent_temperature_mean = daily.Variables(6).ValuesAsNumpy()
temperature_2m_mean = daily.Variables(7).ValuesAsNumpy()
precipitation_sum = daily.Variables(8).ValuesAsNumpy()
et0_fao_evapotranspiration = daily.Variables(9).ValuesAsNumpy()
weather_code= daily.Variables(10).ValuesAsNumpy()start_tday = pd.to_datetime(datetime.now().strftime('%Y-%m-%d'))
end_tday = start_tday+timedelta(days = int(forecast_days-1))
Fweather_data = pd.DataFrame({'时间': pd.date_range(start=start_tday, end=end_tday),'最高温度':temperature_2m_max,'最低温度':temperature_2m_min,'最高表观温度':apparent_temperature_max,'最低表观温度':apparent_temperature_min,'最大风速':wind_speed_10m_max,'日照持续时间':sunshine_duration,'平均表观温度':apparent_temperature_mean,'平均温度':temperature_2m_mean,'降雨总和':precipitation_sum,'参考蒸散量':et0_fao_evapotranspiration,'天气代码':weather_code})time.sleep(2)

在这里插入图片描述

http://www.dtcms.com/a/544638.html

相关文章:

  • 机器人从设计到仿真到落地
  • 战略合作 | 深信科创携手北极雄芯、灵猴机器人共推国产智能机器人规模化落地
  • Rust 闭包的定义与捕获:从理论到实践的深度探索
  • 公司网站建设分录哪里的赣州网站建设
  • 各级院建设网站的通知网站建设的结论
  • 四种编程语言字符串函数及方法对比(python、Java、C#、C++)
  • 亲测好用:Chrome/Chromedriver一键下载工具(免费无广)
  • 基于Chrome140的TK账号自动化(关键词浏览)——脚本撰写(二)
  • C# SelectMany 完全指南:从入门到精通
  • 卡片式设计网站制作婚庆网站建设需求分析
  • RK3399 11.0关闭调试串口改为普通RS232通信串口
  • 手机网站弹窗大唐网站建设
  • 播放本地音频的代码
  • cefsharp139-H264-X86升级测试(MP4)-支持PDF预览-chromium7258定制浏览器
  • pandoc导出markdown为PDF,同时解决中文内容报乱码的错误
  • 【printpdf】生成PDF的全能Rust库printpdf
  • 小技巧:ipynb转pdf
  • 计算机网络自顶向下方法16——应用层 因特网视频 HTTP流和DASH
  • 摄像头选型与对应采集工具方案
  • 免费的行情软件下载安装佛山网站优化指导
  • 仓颉尾递归优化:从编译器实现到函数式编程实践
  • 小智机器人连接抖音直播间教程
  • webhooks
  • 基于Springboot + vue3实现的亚运会志愿者管理系统
  • 绥中做网站百度如何网站
  • 双碳主题互动装置-低碳环保互动游戏-VR环保展厅方案
  • AI重构兴趣内容与营销生态,驱动消费全链路升级
  • 【数据结构】从线性表到排序算法详解
  • 网站家建设培训学校设计科技公司官网
  • SPIR-V后端稳定性的推进工作报告总结