epixian / laravel-noaa
为NOAA气候数据API(https://ncdc.noaa.gov/cdo-web/api/v2)提供的包装器
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~5.3|~6.0
- illuminate/support: >=5.3
Requires (Dev)
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2024-09-11 01:07:57 UTC
README
Laravel NOAA是NOAA气候数据API的包装器,该API位于https://ncdc.noaa.giv/cdo-web/api/v2。
安装
从您的源目录中,使用以下命令
$ composer require epixian/laravel-noaa
发布资源
$ php artisan vendor:publish --tag=epixian-laravel-noaa
配置
将以下内容添加到您的.env文件中
NOAA_TOKEN=YOUR_NOAA_TOKEN_HERE
在https://www.ncdc.noaa.gov/cdo-web/token注册令牌。
用法
有关API请求参数的完整列表,请访问:https://www.ncdc.noaa.gov/cdo-web/webservices/v2。
必需
{requestType}()
其中{requestType}可以是以下之一
datasetsdataCategoriesdataTypeslocationCategorieslocationsstationsdata
设置要生成的请求类型。
get()
执行请求并返回JSON解码的结果(通常是数组),具体取决于API响应。注意:需要先调用请求类型方法,并且在方法链中必须是最后一个调用。
// fetch all datasets $response = \Noaa::datasets()->get();
或者,您可以为get()提供一个单独的string参数,表示属于该请求类型的id(对所有请求类型方法都有效,除了data())
// fetch dataset with id of 'GSOM' $dataset = \Noaa::datasets()->get('GSOM');
可选
from(startDate)
startDate是一个包含有效ISO格式日期的字符串(例如'2010-10-02')。注意:对于data()请求类型,此字段是必需的。
to(endDate)
endDate是一个包含有效ISO格式日期的字符串(例如'2010-10-07')。注意:对于data()请求类型,此字段是必需的。
orderBy(field, direction)
field是一个包含以下之一的字符串:id、name、mindate、maxdate或datacoverage。
direction是一个可选字符串,包含asc(省略时默认值)或desc。
limit(number)
省略时默认为25。
offset(number)
省略时默认为0。注意:API返回的索引从1开始。`offset(0)`和`offset(1)`产生相同的结果。
Laravel风格助手
提供了一些方法别名以方便使用
latest()- 等价于orderBy('maxdate', 'desc')oldest()- 等价于orderBy('mindate', 'asc')skip(number)-offset()的别名take(number)-limit()的别名where(field, value)- 设置通用参数(请参阅https://www.ncdc.noaa.gov/cdo-web/webservices/v2)
可以将请求约束链在一起以细化或限制返回的数据
$dataset = \Noaa::datasets()->from('1970-10-03')->to('2012-09-10')->take(50)->get();
以下详细说明了特定于请求类型的额外约束方法。
数据集
返回适用于给定约束(如果有的话)的可用数据集。以下为可选约束方法
withDataType(id)
id是一个包含单个有效数据类型ID的字符串,或者是一个表示多个数据类型ID的字符串数组。
$dataset = \Noaa::datasets()->withDataType('ACMH')->get(); // or $dataset = \Noaa::datasets()->withDataType(['ACMH', 'MLY-TAVG-NORMAL'])->get();
withLocation(id)
id是一个包含单个有效位置ID的字符串,或者是一个表示多个位置ID的字符串数组。
$dataset = \Noaa::datasets()->withLocation('FIPS:37')->get(); // or $dataset = \Noaa::datasets()->withLocation(['FIPS:09', 'FIPS:10'])->get();
withStation(id)
id 是一个包含单个有效站点的字符串 ID,或者是一个表示多个站点 ID 的字符串数组。
$dataset = \Noaa::datasets()->withStation('COOP:310090')->get(); // or $dataset = \Noaa::datasets()->withStation(['COOP:310090', 'COOP:310184'])->get();
数据类别
返回适用于给定约束条件(如果有)的可用数据类别。以下可选约束方法可用:
withDataset(id)
id 是一个包含单个有效数据集 ID 的字符串,或者是一个表示多个数据集 ID 的字符串数组。
$dataset = \Noaa::dataCategories()->withDataset('ACMH')->get(); // or $dataset = \Noaa::dataCategories()->withDataset(['ACMH', 'GSOM'])->get();
withLocation(id)
id是一个包含单个有效位置ID的字符串,或者是一个表示多个位置ID的字符串数组。
$dataset = \Noaa::dataCategories()->withLocation('FIPS:37')->get(); // or $dataset = \Noaa::dataCategories()->withLocation(['FIPS:09', 'FIPS:10'])->get();
withStation(id)
id 是一个包含单个有效站点的字符串 ID,或者是一个表示多个站点 ID 的字符串数组。
$dataset = \Noaa::dataCategories()->withStation('COOP:310090')->get(); // or $dataset = \Noaa::dataCategories()->withStation(['COOP:310090', 'COOP:310184'])->get();
数据类型
返回适用于给定约束条件(如果有)的可用数据类型。以下可选约束方法可用:
withDataset(id)
id 是一个包含单个有效数据集 ID 的字符串,或者是一个表示多个数据集 ID 的字符串数组。
$dataset = \Noaa::dataTypes()->withDataset('ACMH')->get(); // or $dataset = \Noaa::dataTypes()->withDataset(['ACMH', 'GSOM'])->get();
withLocation(id)
id是一个包含单个有效位置ID的字符串,或者是一个表示多个位置ID的字符串数组。
$dataset = \Noaa::dataTypes()->withLocation('FIPS:37')->get(); // or $dataset = \Noaa::dataTypes()->withLocation(['FIPS:09', 'FIPS:10'])->get();
withStation(id)
id 是一个包含单个有效站点的字符串 ID,或者是一个表示多个站点 ID 的字符串数组。
$dataset = \Noaa::dataTypes()->withStation('COOP:310090')->get(); // or $dataset = \Noaa::dataTypes()->withStation(['COOP:310090', 'COOP:310184'])->get();
withDataCategory(id)
id 是一个包含单个有效数据类别 ID 的字符串,或者是一个表示多个数据类别 ID 的字符串数组。
$dataset = \Noaa::dataTypes()->withDataCategory('ANNAGR')->get(); // or $dataset = \Noaa::dataTypes()->withDataCategory(['ANNAGR', 'ANNTEMP'])->get();