Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
72
Help us understand the problem. What is going on with this article?
@key

OpenWeatherMap API v2.5から天気を取得する

More than 5 years have passed since last update.

OpenWeatherMap APIにアクセスしてみたのでメモ。今のところ安定して動いているし無料サービスにしては内容も精度も必要十分かなと思います。天気予報取れるし。

AFNetworking使ったサンプルですみません。

// OpenWeatherMapの天気出力APIエンドポイント
NSString *kOpenWeatherMap3HoursForecastAPI @"http://api.openweathermap.org/data/2.5/weather?units=metric&lat=%f&lon=%f";

// 適当な緯度経度
CLLocationDegrees latitude = 39.01;
CLLocationDegrees longitude = 141.68;

NSString *urlString = [NSString stringWithFormat:kOpenWeatherMap3HoursForecastAPI, latitude, longitude];

[[AFHTTPRequestOperationManager manager] GET:urlString
                                  parameters:nil
                                     success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
}   
                                     failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

OpenWeatherMapで定義された JSON形式のWeatherオブジェクトが取得できます。

{
    base = "cmc stations";
    clouds =     {
        all = 8;
    };
    cod = 200;
    coord =     {
        lat = "39.01";
        lon = "141.68";
    };
    dt = 1386343001;
    id = 2111530;
    main =     {
        "grnd_level" = "1003.63";
        humidity = 100;
        pressure = "1003.63";
        "sea_level" = "1024.69";
        temp = "-1.631";
        "temp_max" = "-1.631";
        "temp_min" = "-1.631";
    };
    name = Ofunato;
    sys =     {
        country = JP;
        message = "0.0047";
        sunrise = 1386279482;
        sunset = 1386313849;
    };
    weather =     (
                {
            description = "sky is clear";
            icon = 02n;
            id = 800;
            main = Clear;
        }
    );
    wind =     {
        deg = "281.503";
        speed = "2.31";
    };
}

Weatherオブジェクトデータ形式

キー 意味 出力するかどうか
id 街のID 常に出力
dt データの時刻。GMTのunixtime形式(いわゆるEPOCH) 常に出力
coord.lat coord.lng 街の緯度経度 常に出力
name 街名 常に出力
main.temp 気温(ケルビン)。摂氏に変換するには273.15を引く。 常に出力
main.humidity 湿度(%) 常に出力
main.temp_min main.temp_max 最低気温、最高気温 オプション
main.pressure 気圧(hPa) 常に出力
wind.speed 風速(meter / sec) 常に出力
wind.deg 風向き (度。meteorological 時計回り?) 常に出力
clouds.all 雲の割合?(Cloudiness in %) 常に出力
weather 気象状態 オプション
rain.3h 3時間毎の降水量 オプション
snow.3h 3時間ごとの降雪量 オプション

weather.description(天気の概要)、name(土地名)は多言語化されているようなのですが、残念ながら日本語はサポートされていません。

単位について

imperial, metricを選択することが出来ます。先の例ではunits=metricを指定して摂氏で取得しています。

項目 default imperial metric
温度 ケルビン 華氏 摂氏
気圧 hPa hPa hPa
風速 メートル / 秒 不明 メートル / 秒

単位指定が無い場合は気温がケルビンになる点に注意。

単位にimperialを指定した際の風速はノットでもないしmile / secでもないしバグってるかも?(Bug #111 Wrong wind speed value with imperial units

参考

72
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
key
Python + Djangoでウェブ・アプリケーション開発、SwiftでiOSアプリ開発をやってます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
72
Help us understand the problem. What is going on with this article?