National Weather Service United States Department of Commerce

Users can access NDFD data in several ways for their own customizable uses as
described and discussed through various links contained in this page:

NDFD Data Access

In addition, while users can access NDFD element images via this web-based map viewer, some users may require further map customization and/or the ability to overlay their own layers on top of NDFD image layers (constructing a mash-up). Therefore, users can access the same Web Map Service (WMS) used in this web-based map viewer to retrieve images of NDFD data.

The first step in creating images of NDFD data via the WMS is to retrieve information on the various layers via a request for the WMS' GetCapabilities document. This is accomplished by entering this map viewer's base URL in a web browser followed by information needed to make the request from the WMS:

https://digital.weather.gov/ndfd/wms?REQUEST=GetCapabilities

WMS layers for individual regions are available at these endpoints:

CONUS: https://digital.weather.gov/ndfd.conus/wms?REQUEST=GetCapabilities
Alaska: https://digital.weather.gov/ndfd.alaska/wms?REQUEST=GetCapabilities
Hawaii: https://digital.weather.gov/ndfd.hawaii/wms?REQUEST=GetCapabilities
Puerto Rico: https://digital.weather.gov/ndfd.puertori/wms?REQUEST=GetCapabilities
Guam: https://digital.weather.gov/ndfd.guam/wms?REQUEST=GetCapabilities
Micronesia: https://digital.weather.gov/ndfd.micrones/wms?REQUEST=GetCapabilities
Tropical Atlantic: https://digital.weather.gov/ndfd.nhemi/wms?REQUEST=GetCapabilities
Tropical Pacific: https://digital.weather.gov/ndfd.npacocn/wms?REQUEST=GetCapabilities
Oceanic: https://digital.weather.gov/ndfd.oceanic/wms?REQUEST=GetCapabilities

The returned information is in the form of an Extensible Markup Language (XML) document outlining available layer information such as name, areal extents, possible image formats, and map projection. For example, the NDFD Maximum Temperature information will be displayed as such:

<Layer cascaded="1" queryable="0">
   <Name>ndfd.conus.maxt</Name>
   <Title>NDFD Forecast conus.maxt</Title>
   <Abstract> This service provides weather forecasts from the National Digital Forecast Database. 
   Day 1-3 forecasts are updated every 30 minutes. Day 4-7 forecasts are updated every 6 hours. 
   "vtit" dimension: "Valid Time / Issuance Time". This WMS endpoint requires only the Valid Time, 
   in the format: YYYY-MM-DDTHH:MI. You will get the most recently issued forecast for that valid time. 
   See the GetCapabilities document for available valid times. This service updates immediately upon 
   receiving new forecasts. </Abstract>
   <Dimension name="season" default="0">^-*[0-1]{1}$</Dimension>
   <Dimension name="vtit" default="1970-01-01T00:00">2023-03-16T00:00,2023-03-17T00:00,
   2023-03-18T00:00,2023-03-19T00:00,2023-03-20T00:00,2023-03-21T00:00,2023-03-22T00:00</Dimension>
   <BoundingBox SRS="EPSG:3857" minx="-15028131.323000" miny="-0.296770" maxx="-5009377.307578" maxy="7514065.219441"/>
   <SRS>EPSG:3857</SRS>
   <SRS>EPSG:900913</SRS>
</Layer>


The important parts of each layer for an image request sent to the WMS are:

- Name: the layer name, in this case ndfd.conus.maxt
(Note: that layers are arranged by type.region.name plus other subtypes accounting for points, units, winds)
- Dimension name="vtit" default="1970-01-01T00:00": the valid time of the data and its format when making the request.
More information on this is described below.
- Bounding Box: these are the maximum extents of the image data in Spherical Mercator coordinates. These can be tailored to one's area of interest.
- SRS: this is a reference to the map projection number, in this case either 3857 or 900913

There are a few more pieces of information required in order to make a map image request to the WMS and will be described in this example:



As this example highlights, the following are needed in order to request an image from the WMS:
- LAYERS= name(s) of NDFD layers on the image (ndfd.conus.maxt, mulitple images per region can be specified)
- FORMAT= image format (PNG) (image/png)
- SEASON= (season flag). For NDFD temperature elements, we offer several color curves. Winter: -1, Spring/Fall: 0, Summer: 1. Default is 0.
- VERSION= version of the WMS. 1.3.0 should be used.
- VTIT= Valid Time (with or without optional issuance time).

Examples:
2024-04-20T00:00
2024-04-20T00:00_2024-04-18T00:00

If you do not specify VTIT, you will get a default map. The default map is the most recently issued forecast for the first available valid time. Be aware, this is also the map you will see if you select a valid time that is not actually available.

If you specify only a valid time, you will get the most recently issued forecast for that valid time.

If you specify a valid time with an issuance time, you can see previously issued forecasts. You can find a json encoded list of issuance times for a specific region/element/valid time. For conus maxt: https://digital.weather.gov/scripts/get_issuancetimes.php?grid=ndfd&elmt=maxt&region=conus&vt=2024-04-20T00:00

- SERVICE=WMS
- REQUEST=GetMap
- CRS= Map projection (EPSG:3875, same as SRS but CRS used for WMS verion 1.3.0)
- WIDTH= width of the resulting image in pixels (983)
- HEIGHT= height of the resulting image in pixels (579)
- BBOX= layer extents in Spherical Mercator coordinates (meters)

In order to specify the Valid Time in the GetMap request, one must know the date/time nature of the various NDFD data elements.
By downloading this spreadsheet, which contains detailed information about NDFD elements,

Detailed NDFD Element Spreadsheet

one can determine valid times of interest from the "forecast range from day 1 at 00z" and
the "time interval day 1-3/4-7" columns.

You can also find the available valid times in the WMS GetCapabilities document.

The format of the Valid Time is:

YYYY-MM-DDTHH:MM

where:

YYYY = four digit year (e.g. 2023)
MM = two digit month (e.g. 03)
DD = two digit day (e.g. 17)
T = the letter "T"
HH = two digit hour, 24 hour format (e.g. 02, 14)
MM = two digit minute, 24 hour format (e.g. 00, 30)



Native Resolutions:

This WMS stores tiles natively at Google Maps zoom levels. Additionally, we store tiles at one intermediate zoom level between Google Maps standard zooms.

The widest zoom is at 156543.0339280410 meters per pixel. The next resolution is at (156543.0339280410 / sqrt(2)), or 110692.6408380340 meters per pixel, and so on. Best practice is to calculate your corner points and image sizes carefully to correspond to a native zoom level. This prevents resampling artifacts in your images. This is most important for .points layers, where resampled text can appear distorted.

Additional notes for ArgGIS, QGIS, or similar GIS platforms:

In ArcGIS, one can use the WMS by specifying most of the URL parameter string without the BBOX, HEIGHT, and WIDTH
parameters and then specifying VTIT as an extra parameter.
Similarly for QGIS, the URL doesn't need the BBOX, HEIGHT, and WIDTH parameters, but DOES need the parameters to be URL encoded.

Look for changes in the future to this page in the future as we work to make this WMS more user-friendly and with less guesswork.