如何通过天气 api 获取降水/降雨?

Posted

技术标签:

【中文标题】如何通过天气 api 获取降水/降雨?【英文标题】:How to get precipitation/rainfall through weather api? 【发布时间】:2014-09-13 14:19:03 【问题描述】:

我厌倦了Open Weather Map,因为文档说它有“雨”,但当我称之为它时没有。所以我尝试了Python Weather API,但这些来自weather.com、noaa 或yahoo 天气的选项都没有降雨或降水。所以我尝试了Wunderground,但这似乎只适用于美国城市,除此之外,我也懒得买钥匙了。

有人知道从这里去哪里吗?

在打开的天气地图上显示有雨,但我没有在结果中看到:

JSON 调用示例

"coord":"lon":139,"lat":35,
"sys":"country":"JP","sunrise":1369769524,"sunset":1369821049,
"weather":["id":804,"main":"clouds","description":"overcast clouds","icon":"04n"],
"main":"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04,
"wind":"speed":7.31,"deg":187.002,
"rain":"3h":0,                      # on this line
"clouds":"all":92,
"dt":1369824698,
"id":1851632,
"name":"Shuzenji", 
"cod":200

但是,当我这样称呼它时

from pprint import pprint
import requests
r = requests.get('http://api.openweathermap.org/data/2.5/weather?q=Vancouver')
pprint(r.json())

我得到一些没有降雨/降水的东西。

u'base': u'cmc stations',
 u'clouds': u'all': 0,
 u'cod': 200,
 u'coord': u'lat': 49.25, u'lon': -123.12,
 u'dt': 1406042326,
 u'id': 6173331,
 u'main': u'humidity': 77,
           u'pressure': 862,
           u'temp': 289.33,
           u'temp_max': 290.93,
           u'temp_min': 288.15,
 u'name': u'Vancouver',
 u'sys': u'country': u'CA',
          u'message': 0.1867,
          u'sunrise': 1406032353,
          u'sunset': 1406088323,
 u'weather': [u'description': u'Sky is Clear',
               u'icon': u'01d',
               u'id': 800,
               u'main': u'Clear'],
 u'wind': u'deg': 104.001, u'speed': 2.75

【问题讨论】:

【参考方案1】:

我找到了雨;)这并不容易,但它成功了。它存在。

    fetch(https://api.openweathermap.org/data/2.5/weather?q=$city&units=metric&appid=$apiKey)
  .then(res => res.json())
  .then(data => 
    console.log(data);
    const  pressure, temp, humidity  = data.main;
    const  speed, deg  = data.wind;
    const  description  = data.weather[0];
    const rain = data.rain['1h'];
    console.log(rain)
  );

【讨论】:

【参考方案2】:

根据documentation、weatherrain.3hsnow.3h都是optional参数,提示不会一直包含在结果中。

我的解释是,如果当时没有下雨或下雪,则不会报告下雨和下雪 - 例如在您的示例中,它显示“天空晴朗” - 但也有可能这意味着他们只是不保证雨/雪数据。

【讨论】:

我不确定。我所在的地方开始疯狂下雨,所以我测试了一下,仍然没有下雨的钥匙。 通常会在几个小时内累积降雨量值后上报雨场。在 OpenWeatherMap 中,这是 3 小时。 这真的很奇怪,他们的水瓶是否无法支持基本测量和服务器 - 推测结果?每隔几分钟实时报告(价值,推测性:bool)将允许更多......但是,这不是用户体验讨论。

以上是关于如何通过天气 api 获取降水/降雨?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看各地历史气象气温数据

python批量处理气象站点降雨数据1——处理成正确的降水索引数据

如何使用 NOAA API 查询给定坐标集的过去天气数据

常用的 API 大全整理

全国多年平均降水量空间分布数据1951-2021年气温分布数据蒸散量数据蒸发量数据太阳辐射数据日照数据风速数据

如何使用python利用api获取天气预报