Subsetting Parameters For NCSS Grid
Parameter Name | Required | Description & Possible Values | Constraints | Default |
---|---|---|---|---|
var |
yes | Name(s) of variables (comma separated, no blanks), or all . |
Variables must be in the dataset description. | |
north , south , east , west |
no | lat/lon bounding box, units of degrees_east , degrees_north |
south < north , west < east ; if crossing 180 meridian, use east boundary > 180 |
|
minx , miny , maxx , maxy |
no | Projection bounding box, in projection coordinate units (km ) |
min < max; use only for gridded data on a projection | |
horizStride |
no | Take only every nth point (both x and y) | 1 |
|
time |
no | Datetime as a W3C Date or present (the time slice closest to the requested time is returned) or all (all times are returned). |
Must be a time within the dataset time range. | present |
time_start , time_end , time_duration |
no | Used to specify a time range (two of these must be present). Datetime may be a W3C Date or present. Duration is a UDUNIT time or W3C time duration. |
The requested time range must intersect the dataset time range. | |
timeStride |
no | Take every nth time in the available series. | Used with time_range or all |
1 |
runtime |
no | Datetime as a W3C Date or latest (restrict to that runtime) or all . |
Used only if there is an independent runtime coordinate. | latest |
timeOffset |
no | Time as an offset from the runtime coordinate, or first or all . |
Used only for 2D time coordinate, units same as the dataset. | all |
vertCoord |
no | Restrict to specified vertical level coordinate value. | Used only if there is a vertical coordinate. | all |
ensCoord |
no | Restrict to specified ensemble coordinate. | Used only if there is an ensemble coordinate. | all |
Variable Subsetting
- You must specify a list of valid variable names, or
all
. - Variable names are case-sensitive and must be URL encoded. Be careful not to URL encode twice.
Horizontal Spatial Subsetting
- You may specify a lat/lon bounding box or, if the dataset is on a projection, a projection bounding box. If none, return the entire horizontal grid.
- Lat/lon bounds start at the
west
value and includes the area going east, until theeast
value. - Best practice is to make
east
>west
longitude, by adding360
to it, if needed.
Vertical Spatial Subsetting
- You may specify a vertical coordinate. The closest level is returned. If not specified, all vertical levels are returned.
Temporal sSbsetting
- These rules apply to non-2D time datasets.
- You may specify a time range, or a time point. If both, only the time point is used. If neither, use the present time.
- A time range (
time_start
,time_end
,time_duration
) will request all times that intersect the range (timeStride
is used if present). - Two of
time_start
,time_end
,time_duration
must be present to define a valid time range. (time_start
,time_end
may equal present.)time_start
,time_end
: specified rangetime_start
,time_duration
: starting from time_start untiltime_start + time_duration
time_end
,time_duration
: starting fromtime_end - time_duration
untiltime_end
- A time point will request the time closest to that value.
- If you set
time="all"
, then all times are returned (timeStride
is used if present). All other time parameters are ignored. time duration
:datetime
: W3C Date orpresent
- The dataset determines what Calendar is used, so you must use that calendar. There can only be one calendar per dataset.
- If no time range or time point, a
timeOffset
can be used to specify the time point.
2D Time Subsetting
- A 2D time dataset will have
CoverageType
set toFMRC
. - You may specify a
runtime
with a date,latest
orall
. Default islatest
. - You may specify a
timeOffset
with a numeric value,first
, orall
. AtimeOffset
value is a duration of time, it is added to the runtime to give the requested time. Its units must be the same as the dataset. Default isall
. Time
parameters may be used only used iftimeOffset
is not. There are 2 cases:- Runtime is set to a specific value or
latest
(notall
). Time parameters (point
orrange
) can then be used. - Runtime to set to
all
. Time point (date, orpresent
) only can then be used.
- Runtime is set to a specific value or
- If no
runtime
,timeOffset
, ortime
parameters are set, then return all times for latest runtime. - Special cases:
- Set specific
runtime = constant runtime dataset
- Set specific
timeOffset
, setrunTime
toall = constant offset dataset
- Set specific time, set
runTime
toall = constant forecast dataset
- Set specific
Interval coordinate
If the coordinate is an interval coordinate (common for vertical or time coordinates), it has a lower and upper bound, e.g., (2.0-10.0 m
) or (12-24 hours
).
The request is still made with a single value. The interval that contains the requested value is used.
If the requested value is contained in more than one interval (happens with mixed interval time coordinates), the midpoint of the interval is calculated, and the closest midpoint to the requested value is used.
In addition, NCSS supports these parameters for Grids:
Parameter Name | Required | Description & Possible Values | Constraints | Default |
---|---|---|---|---|
addLatLon |
no | Make output strictly CF compliant by adding lat/lon coordinates if needed. | true or false |
false |
accept |
no | The returned data format. | netCDF or netCDF4 |
netCDF |
Adding Lat/Lon Coordinate
To be strictly CF compliant, lat/lon coordinates must be present in the netCDF file.
For datasets that use a projection, this means that the lat/lon coordinate will be 2D (lat(y,x), lon(y,x)
).
Set this parameter to true
to add 2D lat/lon coordinates for projected data.
Output Format (accept
Parameter)
netCDF
: CF/NetCDF-3netCDF4
: CF/NetCDF-4 classic model
NCSS Grid As Point
If you specify a point location with the latitude, longitude parameters, the request becomes a grid-as-point request. Request parameters are mostly identical to regular NCSS Grid request, but what gets returned is different. If a netCDF file is requested, it will be written in CF / netCDF Discrete Sample Geometry format. Other possible return types are the same as NCSS Point requests.
Parameter Name | Required | Description & Possible Values | Constraints | Default |
---|---|---|---|---|
latitude , longitude |
no | Point location; units of degrees_east , degrees_north |
Must be within the dataset bounding box | |
accept |
no | The returned data format. | netCDF , netCDF4 , XML , CSV |
CSV |
Note:
- If you specify a point location with the
latitude
,longitude
parameters, the request becomes a grid-as-point request. Other horizontal subsetting parameters (like lat/lon or projection bounding boxes) are ignored. - Variable with vertical levels will be returned as profiles, unless a specific level is chosen.
- The returned files are written as
CF/DSG
files, eithertimeseries
(no vertical coordinate) ortimeSeriesProfile
(if there is a vertical coordinate).
Use Cases
Spatial And Coordinate Subsetting
NCSS provides two types of bounding boxes to subset the data:
-
Lat/lon bounding box is specified with the parameters
north
,south
,east
andwest
. Thenorth
andsouth
parameters are latitude values, and must be in units ofdegrees_north
and lie between +/- 90. Theeast
andwest
parameters are longitude values with units ofdegrees_east
, and may be positive or negative, and will be interpreted modulo 360. The requested subset starts at the west longitude and goes eastward until the east longitude. Therefore, when crossing the dateline, the west edge may be greater than the east edge. For grids, if the underlying dataset is on a projection, the minimum enclosing projection bounding box will be calculated and used. The data contained in the intersection of this rectangle with the data is returned. To use, inspectdataset.xml
for the<LatLonBox>
elements, which indicate the min and max extensions of the grid.For example:
<LatLonBox> <west>-153.5889</west> <east>-48.5984</east> <south>11.7476</south> <north>57.4843</north> </LatLonBox>
Example request:
&north=17.3&south=12.088&west=140.2&east=160.0
-
Projection bounding box (only on grid datasets with projections) is specified with the parameters
minx
,miny
,maxx
andmaxy
. These are projection coordinates inkilometers
on the projection plane; the data contained in the intersection of this rectangle with the data is returned. To use, inspect thedataset.xml
for the<projectionBox>
elements, which indicate the min and max extensions of the grid.For example:
<gridSet name="time layer_between_two_pressure_difference_from_ground_layer y x"> <projectionBox> <minx>-4264.248291015625</minx> <maxx>3293.955078125</maxx> <miny>-872.8428344726562</miny> <maxy>4409.772216796875</maxy> </projectionBox> ...
Example request:
&minx=-500&miny=-1600&maxx=500&maxy=0
By default, if no spatial subsetting is specified, the service returns all the features in the dataset.
Single-Point Requests
The NetCDF Subset Service allows the user to extract data for a point of interest by specifying its latitude and longitude. The result differs depending on the underlying dataset.
If it’s a grid dataset, that means we are using the grid-as-point service.
NCSS will find the grid cell in which the lat/lon falls and return its data as if it were a point feature.
The supported output formats are netCDF
, netCDF4
, XML
, and CSV
.
If it’s a station dataset, NCSS will return data for the station nearest the specified lat/lon.
The supported output formats are netCDF
, netCDF4
, XML
, CSV
and WaterML2
.
Point datasets do not support single-point requests.
For example:
?req=station&var=temp&latitude=40.2&longitude=61.8
This finds the station nearest to (lat=40.2, lon=61.8
) and returns its temperature data.
Temporal Subsetting And Valid Time Ranges
There are several ways to do temporal subsetting requests:
Default
: If no temporal subseting is specified, the closest time to the current time is returned.All time range
: A shorthand to request all the time range in a dataset is setting the parametertime=all
. This can also be done by providing a valid temporal range containing the entire dataset time range.One single time
: Passing the parameter time will get the time slice closest to the requested time if it is within the time range of the dataset.Valid time range
: A valid time range is defined with two of the three parameters:time_start
,time_end
, andtime_duration
.
Times (time
, time_start
, and time_end
) must be specified as W3C Date or present
and time_duration
as a W3C time duration.
Examples of time query strings with valid temporal ranges:
time_start=2007-03-29T12:00:00Z&time_end=2007-03-29T13:00:00Z
(between 12 and 1 pm Greenwich time)time_start=present&time_duration=P3D
(get 3 day forecast starting from the present)time_end=present&time_duration=PT3H
(get last 3 hours)time=2007-03-29T12:00:00Z
time=present
time=all
Vertical Coordinate Subsetting
Subsetting on the vertical axis of a variable or variables with the same vertical levels may be done with the vertCoord
parameter.
By default, all vertical levels are returned.
Single Variable Requests
Note that these single variable requests can be easily extended to multi-variable request by simply passing a comma separated list of variables in the var= parameter
.
Please note that for grid datasets, each variable in the request must have the same vertical levels.
Examples:
# | Request | Query String |
---|---|---|
1 | All of the data for the variable Temperature_pressure for the closest time to the current time. |
?var=Temperature_pressure&temporal=all |
2 | All of the data for the variable Temperature_pressure available in a given time range. |
?var=Temperature_pressure&time_start=2015-08-19Z&time_end=2015-08-20T12:00:00Z |
3 | All of the data for the variable Temperature_pressure for a specific time. |
?var=Temperature_pressure&time=2015-09-06T00:00:00Z |
4 | Subset the data for the variable Temperature_pressure over a given lat/lon bounding box for a specific time. |
?var=Temperature_pressure&time=2015-09-06T00:00:00Z&north=41&west=-109.05&east=-102.05&south=37 |
5 | Temperature_pressure for every 5th point on the grid (deltax=deltay=5 ) |
?var=Temperature_pressure&horizStride=5 |
6 | Temperature_pressure for every 5th point on the grid over a given lat/lon bounding box. |
?var=Temperature_pressure&north=41&west=-109.5&east=-102.5&south=37&horizStride=5 |
7 | Temperature_pressure at a particular vertical level: 1000 mb (see note below). |
?var=Temperature_pressure&vertCoord=1000 |
8 | Air_temperature for stations named LECO , LEST , and LEVX . |
?var=air_temperature&subset=stns&stns=LECO,LEST,LEVX |
Glossary
ISO Date
See W3C Date
W3C Date
For our purposes, a W3C Date, which is a profile of an ISO Date, can be a dateTime
or a date
:
A dateTime
has the form: '-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
where:
'-'? yyyy
is a four-or-more digit, optionally negative-signed numeral that represents the year; if more than four digits, leading zeros are prohibited, and'0000'
is prohibited; also, note that a plus sign is not permitted.- the remaining
'-'
are separators between parts of thedate
portion; - the first
mm
is a two-digit numeral representing the month; dd
is a two-digit numeral representing the day;'T'
is a separator indicating time-of-day follows;hh
is a two-digit numeral representing the hour;'24'
is permitted if the minutes and seconds represented are zero, and thedateTime
value so represented is the first instant of the following day (the hour property of adateTime
object in the value space cannot have a value greater than23
);':'
is a separator between parts of the time-of-day portion;- the second
mm
is a two-digit numeral representing the minute; ss
is a two-integer-digit numeral representing the whole seconds;'.' s+
(if present) represents the fractional seconds;zzzzzz
(if present) represents the time zone (as described below).
For example, 2002-10-10T12:00:00-05:00
(noon on 10 October 2002, Central Daylight Savings Time as well as Eastern Standard Time in the U.S.) is 2002-10-10T17:00:00Z
, five hours later than 2002-10-10T12:00:00Z
.
A date
is the same as a dateTime
without the time part : '-'? yyyy '-' mm '-' dd zzzzzz?
W3C Time Duration
The lexical representation for duration is the ISO 8601 extended format PnYn MnDTnH nMnS
, where nY
represents the number of years, nM
the number of months, nD
the number of days, 'T'
is the date/time separator, nH
the number of hours, nM
the number of minutes and nS
the number of seconds.
The number of seconds can include decimal digits to arbitrary precision.
The values of the Year
, Month
, Day
, Hour
and Minutes
components are not restricted but allow an arbitrary unsigned integer, i.e., an integer that conforms to the pattern [0-9]+
.
Similarly, the value of the Seconds
component allows an arbitrary unsigned decimal.
According to ISO 8601, at least one digit must follow the decimal point if it appears.
That is, the value of the Seconds
component must conform to the pattern (\.[0-9])?
.
Thus, the lexical representation of duration does not follow the alternative format of 5.5.3.2.1 in ISO 8601.
An optional preceding minus sign (-
) is allowed, to indicate a negative duration.
If the sign is omitted, a positive duration is indicated.
For example, to indicate a duration of 1 year, 2 months, 3 days, 10 hours, and 30 minutes, one would write: P1Y2M3DT10H30M
.
One could also indicate a duration of minus 120 days as: -P120D
.
Reduced precision and truncated representations of this format are allowed provided they conform to the following:
- If the number of years, months, days, hours, minutes, or seconds in any expression equals zero, the number and its corresponding designator may be omitted. However, at least one number and its designator must be present.
- The seconds part may have a decimal fraction.
( The designator
'T'
must be absent if and only if all of the time items are absent. The designator'P'
must always be present.
For example, P1347Y
, P1347M
, and P1Y2MT2H
are all allowed, as are P0Y1347M
and P0Y1347M0D
.
P-1347M
is not allowed although -P1347M
is.
P1Y2MT
is not.