【问题标题】:How to get precipitation/rainfall through weather api?如何通过天气 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}}

【问题讨论】:

    标签: python python-requests weather weather-api


    【解决方案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】:

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

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

      【讨论】:

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