先日リリースした頭痛予測マップは、天気予報と低気圧の情報を元に頭痛予測の計算をしています。
この天気予報の情報取得には、Dark SkyというところのAPIを利用しました。
その他にもOpenWeatherMapやWeatherUnderGroundなどありましたが、Dark Skyに決めた理由は、1時間毎の予報が取得できる点です。
1日に最大1000回もリクエストでき、サーバーの方でキャッシュしてしまうので回数的には問題ありませんでした。
また、1000回を超えても、1リクエストあたり$0.0001だけの課金です。
課金と言っても、利用登録の際にクレジットカードの情報などは特に必要ありませんでした。
PHPでリクエスト
サーバーの方はPHPを使っているので、以下のような感じでDark Sky APIにリクエストします。
JSONで返ってくるのでデコードします。
<?php $url = "https://api.darksky.net/forecast/API_KEY/37.8267,-122.4233"; $contents = file_get_contents($url); $decode = json_decode($contents, true); print_r($decode); ?>
取得できるJSON
currentlyは現在の天気、minutelyは1分おきの0~60分まで、hourlyは1時間おきの0~48時間まで、dailyは1日おきの0~7日までの天気予報です。
Array ( [latitude] => 37.8267 [longitude] => -122.4233 [timezone] => America/Los_Angeles [currently] => Array ( [time] => 1531198488 [summary] => Clear [icon] => clear-night [nearestStormDistance] => 112 [nearestStormBearing] => 111 [precipIntensity] => 0 [precipProbability] => 0 [temperature] => 68.48 [apparentTemperature] => 68.48 [dewPoint] => 47.1 [humidity] => 0.46 [pressure] => 1017.09 [windSpeed] => 5.09 [windGust] => 8.31 [windBearing] => 252 [cloudCover] => 0.08 [uvIndex] => 0 [visibility] => 9.53 [ozone] => 307.59 ) [minutely] => Array ( [summary] => Clear for the hour. [icon] => clear-night [data] => Array ( [0] => Array ( [time] => 1531198440 [precipIntensity] => 0 [precipProbability] => 0 ) ~省略~ [60] => Array ( [time] => 1531202040 [precipIntensity] => 0 [precipProbability] => 0 ) ) ) [hourly] => Array ( [summary] => Clear throughout the day. [icon] => clear-day [data] => Array ( [0] => Array ( [time] => 1531195200 [summary] => Clear [icon] => clear-night [precipIntensity] => 0 [precipProbability] => 0 [temperature] => 70.46 [apparentTemperature] => 70.46 [dewPoint] => 45.28 [humidity] => 0.4 [pressure] => 1016.65 [windSpeed] => 4.96 [windGust] => 8.74 [windBearing] => 253 [cloudCover] => 0.09 [uvIndex] => 0 [visibility] => 10 [ozone] => 307.74 ) ~省略~ [48] => Array ( [time] => 1531368000 [summary] => Partly Cloudy [icon] => partly-cloudy-night [precipIntensity] => 0 [precipProbability] => 0 [temperature] => 59.41 [apparentTemperature] => 59.41 [dewPoint] => 55.31 [humidity] => 0.86 [pressure] => 1010.89 [windSpeed] => 6.17 [windGust] => 8.06 [windBearing] => 232 [cloudCover] => 0.29 [uvIndex] => 0 [visibility] => 10 [ozone] => 295.67 ) ) ) [daily] => Array ( [summary] => No precipitation throughout the week, with high temperatures falling to 68°F on Wednesday. [icon] => clear-day [data] => Array ( [0] => Array ( [time] => 1531119600 [summary] => Clear throughout the day. [icon] => clear-day [sunriseTime] => 1531141023 [sunsetTime] => 1531193710 [moonPhase] => 0.88 [precipIntensity] => 0 [precipIntensityMax] => 0 [precipProbability] => 0 [temperatureHigh] => 79.63 [temperatureHighTime] => 1531177200 [temperatureLow] => 56.78 [temperatureLowTime] => 1531227600 [apparentTemperatureHigh] => 79.63 [apparentTemperatureHighTime] => 1531177200 [apparentTemperatureLow] => 56.78 [apparentTemperatureLowTime] => 1531227600 [dewPoint] => 49.1 [humidity] => 0.56 [pressure] => 1017.17 [windSpeed] => 5.28 [windGust] => 13.07 [windGustTime] => 1531177200 [windBearing] => 243 [cloudCover] => 0.05 [uvIndex] => 11 [uvIndexTime] => 1531166400 [visibility] => 10 [ozone] => 307.96 [temperatureMin] => 56.47 [temperatureMinTime] => 1531141200 [temperatureMax] => 79.63 [temperatureMaxTime] => 1531177200 [apparentTemperatureMin] => 56.47 [apparentTemperatureMinTime] => 1531141200 [apparentTemperatureMax] => 79.63 [apparentTemperatureMaxTime] => 1531177200 ) ~省略~ [7] => Array ( [time] => 1531724400 [summary] => Clear throughout the day. [icon] => clear-day [sunriseTime] => 1531746107 [sunsetTime] => 1531798324 [moonPhase] => 0.14 [precipIntensity] => 0 [precipIntensityMax] => 0 [precipProbability] => 0 [temperatureHigh] => 72.07 [temperatureHighTime] => 1531778400 [temperatureLow] => 56.37 [temperatureLowTime] => 1531825200 [apparentTemperatureHigh] => 72.07 [apparentTemperatureHighTime] => 1531778400 [apparentTemperatureLow] => 56.37 [apparentTemperatureLowTime] => 1531825200 [dewPoint] => 54.89 [humidity] => 0.77 [pressure] => 1012.85 [windSpeed] => 5.1 [windGust] => 11.98 [windGustTime] => 1531785600 [windBearing] => 234 [cloudCover] => 0.01 [uvIndex] => 11 [uvIndexTime] => 1531771200 [visibility] => 10 [ozone] => 289.86 [temperatureMin] => 55.64 [temperatureMinTime] => 1531742400 [temperatureMax] => 72.07 [temperatureMaxTime] => 1531778400 [apparentTemperatureMin] => 55.64 [apparentTemperatureMinTime] => 1531742400 [apparentTemperatureMax] => 72.07 [apparentTemperatureMaxTime] => 1531778400 ) ) ) [flags] => Array ( [sources] => Array ( [0] => nearest-precip [1] => nwspa [2] => cmc [3] => gfs [4] => hrrr [5] => icon [6] => isd [7] => madis [8] => nam [9] => sref [10] => darksky ) [nearest-station] => 1.839 [units] => us ) [offset] => -7 )
各項目の意味
各項目の意味が分かりずらかったので翻訳を通してみました。
nearestStormDistanceやnearestStormBearing、cloudCover、ozoneは、日本ではあまり使わないですね。
currently
項目名 | 内容 |
---|---|
time | 時刻 |
summry | 概要 |
icon | アイコン |
nerestStormDistnce | 近くの嵐までの距離 |
nerestStormBering | 近くの嵐の向き |
precipIntensity | 降水量 |
precipProbbility | 降水確率 |
temperature | 温度 |
pprentTemperature | 体感温度 |
dewPoint | 露点 |
humidity | 湿度 |
pressure | 圧力 |
windSpeed | 風速 |
windGust | 暴風 |
windBering | 風向き |
cloudCover | 雲 |
uvIndex | UV指数 |
visibility | 可視性 |
ozone | オゾン |
minutely
項目名 | 内容 |
---|---|
time | 時刻 |
precipIntensity | 降水量 |
precipProbbility | 降水確率 |
hourly
項目名 | 内容 |
---|---|
time | 時刻 |
summry | 概要 |
icon | アイコン |
precipIntensity | 降水量 |
precipProbbility | 降水確率 |
temperature | 温度 |
pprentTemperature | 体感温度 |
dewPoint | 露点 |
humidity | 湿度 |
pressure | 圧力 |
windSpeed | 風速 |
windGust | 暴風 |
windBering | 風向き |
cloudCover | 雲 |
uvIndex | UV指数 |
visibility | 可視性 |
ozone | オゾン |
daily
最後の8項目は、よく分かりませんでした。
項目名 | 内容 |
---|---|
time | 時刻 |
summry | 概要 |
icon | アイコン |
sunriseTime | 日の出時間 |
sunsetTime | 日没時間 |
moonPhse | 月相 |
precipIntensity | 降水量 |
precipIntensityMx | 最大降水量 |
precipProbbility | 降水確率 |
temperatureHigh | 最高気温 |
temperatureHighTime | 最高気温時刻 |
temperatureLow | 最低気温 |
temperatureLowTime | 最低気温時刻 |
pprentTemperatureHigh | 体感最高気温 |
pprentTemperatureHighTime | 体感最高気温時刻 |
pprentTemperatureLow | 体感最低気温 |
pprentTemperatureLowTime | 体感最低気温時刻 |
dewPoint | 露点 |
humidity | 湿度 |
pressure | 圧力 |
windSpeed | 風速 |
windGust | 暴風 |
windGustTime | 暴風時刻 |
windBering | 風向き |
cloudCover | 雲 |
uvIndex | UV指数 |
uvIndexTime | UV指数時刻 |
visibility | 可視性 |
ozone | オゾン |
temperatureMin | 最高気温? |
temperatureMinTime | 最高気温時刻? |
temperatureMx | 最低気温? |
temperatureMxTime | 最低気温時刻? |
pprentTemperatureMin | 体感最高気温? |
pprentTemperatureMinTime | 体感最高気温時刻? |
pprentTemperatureMx | 体感最低気温? |
pprentTemperatureMxTime | 体感最低気温時刻? |