OpenWeatherMap で気象情報をゲットしよう

無料で使える気象情報 API サービス OpenWeatherMap を見つけました。

OpenWeatherMap が提供している Weather API は、
アカウント(無料)を作れば CC BY-SA 4.0 ライセンスの元に無料で使えます。

2016/02/25 現在、無料プランで

  • 現在の気象情報
  • 5日分3時間毎の予報
  • マップ上に気象情報の表示

が提供されています。

有料プランでは取得情報が増えたり、制限が緩和されます。
http://openweathermap.org/price

アカウントを作ると API にアクセスするためのキーがもらえます。
API に HTTP リクエストを飛ばすと、レスポンスが返ってくるはずなのですが、
HTTP レスポンスコード 401 エラーが発生しました。
キーはすぐには使えないようです……。
アカウントを取得してから、小一時間ほど間を空けたら使えるようになりました。

レスポンスは JSON で返ってきます(XML, HTML でも返せます)。

場所の指定は、緯度経度、都市名、city ID でできます。
city ID はこちらからダウンロードできます。
http://bulk.openweathermap.org/sample/city.list.json.gz

東京 (Tokyo,JP) の city ID は 1850147 です。

■東京の現在の気象情報

http://api.openweathermap.org/data/2.5/weather?id=1850147&units=metric&appid=※
※部分は取得した API キーに差し替えて下さい。
units=metric で温度の単位が摂氏(℃)になります。units 未指定だと絶対温度(K)になります。

JSON は改行無しで返ってきますが、整形すると以下のようになります。

{
  "coord": {
    "lon": 139.69,
    "lat": 35.69
  },
  "weather": [
    {
      "id": 801,
      "main": "Clouds",
      "description": "few clouds",
      "icon": "02d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 9.62,
    "pressure": 1021,
    "humidity": 23,
    "temp_min": 9,
    "temp_max": 10
  },
  "visibility": 10000,
  "wind": {
    "speed": 4.1,
    "deg": 140
  },
  "clouds": {
    "all": 20
  },
  "dt": 1456461000,
  "sys": {
    "type": 1,
    "id": 7619,
    "message": 0.0147,
    "country": "JP",
    "sunrise": 1456434967,
    "sunset": 1456475572
  },
  "id": 1850147,
  "name": "Tokyo",
  "cod": 200
}

天気の種類は以下にあります。結構細かく分類されています。
http://openweathermap.org/weather-conditions

weather.icon

iconの値 元の表現 日本的表現 イメージ
01d clear sky 快晴
02d few clouds 晴れ few cloud
03d scattered clouds くもり scattered clouds
04d broken clouds くもり broken clouds
09d shower rain 小雨
10d rain
11d thunderstorm 雷雨
13d snow
50d mist

 
ほか、

visibility 視界(m)
wind.speed 風速(m/sec)
wind.deg 風向き(北=0, 東=90, 南=180, 西=270)140だと「南東」
clouds.all 雲量(%)
sys.sunrise 日の出(UTC)
sys.sunset 日の入り(UTC)

も返ってきます。

■東京の3日分の予報

http://api.openweathermap.org/data/2.5/forecast/daily?id=1850147&units=metric&cnt=3&appid=※
※部分は取得した API キーに差し替えて下さい。

JSON は改行無しで返ってきますが、整形すると以下のようになります。

{
  "city": {
    "id": 1850147,
    "name": "Tokyo",
    "coord": {
      "lon": 139.691711,
      "lat": 35.689499
    },
    "country": "JP",
    "population": 0
  },
  "cod": "200",
  "message": 0.0324,
  "cnt": 3,
  "list": [
    {
      "dt": 1456452000,
      "temp": {
        "day": 9.7,
        "min": -0.7,
        "max": 9.83,
        "night": -0.7,
        "eve": 7.08,
        "morn": 9.7
      },
      "pressure": 1035.74,
      "humidity": 82,
      "weather": [
        {
          "id": 800,
          "main": "Clear",
          "description": "clear sky",
          "icon": "01d"
        }
      ],
      "speed": 3.55,
      "deg": 186,
      "clouds": 0
    },
    {
      "dt": 1456538400,
      "temp": {
        "day": 10.83,
        "min": -3.08,
        "max": 14.18,
        "night": 1.88,
        "eve": 9.71,
        "morn": -3.08
      },
      "pressure": 1034.07,
      "humidity": 84,
      "weather": [
        {
          "id": 800,
          "main": "Clear",
          "description": "clear sky",
          "icon": "01d"
        }
      ],
      "speed": 3.22,
      "deg": 212,
      "clouds": 0
    },
    {
      "dt": 1456624800,
      "temp": {
        "day": 12.93,
        "min": -0.2,
        "max": 13.22,
        "night": 3.75,
        "eve": 9.76,
        "morn": -0.2
      },
      "pressure": 1035.92,
      "humidity": 87,
      "weather": [
        {
          "id": 800,
          "main": "Clear",
          "description": "clear sky",
          "icon": "01d"
        }
      ],
      "speed": 2.66,
      "deg": 94,
      "clouds": 0
    }
  ]
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*
*
*