OpenWeatherMap API 有没有办法获取过去的降水数据?

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

使用OpenWeatherMap API(onecall 2.5),使用某地区以往6天的天气数据,为什么JSON数据中没有降水?

有这方面的任何数据吗?如果有,我如何使用 onecall 2.5 HTTP 请求接收它?

这是我的完整代码:

const API_KEY = "XXX";
const LATITUDE = 26.640629;
const LONGITUDE = -81.872307;

const endDate = new Date();
const startDate = new Date(endDate.getTime() - (5 * 24 * 60 * 60 * 1000));

async function getWeatherData() {
  try {
    const weatherDataList = [];
    for (let date = startDate; date <= endDate; date.setDate(date.getDate() + 1)) {
      const weatherData = await (await fetch(`https://api.openweathermap.org/data/2.5/onecall/timemachine?lat=${LATITUDE}&lon=${LONGITUDE}&dt=${Math.floor(date.getTime() / 1000)}&appid=${API_KEY}&units=imperial`)).json();

      const weatherDataLocalList = [];

      weatherDataLocalList.push(weatherData.current.temp);
      weatherDataLocalList.push(weatherData.current.humidity);
      weatherDataLocalList.push(weatherData.current.pressure * 0.02952998751);
      weatherDataLocalList.push(weatherData.current.wind_speed * 0.44704);
      weatherDataLocalList.push(1);

      weatherDataList.push(weatherDataLocalList);
    }
    predict2(weatherDataList);
  } catch (error) {
    console.error("Error fetching weather data:", error);
  }
}

getWeatherData();

这是我正在使用的网址:

https://api.openweathermap.org/data/2.5/onecall/timemachine?lat=${LATITUDE}&lon=${LONGITUDE}&dt=${Math.floor(date.getTime() / 1000)}&appid=${API_KEY}&units=imperial

javascript json http openweathermap weather
1个回答
3
投票

One Call API 3.0(针对历史数据)返回的数据返回两个带有降水数据的子字段:

  • data.rain
  • data.snow

每个字段包含一个数组,其中包含每小时的降水率(毫米/小时)。

如果缺少这些子字段,则意味着没有降水

如果您在 API 响应中没有看到某些参数,则意味着这些天气现象在所选城市或位置的测量时间内没有发生。 API 响应中仅显示真正测量或计算的数据。


请注意,此答案适用于 One Call API 3.0。根据此迁移指南,API 2.5 拥有数据,但字段略有不同:

current.rain
current.snow
。 (API 2.5 将于 2024 年 6 月关闭。)

© www.soinside.com 2019 - 2024. All rights reserved.