LoginSignup
36
30

More than 5 years have passed since last update.

OpenWeatherMapから気象情報を取得する

Last updated at Posted at 2015-11-14

世界中の気象情報を取得でき、商用利用も可能なWebサービス「OpenWeatherMap」の利用手順を記します。

アカウントの作成

OpenWeatherMapサイトの「SignUp」ページで新しいアカウントを作成します。
次の情報を入力して「Create Account」ボタンをクリックしてください。

  • ユーザ名
  • 電子メールアドレス
  • パスワード

スクリーンショット 2015-11-14 3.06.16.png

APIキーの取得

アカウントが作成されると自身の設定画面が表示されます。
そこに記載されている「API key」が利用可能なキー文字列となります。

Freeプランの制限について

自アカウントの設定画面にある「My Services」をクリックすると、気象情報を取得する際の上限が表示されます。
「10分間に600回」かつ「1日あたり50,000回」のアクセスがFreeプランの上限のようです。

スクリーンショット 2015-11-14 3.27.38.png

気象情報の取得

気象情報を取得する際のオプションはURLパラメータで指定します。

取得形式

パラメータ名: mode

意味
(省略時) JSON形式で取得
xml XML形式で取得
html HTML形式で取得

温度単位

パラメータ名: units

意味
(省略時) ケルビン
metric 摂氏
imperial 華氏

指定地点の気象情報の取得

都市名での取得

パラメータ名: q={都市名},{国コード(ISO3166)}
指定例: q=Sapporo-shi,jp
 

都市IDでの取得

パラメータ名: id={都市ID}
指定例: id=2128295

都市名で曖昧検索するよりもID値で明確に指定する方式が推奨されています。
こちらから都市一覧「city.list.json.gz」をダウンロードしてください。

 

緯度・経度での取得

パラメータ名: lat={緯度}&lon={経度}
指定例: lat=43.064171&lon=141.346939

正確な座標でない場合、近似地点の気象情報が返却されます。

  


取得例

取得したAPIキーを用いて、札幌市の気象情報を取得してみます。
都市名を指定して問い合わせる場合のURL例は次の通り。(気温は「摂氏」)

情報は JSON形式の文字列 の形で取得できます。

{"message":"accurate","cod":"200","count":1,"list":
  [{"id":2128295,
    "name":"Sapporo-Shi",
    "coord":{"lon":141.35,"lat":43.058},
    "main":{"temp":5,"pressure":1030,"humidity":80,"temp_min":5,"temp_max":5},
    "dt":1447435800,
    "wind":{"speed":5.1,"deg":150},
    "sys":{"country":"Japan"},
    "clouds":{"all":75},
    "weather":
      [{"id":803,
        "main":"Clouds",
        "description":"broken clouds",
        "icon":"04n"
      }]
  }]
}

Freeプランでの気象データの更新間隔は「1〜2時間」なので、急激な天候の変化には追従できないかもしれません。
その場合は更新間隔の短い Developerプラン などへの変更を検討すべきでしょう。
(もちろん金銭的に余裕がある場合に限りますが)

アイコン画像の取得

weather:icon の"04n"は気象アイコンのファイル名です。
次のURLでアイコン画像をダウンロードできます。

36
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
30