- Warning: Undefined variable $index in Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements() (line 95 of modules/custom/responsive_bg_image_formatter/src/Plugin/Field/FieldFormatter/ResponsiveBgImageFormatter.php).
Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements(Object, 'en') (Line: 89) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 265) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 340) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 282) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 239) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 243) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Warning: Undefined array key "media" in Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements() (line 112 of modules/custom/responsive_bg_image_formatter/src/Plugin/Field/FieldFormatter/ResponsiveBgImageFormatter.php).
Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements(Object, 'en') (Line: 89) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 265) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 340) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 282) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 239) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 243) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements() (line 126 of modules/custom/responsive_bg_image_formatter/src/Plugin/Field/FieldFormatter/ResponsiveBgImageFormatter.php).
Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements(Object, 'en') (Line: 89) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 265) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 340) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 282) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 239) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 243) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Warning: Undefined variable $index in Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements() (line 153 of modules/custom/responsive_bg_image_formatter/src/Plugin/Field/FieldFormatter/ResponsiveBgImageFormatter.php).
Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements(Object, 'en') (Line: 89) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 265) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 340) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 282) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 239) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 243) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Soil Moisture
Soil moisture plays an important role in agricultural monitoring, drought and flood forecasting, forest fire prediction, water supply management, and other natural resource activities. Soil moisture observations can forewarn of impending drought or flood conditions before other more standard indicators are triggered.
What Is Soil Moisture?

As defined by the AMS Glossary of Meteorology, soil moisture is “the total amount of water, including the water vapor, in an unsaturated soil.” Soil moisture—sometimes also called soil water—represents the water in land surfaces that is not in rivers, lakes, or groundwater, but instead resides in the pores of the soil. The level of soil moisture is determined by a host of factors beyond weather conditions, including soil type and associated vegetation. In turn, soil moisture levels affect a range of soil and plant dynamics. Surface soil moisture is the water that is in the upper 10 cm of soil, whereas root zone soil moisture is the water that is available to plants—generally considered to be in the upper 200 cm of soil.
Data, Maps, and Tools
The amount of soil moisture can have significantly different implications depending on location, season, soil type, and depth. For example, the same absolute value of soil moisture can indicate a serious drought in the Southeast, while it represents normal soils in the Southwest. Interpreting soil moisture data requires assessing and maintaining a range of other “metadata,” particularly soil characteristics. It also means that more than one unit of measure may be needed to adequately describe conditions, including not only “volumetric water” (the volume of water present), but also anomalies, daily ranking percentages, etc.
The techniques for monitoring soil moisture are undergoing rapid growth and innovation with the advent of new in situ and proximal sensors, new satellite and other remote sensing technologies, and enhanced modeling capabilities. This is leading to an increasing number of soil moisture data products in development.
NASA’s Short-term Prediction and Transition Center – Land Information System (SPoRT-LIS) provides high-resolution (about 3-km) gridded soil moisture products in real-time to support regional and local modeling and improve situational awareness. The 0–100 cm soil moisture percentile data has shown to be a utility for drought monitoring. The near-surface (0–10 cm) layer responds quickly to heavy precipitation and rapidly drying events. In deeper layers, soil moisture evolves more slowly and has demonstrated greater utility overall for drought monitoring purposes since drought evolves typically on timescales of weeks to years. Learn more.
Range | Map Hex Color |
---|---|
0 - 2 | #630f08 |
2 - 5 | #da2d20 |
5 - 10 | #de7a2e |
10 - 20 | #f6b573 |
20 - 30 | #ffff66 |
30 - 70 | #c8c8c8 |
Range | Map Hex Color |
---|---|
70 - 80 | #c3f7b2 |
80 - 90 | #78f573 |
90 - 95 | #37d23c |
95 - 98 | #0fa00f |
98 - 100 | #3c83e8 |
Range | Map Hex Color |
---|---|
0 - 2 | #730000 |
2 - 5 | #e60000 |
5 - 10 | #e69800 |
10 - 20 | #fed37f |
20 - 30 | #fefe00 |
30 - 70 | #c8c8c8 |
Range | Map Hex Color |
---|---|
70 - 80 | #aaf596 |
80 - 90 | #4ce600 |
90 - 95 | #38a800 |
95 - 98 | #145a00 |
98 - 100 | #002673 |
Data and Map Gallery
Soil moisture data, maps, and tools vary by the source of their input data (e.g., in situ sensors, satellites, numerical models, or a blend of any of these), the depths they represent, and the metrics they display (e.g., volumetric water content, mm, changes and anomalies, daily ranking percentages). This supports a range of different end user applications.
Soil moisture conditions at the daily and monthly scales depicting total soil moisture, percentiles and anomalies, as well as monthly and seasonal change.
Groundwater and soil moisture drought indicators based on terrestrial water storage observations derived from GRACE satellite data and integrated with other observations, produced each week by NASA
NASA’s Short-term Prediction and Transition Center – Land Information System (SPoRT-LIS) provides high-resolution (about 3-km) gridded soil moisture products in real-time to support regional and lo
The research-based website NationalSoilMoisture.com provides high-resolution gridded soil moisture products derived from in situ soil moisture measurements, Natural Resources Conservation
The U.S. Climate Reference Network (USCRN) is a NOAA network of climate monitoring stations with sites across the continental U.S., Alaska, and Hawaii.
The Soil Climate Analysis Network (SCAN) provides soil and climate data to support natural resource assessments and conservation activities, focusing on agricultural areas of the U.S.

Related Content
By Sector | Agriculture
Agricultural drought occurs when drought conditions negatively affect crops and forage. Learn more about how drought affects the agriculture sector.
Research & Learn | Flash Drought
In its simplest form, flash drought is generally considered the rapid onset of drought, which can cause extensive, unexpected damage to agriculture and economies. Changes in soil moisture can provide an early warning of flash drought.
Balancing the Water Budget: Advancements in Soil Moisture Monitoring and Interpretation
Soil moisture is a vital part of the Earth’s water budget, yet given the complexities in measuring and interpreting soil moisture, an accurate depiction of this variable has been a serious challenge over the past several decades. This means that important public needs, such as drought and flood early warning, water management, and agricultural monitoring, are not being fully addressed.
To address this situation, NIDIS is working with USDA and other partners to develop a strategy for a National Coordinated Soil Moisture Monitoring Network (NCSMMN). The goals of this initiative include:
- Establishing a national “network of networks” that effectively demonstrates data and operational coordination of in situ networks and addresses gaps in coverage
- Supporting R&D on innovative techniques to merge in situ soil moisture data with remotely-sensed and modeled hydrologic data to create near-real time, gridded, user-friendly soil moisture maps and associated tools
- Building a community of practice and expertise around soil moisture measurement and interpretation.

Soil Moisture Research and Resources
National Coordinated Soil Moisture Monitoring Network
A Strategy for the National Coordinated Soil Moisture Monitoring Network
2021 National Soil Moisture Workshop: Agenda & Presentations
Fact Sheet: NIDIS and Soil Moisture
Building a One-Stop Shop for Soil Moisture Information
The Paramount Societal Impact of Soil Moisture
UCAR Climate Guide: Soil Moisture Datasets Overview
USACE Upper Missouri River Basin Soil Moisture and Plains Snow Monitoring Build-Out