cdojs
v1.4.0
Published
JS wrapper for NCEI's Climate Data Online API
Downloads
7
Maintainers
Readme
cdojs
Node+browser package for Climate Data Online (CDO) API
Installation
$ npm install --save cdojs
Usage+examples
cdojs should support all params and endpoints found on NCEI/NCDC's documentation for the CDO API.
Init the client:
var CDO = require('cdojs')
var client = new CDO('mytoken')
To retrieve the first page of queryable datasets, your code might look something like this:
client
.datasets()
.then(console.log)
Retrieve all 56 kinds of queryable temperature measurements, 25 per page (montly mean, daily minimum/maximum, etc):
client.all('datatypes', {datacategoryid: 'TEMP'}, console.log) // calls console.log once per page
Alternatively, if you want to page manually:
function getTempTypes (params) {
if (!params) params = {datacategoryid: 'TEMP'}
return client
.datatypes(params)
.then(page => (
page.results.length
? getTempTypes(CDO.paramsForNextPage(params)).then(pages => [page, ...pages])
: [page]
))
}
getTempTypes().then(console.log)
Typical usage: fetch all stations for ZIP code, then fetch daily temperatures between 2000 and 2001 for the first returned station
// init client with some default query params
var client = new CDO('mytoken', {params: { // set some default params
datasetid: 'GHCND', // "Daily Summaries"
datatypeid: 'TOBS', // "Temperature at the time of observation", one of the TEMP datatypes returned by the above query
startdate: '2000-01-01',
enddate: '2001-01-01'
}})
// fetch all stations for ZIP code
var results = []
client
.stations({locationid: 'ZIP:00002'}) // "Yukon Flats Nat Wildlife, AK 00002". Not all ZIPs have a station
.then(stations => (
client.all('data', {stationid: stations.results[0].id}, page => {
results = results.concat(page.results)
return false // return true to stop paging
})
))
.then(() => { console.log(results) })