National Digital Forecast Database (NDFD) API Client for Ruby

Gem Version Build Status Code Climate Dependency Status Coverage Status Inline docs Bitdeli Badge


This library provides API client access to NOAA's NDFD database for access to weather forecast information via Ruby.

NDFD Features

You can see the available forecast information that is accessible via the API on the NDFD technical description page.

In general, you can get the following:

  • Specific forecast dimensions (min/max temperature, wind speed, etc.) out to 168 hours.
  • Climate outlook probabilities (estimated averages/totals of temperature and precipitation)
  • Convective Outlook Hazard Probabilities (hazard outlook, tornadoes, etc.)
  • Probabilistic Tropical Cyclone Surface Wind Speed (measured in knots)

Client Features

The client offers a easy to use query interface and will hand back data to you in hashes, arrays and XML documents. Validates requests and data types on execution of requests (will raise contextual errors on poorly formed data in queries)

Runtime Dependencies

Ruby versions supported:

  • 2.1.x
  • 2.0.x
  • 1.9.3

Ruby versions not supported (but will be):

  • JRuby 1.7+
  • Rubinius 2.2+

Ruby versions that will not be supported:

  • <= 1.9.2 (including REE)

Libraries used:

  • savon (for SOAP support)
  • activesupport (for TimeWithZone support)
  • nokogiri (for XML/XSLT parsing)
  • http_logger (for controlling logging output from savon)


gem install ndfd-weather-forecast-client


NDFD.client is the top-level start point from whence all API calls are executed.

Most calls follow the form of:

      select(:maxt, :mint, :temp, etc.).

This will return an Array or Hash containing the data from the response depending on the type of the request.

NOTE: Dates and times passed to the where must be ActiveSupport::TimeWithZone objects.

NOTE: NDFDgen and NDFDgenByDay are not implemented in favor of using the equivalent collection-based functions.

NOTE: GmlLatLonList, GmlTimeSeries are not implemented because of their limited use (and my inability to figure out what parameters to use to make a valid request). It appears to be discontinued.

Query Method API server function Description
select NDFDgenLatLonList Returns a Hash of forecast metrics for multiple latitudes/longitudes.
select_by_days NDFDgenByDayLatLonList Returns a Hash of forecast metrics for multiple latitudes/longitudes in a 24/12 hour period for a number of days.
select_coordinates_by_zip LatLonListZipCode Returns a Hash of latitudes/longitudes for every zip code requested.
select_coordinates_by_cities LatLonListCityNames Returns a Hash of latitudes/longitudes for a pre-defined set of cities.
select_square_coordinates LatLonListSquare Returns a Array of latitudes/longitudes for the requested rectangular area.
select_gridpoint_coordinates LatLonListSubgrid Returns a Array of latitudes/longitudes for the requested subgrid.
select_linepoint_coordinates LatLonListLine Returns a Array of latitudes/longitudes between a start and end coordinate.
select_corner_coordinates CornerPoints Returns a Array of latitudes/longitudes of the corners of one of the NDFD grids.

To see a description of the NDFD Spatial Reference System (used for collecting lat/longs in an area)

To see more detailed documention, view the API Documentation