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: 91) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 268) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 339) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 281) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) 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: 859) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 421) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 240) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 627) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) 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: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) 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: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->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: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Warning: Undefined array key "width" in template_preprocess_responsive_image() (line 209 of core/modules/responsive_image/responsive_image.module).
template_preprocess_responsive_image(Array) (Line: 101) Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements(Object, 'en') (Line: 91) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 268) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 339) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 281) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) 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: 859) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 421) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 240) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 627) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) 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: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) 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: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->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: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Warning: Undefined array key "height" in template_preprocess_responsive_image() (line 210 of core/modules/responsive_image/responsive_image.module).
template_preprocess_responsive_image(Array) (Line: 101) Drupal\responsive_bg_image_formatter\Plugin\Field\FieldFormatter\ResponsiveBgImageFormatter->viewElements(Object, 'en') (Line: 91) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 268) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 339) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 281) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) 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: 859) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 421) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 240) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 627) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) 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: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) 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: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->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: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) 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: 91) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 268) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 339) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 281) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) 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: 859) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 421) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 240) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 627) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) 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: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) 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: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->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: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) 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: 91) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 268) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 339) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 281) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) 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: 859) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 421) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 240) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 627) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) 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: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) 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: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->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: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) 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: 91) Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 76) Drupal\Core\Field\Plugin\Field\FieldFormatter\EntityReferenceFormatterBase->view(Object, NULL) (Line: 268) Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 339) Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24) Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 281) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) 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: 859) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 421) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 240) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 627) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) 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: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) 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: 28) Drupal\Core\StackMiddleware\ContentLength->handle(Object, 1, 1) (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->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: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) 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.
This NASA SPoRT-LIS soil moisture map shows the moisture content of the top 100 cm of soil compared to historical conditions (1981–2013), based on the Noah unified land surface model. Red and orange hues indicate drier soils, while greens and blues indicate greater soil moisture.
This map shows the moisture content of the top 20 cm of soil compared to historical conditions, based on in situ (in the ground) measurements of soil moisture from a wide range of state and federal mesonets across the continental U.S. These data are then interpolated into a 4 km grid.
Red and orange hues indicate drier soils, while greens and blues indicate greater soil moisture.
The GRACE-Based Root Zone Soil Moisture Drought Indicator describes the current wet or dry conditions of the top 1 meter of soil, expressed as a percentile showing the probability of occurrence within the period of record from 1948 to the present. This product is based on terrestrial water storage observations derived from NASA GRACE satellite data and integrated with other observations, using a sophisticated numerical model of land surface water and energy processes.
Red and orange hues indicate drier soil moisture conditions, while blue hues indicate wetter conditions.
0–100 cm Soil Moisture Percentile
0–2nd Percentile
Soil moisture at 0–100cm depth is in the bottom 2% (0–2nd percentile) of historical measurements for this day of the year. Learn more.
2nd–5th Percentile
Soil moisture at 0–100cm depth falls between the 2nd to 5th percentile of historical measurements for this day of the year. Learn more.
5th–10th Percentile
Soil moisture at 0–100cm depth falls between the 5th to 10th percentile of historical measurements for this day of the year. Learn more.
10th–20th Percentile
Soil moisture at 0–100cm depth falls between the 10th to 20th percentile of historical measurements for this day of the year. Learn more.
20th–30th Percentile
Soil moisture at 0–100cm depth falls between the 20th to 30th percentile of historical measurements for this day of the year. Learn more.
30th–70th Percentile
Soil moisture at 0–100cm depth falls between the 30th to 70th percentile of historical measurements for this day of the year. Learn more.
70th–80th Percentile
Soil moisture at 0–100cm depth falls between the 70th to 80th percentile of historical measurements for this day of the year. Learn more.
80th–90th Percentile
Soil moisture at 0–100cm depth falls between the 80th to 90th percentile of historical measurements for this day of the year. Learn more.
90th–95th Percentile
Soil moisture at 0–100cm depth falls between the 90th to 95th percentile of historical measurements for this day of the year. Learn more.
95th–98th Percentile
Soil moisture at 0–100cm depth falls between the 95th to 98th percentile of historical measurements for this day of the year. Learn more.
98th–100th Percentile
Soil moisture at 0–100cm depth is in the top 2% (98th to 100th percentile) of historical measurements for this day of the year. Learn more.
20 cm Soil Moisture Percentile
0–2nd Percentile
Soil moisture at 20cm depth is in the bottom 2% (0–2nd percentile) of historical measurements for this day of the year.
2nd–5th Percentile
Soil moisture at 20cm depth falls between the 2nd to 5th percentile of historical measurements for this day of the year.
5th–10th Percentile
Soil moisture at 20cm depth falls between the 5th to 10th percentile of historical measurements for this day of the year.
10th–20th Percentile
Soil moisture at 20cm depth falls between the 10th to 20th percentile of historical measurements for this day of the year.
20th–30th Percentile
Soil moisture at 20cm depth falls between the 20th to 30th percentile of historical measurements for this day of the year.
30th–70th Percentile
Soil moisture at 20cm depth falls between the 30th to 70th percentile of historical measurements for this day of the year.
70th–80th Percentile
Soil moisture at 20cm depth falls between the 70th to 80th percentile of historical measurements for this day of the year.
80th–90th Percentile
Soil moisture at 20cm depth falls between the 80th to 90th percentile of historical measurements for this day of the year.
90th–95th Percentile
Soil moisture at 20cm depth falls between the 90th to 95th percentile of historical measurements for this day of the year.
95th–98th Percentile
Soil moisture at 20cm depth falls between the 95th to 98th percentile of historical measurements for this day of the year.
98th–100th Percentile
Soil moisture at 20cm depth is in the top 2% (98th to 100th percentile) of historical measurements for this day of the year.
Root Zone Soil Moisture: Wetness Percentile
This NASA SPoRT-LIS soil moisture map shows the moisture content of the top 100 cm of soil compared to historical conditions (1981–2013), based on the Noah unified land surface model. Red and orange hues indicate drier soils, while greens and blues indicate greater soil moisture.
This map shows the moisture content of the top 20 cm of soil compared to historical conditions, based on in situ (in the ground) measurements of soil moisture from a wide range of state and federal mesonets across the continental U.S. These data are then interpolated into a 4 km grid.
Red and orange hues indicate drier soils, while greens and blues indicate greater soil moisture.
The GRACE-Based Root Zone Soil Moisture Drought Indicator describes the current wet or dry conditions of the top 1 meter of soil, expressed as a percentile showing the probability of occurrence within the period of record from 1948 to the present. This product is based on terrestrial water storage observations derived from NASA GRACE satellite data and integrated with other observations, using a sophisticated numerical model of land surface water and energy processes.
Red and orange hues indicate drier soil moisture conditions, while blue hues indicate wetter conditions.
This map updates daily with data from NASA's Short-term Prediction and Transition Center – Land Information System (SPoRT-LIS).
Soil moisture data are updated daily, with a 1-day delay due to differences in network report timing.
Data from NASA GRACE are updated daily, with a 4-day delay.
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 Conserva
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
Web Resources
National Coordinated Soil Moisture Monitoring Network
A Strategy for the National Coordinated Soil Moisture Monitoring Network
2023 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