You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

cdojs

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cdojs

JS wrapper for NCEI's Climate Data Online API

1.4.0
latest
Source
npmnpm
Version published
Weekly downloads
2
-90%
Maintainers
1
Weekly downloads
 
Created
Source

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) })

Keywords

NOAA

FAQs

Package last updated on 15 Jul 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts