使用 REST 和 PHP 的 NCDC Web 服务天气数据

NCDC Web Services weather data with REST and PHP

我正在尝试使用 PHP 从 National Climatic Data Center's online web services 读取降水数据,但我不知道如何读取它。文档说它是一个 RESTful 网络服务。我得到了一个令牌,我已经尝试了所有我能想到的方法,并在网上搜索了我能找到的任何建议,但我无法得到 return 任何东西。我的第一步是使用 Web 服务请求数据集列表,因此我知道在请求实际数据时要使用哪个数据集。这是我一直用来尝试请求数据集的代码。谁能引导我朝着正确的方向阅读结果。

$url = "https://www.ncdc.noaa.gov/cdo-web/api/v2/datasets?stationid=COOP:010957";
$curl_post_data = array("token" => $token);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_HTTPHEADER,array('Content-type: application/json','Content-length: '.strlen($curl_post_data)));
$curl_response = curl_exec($curl);
curl_close($curl);
$json_a = json_decode($curl_response,TRUE);
var_dump($json_a); // just to see the structure.
echo "\n";
foreach($json_a as $row){
   echo $row->status;
   echo "\n";
}   

原来上面link描述的API V2已经被弃用,他们恢复为API V1。太糟糕了,他们没有费心从网上删除 V2 文档。 V1 不需要令牌,因此数据检索非常容易(在您找出正确的站点 ID 和数据集之后)。这是我的新代码:

$string = file_get_contents("https://www.ncei.noaa.gov/access/services/data/v1?dataset=local-climatological-data&stations=72509014739&units=standard&startDate=2020-02-01&endDate=2020-02-12&format=json");
$json_a = json_decode($string, TRUE);
foreach($json_a as $item){
    echo $item['DATE'] . " " . $item['HourlyDryBulbTemperature'] . "F, " . $item['HourlyPrecipitation'] . "in</br>";
}