UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#059 天気予報のデータをAPIで取得してみる。天気予報API:Open-Meteo (続き)

記入日:2023-03-08 編集日:2023-03-08

SQL見るだけクエリ。今回は、天気予報のデータをAPIで取得してみます。天気予報API:Open-Meteoの続きです。取得するデータを少し間引いてみようと思います。

この記事を読むと(約5分)
APIで天気予報のデータを取得し、表示する方法がイメージできます。また、必要な時間帯のデータだけを表示する方法もイメージできます。

前回同様、Open-Meteoは、非商用利用であれば無料で使えるオープンソースの天気予報APIです。 APIキーは不要で、すぐに利用できます。世界中の場所に対して、時間ごとの7日間の天気予報を提供しています。

東京の、湿度と風速を取得してみます。

// 緯度、経度、天気変数の変数を定義する
$lat = 35.6895;
$lon = 139.6917;
$vars = "relativehumidity_2m,windspeed_10m";
$zone = "Asia%2FTokyo";

// Open-Meteo APIのURLとパラメータを作成する
$url = "https://api.open-meteo.com/v1/forecast?latitude=$lat&longitude=$lon&hourly=$vars&timezone=$zone";

// URLからJSONデータを取得
$json = file_get_contents($url);

// JSONデータを連想配列に変換
$data = json_decode($json, true);
 

表示テーブルを整形する際に関して、

前回は、APIで取得した全ての時間帯の表示ループにしましたが。

// 配列の値を表のセルとして出力する
for ($i = 0; $i < count($hourly["time"]); $i++) {
    echo "";
    foreach ($hourly as $key => $value) {
        echo "".$value[$i]."";
    }
    echo "";
}            

今回は下記の様に、表示する時間帯を4つの時間に絞って、ループさせました。

// 配列の値を表のセルとして出力する
for ($i = 0; $i < count($hourly["time"]); $i++) { 
    // $key[0]の$valueの値から最初の11文字と最後の3文字を取り除く 
    $hour = substr($hourly["time"][$i], 11, 2); 
    // $hourが00か06か12か18なら 
    if ($hour == "00" || $hour == "06" || $hour == "12" || $hour == "18") { 
        echo ""; 
        foreach ($hourly as $key => $value) { 
            echo "".$value[$i].""; 
        } 
        echo ""; 
    } 
}

東京の0時・6時・12時・18時の湿度と風速(1週間)

timerelativehumidity_2mwindspeed_10m
2025-02-09T00:00477.6
2025-02-09T06:00466.1
2025-02-09T12:00318.3
2025-02-09T18:00416.1
2025-02-10T00:00554.6
2025-02-10T06:00622.9
2025-02-10T12:00381.5
2025-02-10T18:00485.1
2025-02-11T00:00742.6
2025-02-11T06:00782.8
2025-02-11T12:00449.2
2025-02-11T18:00506.8
2025-02-12T00:00594.6
2025-02-12T06:00760.7
2025-02-12T12:00607.8
2025-02-12T18:00314.2
2025-02-13T00:00703.2
2025-02-13T06:00671.8
2025-02-13T12:002924.4
2025-02-13T18:003622.6
2025-02-14T00:003613
2025-02-14T06:00465.5
2025-02-14T12:00205
2025-02-14T18:003911.8
2025-02-15T00:004410.7
2025-02-15T06:00523.3
2025-02-15T12:00306.4
2025-02-15T18:00638.5
 

正午のみの表示だと以下の様になります。

// 配列の値を表のセルとして出力する
for ($i = 0; $i < count($hourly["time"]); $i++) { 
    // $key[0]の$valueの値から最初の11文字と最後の3文字を取り除く 
    $hour = substr($hourly["time"][$i], 11, 2); 
    
    // $hourが12なら 
    if ($hour == "12") { 
        echo ""; 
        foreach ($hourly as $key => $value) { 
            echo "".$value[$i].""; 
        } 
        echo ""; 
    } 
}             

東京の正午の湿度と風速(1週間)

timerelativehumidity_2mwindspeed_10m
2025-02-09T12:00318.3
2025-02-10T12:00381.5
2025-02-11T12:00449.2
2025-02-12T12:00607.8
2025-02-13T12:002924.4
2025-02-14T12:00205
2025-02-15T12:00306.4

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。