Сервіс Weateher Underground

HTML


Отримання ключа

Для користування сервісом необхідно зарееструватися та отримати ключа, наприклад за anvil plan. Реєстрація та доступ розробника безкоштовні. Надалі у описі посилання на ключ буде як XXXXXXXXX. Зареєструйтеся для отримання даних.

Доументація

Документація на сервіс розташована за цим посиланням. Якщо коротко - існує кілька запитів, що повертають дані у форматі json для вказаної локації. Документація використовує для прикладів ключ зареестрованого користувача, тому не наводьте приклади URL у мережі.

Пошук локації

http://api.wunderground.com/api/XXXXXXXXX/geolookup/q/Ukraine/Kiev.json

Типова відповідь схожа на щось таке:

{
  "response": {
    "version":"0.1",
    "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
    "features": {
      "geolookup": 1
    }
  }
  ,
  "location": {
    "type":"INTLCITY",
    "country":"UR",
    "country_iso3166":"UA",
    "country_name":"Ukraine",
    "state":"30",
    "city":"Kiev",
    "tz_short":"EET",
    "tz_long":"Europe/Kiev",
    "lat":"50.40000153",
    "lon":"30.56999969",
    "zip":"00000",
    "magic":"1",
    "wmo":"33345",
    "l":"/q/zmw:00000.1.33345",
    "requesturl":"global/stations/33345.html",
    "wuiurl":"https://www.wunderground.com/global/stations/33345.html",
    "nearby_weather_stations": {
      "airport": {
        "station": [
         { "city":"Kyiv", "state":"", "country":"Ukraine", "icao":"UKKK", "lat":"50.40169907", "lon":"30.44969940" }
        ,{ "city":"Kyiv", "state":"", "country":"UR", "icao":"UKKK", "lat":"50.40169907", "lon":"30.44969940" }
        ,{ "city":"Boryspil\u0027", "state":"", "country":"UR", "icao":"UKBB", "lat":"50.33971024", "lon":"30.89561081" }
        ,{ "city":"Gostomel", "state":"", "country":"UR", "icao":"UKKM", "lat":"50.60349655", "lon":"30.19193268" }
        ]
      }
      ,
      "pws": {
        "station": [
          {
            "neighborhood":"Tymiriazievska Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV257",
            "lat":50.408592,
            "lon":30.558405,
            "distance_km":1,
            "distance_mi":0
          },
          {
            "neighborhood":"Kikvidze Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV153",
            "lat":50.410206,
            "lon":30.548777,
            "distance_km":1,
            "distance_mi":1
          },
          {
            "neighborhood":"Drohomyrova Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV288",
            "lat":50.410732,
            "lon":30.547392,
            "distance_km":1,
            "distance_mi":1
          },
          {
            "neighborhood":"Kiev",
            "city":"Kiev",
            "state":"",
            "country":"UR",
            "id":"IKIEV57",
            "lat":50.409870,
            "lon":30.543890,
            "distance_km":2,
            "distance_mi":1
          },
          {
            "neighborhood":"Kiev",
            "city":"Kiev",
            "state":"",
            "country":"UR",
            "id":"IKIEV37",
            "lat":50.412788,
            "lon":30.546314,
            "distance_km":2,
            "distance_mi":1
          },
          {
            "neighborhood":"Yahotynska Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV225",
            "lat":50.410912,
            "lon":30.539665,
            "distance_km":2,
            "distance_mi":1
          },
          {
            "neighborhood":"Dniprovs\u0027ka embankment",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV251",
            "lat":50.407768,
            "lon":30.611111,
            "distance_km":3,
            "distance_mi":1
          },
          {
            "neighborhood":"Akademika Filatova Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV227",
            "lat":50.414646,
            "lon":30.532230,
            "distance_km":3,
            "distance_mi":1
          },
          {
            "neighborhood":"Druzhby Narodiv Boulevard",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV316",
            "lat":50.411732,
            "lon":30.527399,
            "distance_km":3,
            "distance_mi":1
          },
          {
            "neighborhood":"Pechersk",
            "city":"Kyiv",
            "state":"Kyiv region",
            "country":"UA",
            "id":"IKIEVKIE2",
            "lat":50.427853,
            "lon":30.553291,
            "distance_km":3,
            "distance_mi":1
          },
          {
            "neighborhood":"Lesi Ukrainky Boulevard",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV205",
            "lat":50.425518,
            "lon":30.544672,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Anny Akhmatovoi Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV56",
            "lat":50.406345,
            "lon":30.616590,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Kiev",
            "city":"Kiev",
            "state":"",
            "country":"UR",
            "id":"IKIEV42",
            "lat":50.384846,
            "lon":30.612362,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Yuriya Shums\u0027koho Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV57",
            "lat":50.422573,
            "lon":30.604557,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Staronavodnytska Street",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV114",
            "lat":50.427067,
            "lon":30.544397,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Kiev",
            "city":"Kiev",
            "state":"",
            "country":"UR",
            "id":"IKIEV55",
            "lat":50.411766,
            "lon":30.522493,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Pavla Tychyny Avenue",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV223",
            "lat":50.427055,
            "lon":30.599859,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Dniprovs\u0027ka embankment",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV22",
            "lat":50.429279,
            "lon":30.594154,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Yuriya Shums\u0027koho Street",
            "city":"Kyiv",
            "state":"",
            "country":"UR",
            "id":"IKYIV342",
            "lat":50.426376,
            "lon":30.601778,
            "distance_km":3,
            "distance_mi":2
          },
          {
            "neighborhood":"Kiev",
            "city":"Osokorki",
            "state":"30",
            "country":"UR",
            "id":"I30OSOKO2",
            "lat":50.412560,
            "lon":30.625196,
            "distance_km":4,
            "distance_mi":2
          },
          {
            "neighborhood":"Petra Hryhorenka Avenue",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV259",
            "lat":50.404400,
            "lon":30.629553,
            "distance_km":4,
            "distance_mi":2
          },
          {
            "neighborhood":"Pozniaky",
            "city":"Kyiv",
            "state":"",
            "country":"UA",
            "id":"IKYIV229",
            "lat":50.416878,
            "lon":30.625898,
            "distance_km":4,
            "distance_mi":2
          }
        ]
      }
    }
  }
}

Прогноз 10 днів

Запит:

http://api.wunderground.com/api/XXXXXXXXX/forecast10day/q/Ukraine/Kiev.json

Відповідь (частину відповіді скорочено, на місцях скорочень додано коментарі):

{
  "response": {
    "version":"0.1",
    "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
    "features": {
      "forecast10day": 1
    }
  }
  ,
  "forecast":{
    "txt_forecast": {
      "date":"11:58 AM EET",
      "forecastday": [
        {
          "period":0,
          "icon":"cloudy",
          "icon_url":"http://icons.wxug.com/i/c/k/cloudy.gif",
          "title":"Thursday",
          "fcttext":"Generally cloudy. High 37F. Winds W at 10 to 20 mph.",
          "fcttext_metric":"Overcast. High 2C. Winds W at 15 to 30 km/h.",
          "pop":"20"
        }
        ,
        {
          "period":1,
          "icon":"nt_cloudy",
          "icon_url":"http://icons.wxug.com/i/c/k/nt_cloudy.gif",
          "title":"Thursday Night",
          "fcttext":"Cloudy skies. Low 8F. Winds NW at 10 to 20 mph.",
          "fcttext_metric":"Cloudy. Low -13C. Winds NW at 15 to 30 km/h.",
          "pop":"10"
        }
... (періоди з 2 до 19 (по два на одну добу)) ...
      ]
    },
    "simpleforecast": {
      "forecastday": [
        {
          "date": {
            "epoch":"1483635600",
            "pretty":"7:00 PM EET on January 05, 2017",
            "day":5,
            "month":1,
            "year":2017,
            "yday":4,
            "hour":19,
            "min":"00",
            "sec":0,
            "isdst":"0",
            "monthname":"January",
            "monthname_short":"Jan",
            "weekday_short":"Thu",
            "weekday":"Thursday",
            "ampm":"PM",
            "tz_short":"EET",
            "tz_long":"Europe/Kiev"
          },
          "period":1,
          "high": {
            "fahrenheit":"37",
            "celsius":"3"
          },
          "low": {
            "fahrenheit":"8",
            "celsius":"-13"
          },
          "conditions":"Overcast",
          "icon":"cloudy",
          "icon_url":"http://icons.wxug.com/i/c/k/cloudy.gif",
          "skyicon":"",
          "pop":20,
          "qpf_allday": {
            "in": 0.00,
            "mm": 0
          },
          "qpf_day": {
            "in": 0.00,
            "mm": 0
          },
          "qpf_night": {
            "in": 0.00,
            "mm": 0
          },
          "snow_allday": {
            "in": 0.0,
            "cm": 0.0
          },
          "snow_day": {
            "in": 0.0,
            "cm": 0.0
          },
          "snow_night": {
            "in": 0.0,
            "cm": 0.0
          },
          "maxwind": {
            "mph": 20,
            "kph": 32,
            "dir": "W",
            "degrees": 261
          },
          "avewind": {
            "mph": 13,
            "kph": 21,
            "dir": "W",
            "degrees": 261
          },
          "avehumidity": 76,
          "maxhumidity": 0,
          "minhumidity": 0
        }
        ,
... дані для наступних днів повторюються за такою самою схемою ...
      ]
    }
  }
}

Стан на зараз

Запит:

http://api.wunderground.com/api/XXXXXXXXX/conditions/q/Ukraine/Kiev.json

Відповідь:

{
  "response": {
    "version":"0.1",
    "termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
    "features": {
      "conditions": 1
    }
  },
  "current_observation": {
    "image": {
    "url":"http://icons.wxug.com/graphics/wu2/logo_130x80.png",
    "title":"Weather Underground",
    "link":"http://www.wunderground.com"
  },
  "display_location": {
    "full":"Kiev, Ukraine",
    "city":"Kiev",
    "state":"30",
    "state_name":"Ukraine",
    "country":"UR",
    "country_iso3166":"UA",
    "zip":"00000",
    "magic":"1",
    "wmo":"33345",
    "latitude":"50.40000153",
    "longitude":"30.56999969",
    "elevation":"167.0"
  },
  "observation_location": {
    "full":"Pechersk, Kyiv, Kyiv region",
    "city":"Pechersk, Kyiv",
    "state":"Kyiv region",
    "country":"UA",
    "country_iso3166":"UA",
    "latitude":"50.427853",
    "longitude":"30.553291",
    "elevation":"502 ft"
  },
  "estimated": {
  },
  "station_id":"IKIEVKIE2",
    "observation_time":"Last Updated on January 5, 1:37 PM EET",
    "observation_time_rfc822":"Thu, 05 Jan 2017 13:37:26 +0200",
    "observation_epoch":"1483616246",
    "local_time_rfc822":"Thu, 05 Jan 2017 13:37:35 +0200",
    "local_epoch":"1483616255",
    "local_tz_short":"EET",
    "local_tz_long":"Europe/Kiev",
    "local_tz_offset":"+0200",
    "weather":"Mostly Cloudy",
    "temperature_string":"34.9 F (1.6 C)",
    "temp_f":34.9,
    "temp_c":1.6,
    "relative_humidity":"78%",
    "wind_string":"From the WSW at 2.0 MPH Gusting to 7.0 MPH",
    "wind_dir":"WSW",
    "wind_degrees":240,
    "wind_mph":2.0,
    "wind_gust_mph":"7.0",
    "wind_kph":3.2,
    "wind_gust_kph":"11.3",
    "pressure_mb":"1000",
    "pressure_in":"29.53",
    "pressure_trend":"+",
    "dewpoint_string":"29 F (-2 C)",
    "dewpoint_f":29,
    "dewpoint_c":-2,
    "heat_index_string":"NA",
    "heat_index_f":"NA",
    "heat_index_c":"NA",
    "windchill_string":"35 F (2 C)",
    "windchill_f":"35",
    "windchill_c":"2",
    "feelslike_string":"35 F (2 C)",
    "feelslike_f":"35",
    "feelslike_c":"2",
    "visibility_mi":"6.2",
    "visibility_km":"10.0",
    "solarradiation":"--",
    "UV":"0",
    "precip_1hr_string":"0.00 in ( 0 mm)",
    "precip_1hr_in":"0.00",
    "precip_1hr_metric":" 0",
    "precip_today_string":"0.00 in (0 mm)",
    "precip_today_in":"0.00",
    "precip_today_metric":"0",
    "icon":"mostlycloudy",
    "icon_url":"http://icons.wxug.com/i/c/k/mostlycloudy.gif",
    "forecast_url":"http://www.wunderground.com/global/stations/33345.html",
    "history_url":"http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IKIEVKIE2",
    "ob_url":"http://www.wunderground.com/cgi-bin/findweather/getForecast?query=50.427853,30.553291",
    "nowcast":""
  }
}

Коментарі:

  • Windchill - температура, яку відчуває відкрита шкіра з урахуванням вітру.
  • Heat Index - ще один з індексів для перерахування температури в залежності від вологості. Extreme danger: heat stroke is imminent.
  • "Feels like" - температура "за відчуттям", з урахуванням вітру та вологості, торгівельна марка сервісу AccuWeather.
  • Perspiration - обрахування потовиділення за даних погодних умов.

Набір іконок

Посилання на доументацію.

Сам сервіс пропонує досить великий вибір іконок, більшість з яких застаріли і відповідають дизайну сайтів 1992 року. Мені сподобався лише IconSet 9, але і той потребує доопрацювання.

http://icons.wxug.com/i/c/i/ICON.gif

Список погодних умов (чомусь у прикладі вони йдуть з повторами)

  • chanceflurries
  • chancerain
  • chancesleet
  • chancesnow
  • chancetstorms
  • clear
  • cloudy
  • flurries
  • fog
  • hazy
  • mostlycloudy
  • mostlysunny
  • partlycloudy
  • partlysunny
  • sleet
  • rain
  • snow
  • sunny
  • tstorms

Набор персональных инструментов. Сергей Пономаренко