Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Product overview

D-MSSM is the Daily Medium-resolution Gap-filled Surface Soil Moisture product. It fuses data from SMAP, CYGNSS, Spire GNSS-R, and SMOS, then applies a machine-learning gap-filling algorithm to produce seamless daily global coverage.

D-MSSM surface soil moisture over Mexico, 30 August 2025.

Figure 1:D-MSSM surface soil moisture over Mexico, 30 August 2025. Values in m³/m³.

PropertyValue
Spatial resolution6 km (0.054° grid spacing)
Data levelL4
Temporal coverageMay 2015–present (CCI-calibrated historical data back to 1978)
CoverageGlobal
Unitm³/m³

Variants:

Both variants share the same file structure and variable definitions. The feed field in API responses indicates the source tier ("standard" or "nrt").


NetCDF4 format

Global attributes

AttributeDescription
description“Daily Medium-Resolution Gap-Filled Surface Soil Moisture” (May 2015–present) or “ESACCI-Combined Calibrated Historical Surface Soil Moisture” (1978–April 2015)
creatorSPIRE GLOBAL
processing_centerSpire EILAND
file_created_time_utcUTC time when the file was created (may not be present in all files)
data_levelL4
sourceMSSM vMA.mi (May 2015–present) or ESACCI-COMBINED resampled datacube version vMA.mi (1978–April 2015)
input_data_versionData release version of the input data (e.g. v04.01.98)
release_tagData release version (e.g. v02.01.98)
code_versionCode version (e.g. 0.0.1.dev1+gitd22744) (may not be present in all files)
git_hashCommit hash of the production code (may not be present in all files)
grid_mappingspatial_ref
feedData tier: "standard" or "nrt"

Variables

VariableDescriptionDimsTypeFill valueScale factorUnit
d_mssmDaily Medium-Resolution Gap-filled Surface Soil Moisture(y, x)uint82550.005m³/m³
pflagProcessing flag — bit flags recording quality and retrieval status(y, x)uint8255——
qflagQuality flag — bit flags recording surface conditions(y, x)uint8255——
aflagAdvisory flag — 0 = recommended, 1 = not recommended(y, x)uint8255——
data_source_amData source for MSSM morning product(y, x)uint8255——
data_source_pmData source for MSSM afternoon product(y, x)uint8255——
daiData Availability Index(y, x)uint82550.01—
yLatitude coordinate(y)float64NaN—degrees_north
xLongitude coordinate(x)float64NaN—degrees_east
spatial_refCoordinate reference system (WGS 84, EPSG:4326)()int64———

Processing flag (pflag)

The pflag is stored as a uint8 with a fill value of 255. It encodes quality and retrieval status per grid point.

BitConditionInterpretation
0Recommended quality0: retrieval has recommended quality; 1: not recommended quality
1Retrieval successful0: retrieval was successful; 1: retrieval was not successful

Recommended quality is determined from the qflag. If static and/or dynamic conditions are present, the retrieval is flagged as not recommended. The retrieval-successful state is determined from the dai; when dai = 0 (no input data available), no soil moisture is retrieved and pflag is set to 3 (not recommended + not successful).

Quality flag (qflag)

The qflag is stored as a uint8 with a fill value of 255. It encodes static and dynamic surface conditions that may affect data quality.

BitConditionInterpretation
0Complex topography0: not present; 1: complex topography present
1Urban area0: no urban area; 1: urban area detected
2Water body0: no water body; 1: water body detected
3Precipitation0: no/insignificant precipitation; 1: heavy precipitation detected
4Snow and ice0: no/insignificant snow and ice; 1: high snow/ice amounts detected
5Freeze/thaw0: no frozen ground; 1: frozen ground detected
6Dense vegetation0: no dense vegetation; 1: dense vegetation detected (file attribute abbreviates this as “Vegetation”)

Static conditions (complex topography, urban area, water bodies) do not change over time. Dynamic conditions (precipitation, snow/ice, freeze/thaw, dense vegetation) vary with each observation.

Sources of the static/dynamic conditions:

Aggregation rule: pflag for D-MSSM is the bitwise AND of the twice-daily pflag values; qflag is the bitwise OR.

Data source values

The data_source_am and data_source_pm variables identify the input data source for each pixel:

ValueMeaning
0Unmodified SMAP
1Modified SMAP (smoothed at boundaries with GNSS-R data)
2Single pixel tracks CYGNSS
3Single pixel tracks Spire GNSS-R
4Fused (GNSS-R tracks extended using a 3×3 window)
5Gap-filled
6Unmodified SMOS
7Modified SMOS (smoothed at boundaries)
255No data (fill value)

Data Availability Index (dai)

The dai indicates how recently observed input data contributed to the gap-filled product. It is the daily average of twice-daily dai values. Higher values indicate more recent observations; dai = 0 means no input data was available, resulting in no retrieval (pflag = 3).

To convert: dai_physical = raw_value × 0.01.

Advisory flag (aflag)

The aflag simplifies masking:


GeoTIFF format

D-MSSM GeoTIFF files contain color-coded soil moisture values with no-data set to 255. Conditions that prevent soil moisture retrieval (urban areas, water bodies, freeze/thaw, snow/ice) are pre-masked. Each delivery includes a corresponding advisory flag GeoTIFF layer.

TagDescription
creatorSPIRE GLOBAL
code_versionProduction code version
data_levelL4
descriptionProduct description
file_created_time_utcUTC creation timestamp
git_hashProduction code commit hash
input_data_versionInput data release version
processing_centerSpire EILAND
release_tagData release version
short_nameD-MSSM (data layer) or AFLAG (advisory flag layer)
sourceData source identifier
unitsm³/m³ (data layer) or — (flag layer)
CRSCoordinate Reference System

CSV and GeoJSON format

CSV and GeoJSON files contain point time series at specific locations. The following variables are included:

VariableDescriptionTypeFill valueUnit
ref_local_timeReference local time for each observationdatetime64[ns]——
d_mssmDaily Medium-Resolution Gap-filled Surface Soil Moisturefloat32NaNm³/m³
daiData Availability Indexfloat32NaN—
pflagProcessing flagfloat32NaN—
qflagQuality flagfloat32NaN—
aflagAdvisory flagfloat32NaN—
data_source_amData source (morning)float32NaN—
data_source_pmData source (afternoon)float32NaN—
latLatitudefloat64NaNdegrees
lonLongitudefloat64NaNdegrees
geometryPoint geometry (WKT format)string——

JSON (point API) response

When queried via the /soil-moisture/point endpoint with format=JSON, the response has this structure. Note that the time field is returned as valid_time (not local_time as some older documentation may indicate):

{
  "data": [
    {
      "location": {
        "coordinates": {
          "lat": 14.0,
          "lon": 100.5
        }
      },
      "times": {
        "valid_time": "2026-02-10 12:00:00"
      },
      "values": {
        "d_mssm": 0.325,
        "pflag": 0.0,
        "qflag": 0.0,
        "data_source_am": 5.0,
        "data_source_pm": 5.0,
        "dai": 0.17,
        "lat": 14.0,
        "lon": 100.5,
        "aflag": 0,
        "feed": "standard"
      }
    }
  ],
  "meta": {
    "message": null
  }
}