This JSON format is meant for encoding meteorological and oceanographic forecast timeseries data for a specific geographical point on earth.
This documentation has two parts. The first part describes the structure of the JSON format. The second part describes how this format is used in our services to represent forecast data.
The format has three main parts:
Here is an excerpt of a forecast response:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
10,
60.1,
267
]
},
"properties": {
"meta": {
"updated_at": "2020-06-10T13:04:26Z",
"units": {
"air_pressure_at_sea_level": "hPa",
"air_temperature": "celsius",
"air_temperature_max": "celsius",
"air_temperature_min": "celsius",
"cloud_area_fraction": "%",
"cloud_area_fraction_high": "%",
"cloud_area_fraction_low": "%",
"cloud_area_fraction_medium": "%",
"dew_point_temperature": "celsius",
"fog_area_fraction": "%",
"precipitation_amount": "mm",
"precipitation_amount_max": "mm",
"precipitation_amount_min": "mm",
"probability_of_precipitation": "%",
"probability_of_thunder": "%",
"relative_humidity": "%",
"ultraviolet_index_clear_sky": "1",
"wind_from_direction": "degrees",
"wind_speed": "m/s",
"wind_speed_of_gust": "m/s"
}
},
"timeseries": [
{
"time": "2020-06-10T13:00:00Z",
"data": {
"instant": {
"details": {
"air_pressure_at_sea_level": 1020.5,
"air_temperature": 20.7,
"cloud_area_fraction": 58.0,
"cloud_area_fraction_high": 47.7,
"cloud_area_fraction_low": 17.7,
"cloud_area_fraction_medium": 1.7,
"dew_point_temperature": 9.5,
"fog_area_fraction": 0.0,
"relative_humidity": 48.6,
"ultraviolet_index_clear_sky": 4.7,
"wind_from_direction": 151.8,
"wind_speed": 2.5,
"wind_speed_of_gust": 6.6
}
},
"next_12_hours": {
"summary": {
"symbol_code": "partlycloudy_day"
},
"details": {
"probability_of_precipitation": 2.2
}
},
"next_1_hours": {
"summary": {
"symbol_code": "partlycloudy_day"
},
"details": {
"precipitation_amount": 0.0,
"precipitation_amount_max": 0.0,
"precipitation_amount_min": 0.0,
"probability_of_precipitation": 0.0,
"probability_of_thunder": 0.0
}
},
"next_6_hours": {
"summary": {
"symbol_code": "partlycloudy_day"
},
"details": {
"air_temperature_max": 20.7,
"air_temperature_min": 18.4,
"precipitation_amount": 0.0,
"precipitation_amount_max": 0.0,
"precipitation_amount_min": 0.0,
"probability_of_precipitation": 1.1
}
}
}
},
[..]
You can get a complete forecast response using the /complete
method, e.g.
https://api.met.no/weatherapi/locationforecast/2.0/complete?lat=60.10&lon=10
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
10,
60.1,
267
]
},
We use the GeoJSON standard to structure our format, see our documentation for more details.
All forecast data are listed under the GeoJSON attribute called properties
.
"meta": {
"updated_at": "2020-06-10T13:04:26Z",
"units": {
"air_pressure_at_sea_level": "hPa",
"air_temperature": "celsius",
"air_temperature_max": "celsius",
"air_temperature_min": "celsius",
"cloud_area_fraction": "%",
"cloud_area_fraction_high": "%",
"cloud_area_fraction_low": "%",
"cloud_area_fraction_medium": "%",
"dew_point_temperature": "celsius",
"fog_area_fraction": "%",
"precipitation_amount": "mm",
"precipitation_amount_max": "mm",
"precipitation_amount_min": "mm",
"probability_of_precipitation": "%",
"probability_of_thunder": "%",
"relative_humidity": "%",
"ultraviolet_index_clear_sky": "1",
"wind_from_direction": "degrees",
"wind_speed": "m/s",
"wind_speed_of_gust": "m/s"
}
},
Currently we have only two pieces of metadata in our forecast data.
The first bit is updated_at
. This specifies the most recent time when we
updated the forecast data.
The second piece of metadata is units
. The unit of all forecast parameters
listed in the forecast data are listed in this block. The units are listed in
each forecast document, but the unit for e.g air_temperature
will be same for
all locations. We will notify you about any change in unit values for a
parameter.
The forecast timeseries is structured as an array of forecast objects. The array is always sorted with increasing time.
The time resolution for a timeseries can vary. E.g the first half of a timeseries can have time values with one hour intervals, while the last half of the timeseries can have time values with six hour intervals.
Each forecast object contains a time
attribute and a number of forecast
parameters for that time. We have two main types of forecast parameters:
These parameters are found under the instant
object. These parameters, e.g
air_temperature
has a value that describes the state at that exact time
instant.
These parameters are found under a number of objects: next_1_hours
,
next_6_hours
, next_12_hours
. These parameters, e.g precipitation_amount
describe a period of time. E.g precipitation_amount
under the object
next_1_hours
describe the amount of forecasted precipitation for the period
time
+ 1 hour.
The parameters under the object summary
describes the weather situation based
on many of the other parameters. E.g symbol_code
will describe the weather
situation for period of time, and includes information about clouds,
precipitation and more. It is also used as the basename of the weathericon
filename, by appending the desired extension (.png
, .svg
or similar).
Please note that there will typically be multiple period objects for any given time value, e.g one forecast object
can have next_1_hours
, next_6_hours
and next_12_hours
. There will never be a period object with shorter period
than the current time resolution in the timeseries. So, if its 6 hours until the next time value, the current forecast object
will NOT have a next_1_hours
period object.