PyOWM 和天气警报

问题描述 投票:0回答:1

我对 Python 编程还很陌生。 我正在尝试找出 PyOWM api,但我已经摸索过了。 最大的问题是尝试使用 ONE_CALL 查找所有类名和值。 我真的很困惑从打开的天气地图返回的 json 字符串中的天气警报。 阅读 pyown 文档,除了创建您自己的警报触发程序之外,我没有看到任何其他参考。

使用 pyowm 在调用 one_call(lat,lon) 后,它会从服务器返回响应,您可以浏览并获取特定项目,例如温度和风,即

print(one_call.current.temperature.get('temp'))

我已经弄清楚如何获取每小时和每日的天气预报。

目前我们处于天气警报状态,它显示在返回的 json 中,但我不知道如何让 pyowm 获得该警报。 PDF 的 one_call 部分所公开的内容非常缺乏。 至少对我来说是这样。 就像我说的,我是 Python 新手,距离我进行真正的编程已经 15 年了。 曾经用过 VB6 和一些 C 和 C++,但仅此而已。

感谢您的帮助。

python-3.x openweathermap
1个回答
0
投票

由于 pyOWM 是更复杂 API 的包装器,因此可能他们尚未实现 Open Weather API 的警报部分。 我尝试浏览他们的文档,甚至他们的代码库,但没有找到我能找到的更改的引用。

我建议使用包装器(因为对于与警报无关的任何事情来说它要简单得多)并单独请求警报(如果可以在您的用例中完成)。 因此,在检查天气后,您可以执行以下操作:

import requests

# this is what returns your weather data, with the given parameters. 
# note that we're excluding everything except alerts so that you only receive those
API_ENDPOINT = "https://api.openweathermap.org/data/2.5/onecall?lat={lat}&lon={lon}&exclude={part}&appid={API key}".format(your_lat, your_lon, 'current,minutely,hourly,daily', your_api_key)

# we call the endpoint to get alert info only
alert_data = requests.get(API_ENDPOINT)

# now let's check the HTTP status to make sure everything went right:
if alert_data.status_code == 200:
    print(alert_data['alerts']
    # inside this variable there are all alerts
else:
    print('some %s error occurred' % alert_data.status_code)
根据 OWM 规范,alert_data 变量内的警报将具有

this 格式,因此它是一个字典列表:

"alerts": [ { "sender_name": "NWS Tulsa", "event": "Heat Advisory", "start": 1597341600, "end": 1597366800, "description": "...HEAT ADVISORY REMAINS IN EFFECT FROM 1 PM THIS AFTERNOON TO\n8 PM CDT THIS EVENING...\n* WHAT...Heat index values of 105 to 109 degrees expected.\n* WHERE...Creek, Okfuskee, Okmulgee, McIntosh, Pittsburg,\nLatimer, Pushmataha, and Choctaw Counties.\n* WHEN...From 1 PM to 8 PM CDT Thursday.\n* IMPACTS...The combination of hot temperatures and high\nhumidity will combine to create a dangerous situation in which\nheat illnesses are possible." }, ... ]
    
© www.soinside.com 2019 - 2024. All rights reserved.