epixian/laravel-noaa

为NOAA气候数据API(https://ncdc.noaa.gov/cdo-web/api/v2)提供的包装器

0.3.1 2019-10-10 14:03 UTC

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}可以是以下之一

设置要生成的请求类型。

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是一个包含以下之一的字符串:idnamemindatemaxdatedatacoverage

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();