Веб-служба погоды Yahoo

Я пытаюсь найти способ получить информацию о погоде с помощью Yahoo Weather, используя язык запросов Yahoo.

Поскольку я живу во Франции, в городе Ницца, следующий запрос возвращает ошибку:

select * from weather.forecast where location='Nice'

У меня скоординированы широта и долгота, так как я могу передать их YQL, чтобы вернуть информацию о погоде? Эта услуга по всему миру или только для США?


person Zakaria    schedule 11.01.2011    source источник


Ответы (1)


Вместо этого вы должны использовать другую таблицу данных YQL. Я пробовал этот запрос, и он отлично работает:

SELECT * FROM weather.bylocation WHERE location='Nice' AND unit="c"

Это консоль YQL

Я добавил unit="c", чтобы получить его по Цельсию, предполагая, что вы этого хотите. Если нет, используйте «f».

Внутри таблица weather.bylocation использует следующие две вещи:

  1. Поиск «где на земле идентификатора (woeid) для местоположения,
  2. а затем поиск погоды для этого идентификатора.

См. внутренности этой таблицы ниже:

    <execute><![CDATA[
      default xml namespace ='http://where.yahooapis.com/v1/schema.rng'; 
      var x = y.query('select woeid from geo.places(1) where text="'+location+'"');
      var s = x.results;
      var woeid = s..woeid;
      var weather = y.rest('http://weather.yahooapis.com/forecastrss?w='+woeid+'&u='+unit).get().response;
      response.object = <weather>{weather}</weather>;
    ]]></execute>

Что касается вашего второго вопроса об использовании координат широты и долготы: я не знаю, можете ли вы их использовать, но, может быть, вам это больше не нужно, верно?

Также хорошо читать:

http://developer.yahoo.com/weather/

http://developer.yahoo.com/geo/geoplanet/guide/concepts.html

person spier    schedule 12.01.2011
comment
если вы хотите изменить единицу измерения на Цельсий при использовании таблицы Weather.forecast, вам нужно добавить это условие с помощью оператора AND: u=c, т.е.: выберите * из Weather.forecast, где woeid=823015 и u=c - person golddragon007; 08.02.2016
comment
Этот запрос больше не работает. Получение этой ошибки: Please provide valid credentials. Похоже, что YQL становится все менее и менее надежным, поскольку веб-сайты либо блокируют пользовательский агент, либо требуют OAuth. - person thdoan; 26.08.2016