diff --git a/.env.example b/.env.example index 38ea51f73..ae25896ad 100644 --- a/.env.example +++ b/.env.example @@ -6,4 +6,5 @@ LOCAL_ENABLE_USER_GUIDES=Yes LOCAL_ENABLE_DATA_PRODUCTS=Yes LOCAL_ENABLE_OLD_VERSIONS=Yes LOCAL_ENABLE_NOTEBOOKS=Yes +LOCAL_ENABLE_VALIDATION_REPORTS=Yes LOCAL_ENABLE_TECH_ALERTS_CHANGELOG=Yes diff --git a/docs/_files/validation/daily-report.png b/docs/_files/validation/daily-report.png new file mode 100644 index 000000000..da57921b5 Binary files /dev/null and b/docs/_files/validation/daily-report.png differ diff --git a/docs/_modules/validation_reports.py b/docs/_modules/validation_reports.py new file mode 100644 index 000000000..d2e78db9c --- /dev/null +++ b/docs/_modules/validation_reports.py @@ -0,0 +1,7 @@ +import datetime + +def exclude_old_daily_reports(years): + current_year = datetime.date.today().year + previous_year = current_year - years + return [f"validation/daily-report/{previous_year}-*"] + diff --git a/docs/_static/scripts/custom-behaviour.js b/docs/_static/scripts/custom-behaviour.js index a3db27a15..c59899ccc 100644 --- a/docs/_static/scripts/custom-behaviour.js +++ b/docs/_static/scripts/custom-behaviour.js @@ -192,4 +192,21 @@ document.addEventListener("DOMContentLoaded", function (event) { } } })(); + + // Click on any image within the page content to open it in a new tab. + + (function () { + let images = document.querySelectorAll(".bd-article img"); + + for (let i = 0; i < images.length; i++) { + let image = images[i]; + + image.dataset.linkType = "image"; + image.title = "Click to view at full size."; + + image.addEventListener("click", function () { + window.open(image.src, "_blank"); + }); + } + })(); }); diff --git a/docs/_static/styles/components/_links.scss b/docs/_static/styles/components/_links.scss index 1af263288..c994f74a2 100644 --- a/docs/_static/styles/components/_links.scss +++ b/docs/_static/styles/components/_links.scss @@ -29,3 +29,8 @@ a { } } +img { + &[data-link-type="image"] { + cursor: pointer; + } +} diff --git a/docs/_static/styles/index.scss b/docs/_static/styles/index.scss index a6f0dce4a..dbb75903f 100644 --- a/docs/_static/styles/index.scss +++ b/docs/_static/styles/index.scss @@ -8,6 +8,7 @@ @import "pages/not_found"; @import "pages/automodule"; @import "pages/card_list"; +@import "pages/validation_report"; @import "components/navigation_bar"; @import "components/navigation_sidebar"; diff --git a/docs/_static/styles/pages/_validation_report.scss b/docs/_static/styles/pages/_validation_report.scss new file mode 100644 index 000000000..3856e10de --- /dev/null +++ b/docs/_static/styles/pages/_validation_report.scss @@ -0,0 +1,19 @@ +.validation-report { + &-variables-table { + tr td:first-child { + font-weight: bold; + } + } + + &-results-table { + tbody tr:first-child { + font-weight: bold; + } + } + + &-download { + float: right; + margin-left: 1rem; + } +} + diff --git a/docs/_templates/home-v1.rst b/docs/_templates/home-v1.rst index 134c46f06..3c5b37489 100644 --- a/docs/_templates/home-v1.rst +++ b/docs/_templates/home-v1.rst @@ -68,6 +68,21 @@ .. image:: /_files/reference/Reporting_dashboard.png +.. container:: showcase-panel bg-gradient-space reverse + :name: dea-notebooks + + .. container:: + + .. rubric:: Validation reports + + Assess the validity of our datasets against these validation reports. + + `Visit the Validation reports `_ + + .. container:: + + .. image:: /_files/cmi/Kakadu-Mary_TCW-percentiles-wide_1.jpg + .. container:: showcase-panel :name: about-dea diff --git a/docs/conf.py b/docs/conf.py index 5cbbde699..b4e14e0fd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -5,6 +5,7 @@ from _modules import utilities from _modules import mock_imports from _modules import pr_preview +from _modules import validation_reports environment = { "build_mode": os.environ.get("BUILD_MODE"), @@ -37,10 +38,13 @@ "notebooks/Supplementary_data/*.ipynb", "py-modindex/index.*", ] +exclude_patterns += validation_reports.exclude_old_daily_reports(years = 2) +exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_TAGS", "tags") exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_USER_GUIDES", "guides") exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_DATA_PRODUCTS", "data") exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_OLD_VERSIONS", "data/old-version") exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_NOTEBOOKS", "notebooks") +exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_VALIDATION_REPORTS", "validation") exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_TAGS", "tags") exclude_patterns += utilities.optional_exclude_pattern("LOCAL_ENABLE_TECH_ALERTS_CHANGELOG", "tech-alerts-changelog") diff --git a/docs/requirements.txt b/docs/requirements.txt index f4c681291..8b7802b83 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -13,3 +13,4 @@ sphinx-sitemap<=2.5.1 sphinxext-opengraph<=0.9.1 sphinx-notfound-page<=1.0.0 sphinx-copybutton<=0.5.2 + diff --git a/docs/table_of_contents.yaml b/docs/table_of_contents.yaml index ca2f01010..290773f71 100644 --- a/docs/table_of_contents.yaml +++ b/docs/table_of_contents.yaml @@ -202,6 +202,39 @@ entries: entries: - file: notebooks/Tools/index # Contains its own table of contents. + # Validation + + - file: validation/index + subtrees: + - caption: Daily Reports + entries: + - file: validation/daily-report/index + title: All daily reports + options: + reversed: True + entries: + - glob: validation/daily-report/*/index + # - caption: Quarterly Reports + # options: + # reversed: True + # entries: + # - file: validation/quarterly-report/index + # title: All quarterly reports + # options: + # reversed: True + # entries: + # - glob: validation/quarterly-report/*/index + # - caption: Yearly Reports + # options: + # reversed: True + # entries: + # - file: validation/yearly-report/index + # title: All yearly reports + # options: + # reversed: True + # entries: + # - glob: validation/yearly-report/*/index + # Tags - file: tags/index diff --git a/docs/validation/_data.yaml b/docs/validation/_data.yaml new file mode 100644 index 000000000..e5d210528 --- /dev/null +++ b/docs/validation/_data.yaml @@ -0,0 +1,7 @@ +title: Validation reports +description: These reports provide statistical summaries that you can compare to our datasets to assess their validity. + +pages: + - name: Daily Reports + link: ./daily-report + image: /_files/validation/daily-report.png diff --git a/docs/validation/daily-report/2023-11-27/DailyValidationResults-2023-11-27.csv b/docs/validation/daily-report/2023-11-27/DailyValidationResults-2023-11-27.csv new file mode 100644 index 000000000..98e48843b --- /dev/null +++ b/docs/validation/daily-report/2023-11-27/DailyValidationResults-2023-11-27.csv @@ -0,0 +1,12 @@ +BAND,satmean,satstd,fieldmean,fieldstd +CA,0.0546,0.000435,0.0488,0.003 +blue,0.0659,0.00141,0.0638,0.00402 +green,0.102,0.00452,0.104,0.0104 +red,0.185,0.0141,0.188,0.0284 +RE1,0.208,0.0142,0.209,0.0312 +RE2,0.224,0.015,0.225,0.0331 +RE3,0.234,0.015,0.237,0.0333 +nir_1,0.244,0.0151,0.246,0.0313 +nir_2,0.25,0.0125,0.251,0.03 +swir_2,0.387,0.011,0.395,0.0375 +swir_3,0.307,0.0117,0.322,0.039 diff --git a/docs/validation/daily-report/2023-11-27/DayComparison-2023-11-27.png b/docs/validation/daily-report/2023-11-27/DayComparison-2023-11-27.png new file mode 100644 index 000000000..c6cce9981 Binary files /dev/null and b/docs/validation/daily-report/2023-11-27/DayComparison-2023-11-27.png differ diff --git a/docs/validation/daily-report/2023-11-27/OverallComparison-2023-11-27.png b/docs/validation/daily-report/2023-11-27/OverallComparison-2023-11-27.png new file mode 100644 index 000000000..d469809e8 Binary files /dev/null and b/docs/validation/daily-report/2023-11-27/OverallComparison-2023-11-27.png differ diff --git a/docs/validation/daily-report/2023-11-27/RGB-2023-11-27.png b/docs/validation/daily-report/2023-11-27/RGB-2023-11-27.png new file mode 100644 index 000000000..edee9bcc8 Binary files /dev/null and b/docs/validation/daily-report/2023-11-27/RGB-2023-11-27.png differ diff --git a/docs/validation/daily-report/2023-11-27/index.md b/docs/validation/daily-report/2023-11-27/index.md new file mode 100644 index 000000000..5d7f980f1 --- /dev/null +++ b/docs/validation/daily-report/2023-11-27/index.md @@ -0,0 +1,93 @@ +# 2023-11-27: Mullion, Landsat 8 overpass + +A Daily Validation Summary Report of the surface reflectance data collected on +the date of 2023-11-27 by Geoscience Australia. The full collection of data is +contained in the [National Spectral Database](https://www.dea.ga.gov.au/products/national-spectral-database). + +:::{contents} In this report +:local: +:backlinks: none +::: + +## Variables + +These variables and environmental factors were present on the day the data were +collected. + +:::{csv-table} +:class: validation-report-variables-table + +"Instrument(s) used","ASD FR4 (18179/3)" +"Time of field site measurements (UTC)","2023-11-26 22:37:46 to 2023-11-26 23:37:06" +"Time of overpass (UTC)", 2023-11-27 00:45:46 +"GPS quality","Good" +"Reference position","142.1036962E, 31.8135401S (WGS84)" +"Matchup quality","Good" +::: + +## Results + +The surface reflectance statistics collected on this day are grouped into bands. +This allows the data to be used to validate Geoscience Australia's other datasets +which use the same standardised bands. + +```{eval-rst} +.. container:: validation-report-download + + :download:`Download as CSV <./DailyValidationResults-2023-11-27.csv>` +``` + +:::{csv-table} +:class: validation-report-results-table + +"Band","Sat Mean","Sat rms","Field mean","Field rms" +"CA","0.0546","0.000435","0.0488","0.003" +"Blue","0.0659","0.00141","0.0638","0.00402" +"Green","0.102","0.00452","0.104","0.0104" +"Red","0.185","0.0141","0.188","0.0284" +"Re1","0.208","0.0142","0.209","0.0312" +"Re2","0.224","0.015","0.225","0.0331" +"Re3","0.234","0.015","0.237","0.0333" +"Nir_1","0.244","0.0151","0.246","0.0313" +"Nir_2","0.25","0.0125","0.251","0.03" +"Swir_2","0.387","0.011","0.395","0.0375" +"Swir_3","0.307","0.0117","0.322","0.039" +::: + +## Figures + +Click an image to view it at full size. + +:::::{grid} 1 1 2 3 +::::{grid-item} +:::{figure} ./RGB-2023-11-27.png + +A satellite imagery tile of true colour (RGB) surface reflectance. It covers an +area of approximately 2 km × 2 km. The white box indicates the size and location +of the field site. +::: +:::: +::::{grid-item} +:::{figure} ./DayComparison-2023-11-27.png + +A band-by-band plot of surface reflectance for satellite and field data. +Satellite uncertainty error bars for each band are the standard deviation of +pixel values over and surrounding the field site. Field uncertainty error bars +are the standard deviation of values after averaging all spectra within the same +satellite pixels. + +::: +:::: +::::{grid-item} +:::{figure} ./OverallComparison-2023-11-27.png + +A plot of Satellite Surface Reflectance versus Field Site Surface Reflectance on this day. +The solid line represents the one-to-one equality between field and satellite measurements. +The black dots are the values from all field site measurements prior to this date. +The line of best fit is not shown, but its parameters are given in the bottom-right corner. +::: +:::: +::::: + +% :::{tags} validation, daily_validation, mullion_validation, landsat_8_validation +% ::: diff --git a/docs/validation/daily-report/index.md b/docs/validation/daily-report/index.md new file mode 100644 index 000000000..91a86d80a --- /dev/null +++ b/docs/validation/daily-report/index.md @@ -0,0 +1,7 @@ +# Daily reports + +Here are all the daily validation reports to date. + +:::{tableofcontents} +:titlesonly: +::: diff --git a/docs/validation/index.rst b/docs/validation/index.rst new file mode 100644 index 000000000..b59f11537 --- /dev/null +++ b/docs/validation/index.rst @@ -0,0 +1,2 @@ +.. datatemplate:yaml:: _data.yaml + :template: card-list-v1.rst diff --git a/docs/validation/quarterly-report/2024-q1/index.md b/docs/validation/quarterly-report/2024-q1/index.md new file mode 100644 index 000000000..f482c8133 --- /dev/null +++ b/docs/validation/quarterly-report/2024-q1/index.md @@ -0,0 +1,2 @@ +# Q1, 2024: Quarterly validation summary + diff --git a/docs/validation/quarterly-report/index.md b/docs/validation/quarterly-report/index.md new file mode 100644 index 000000000..05ee762ef --- /dev/null +++ b/docs/validation/quarterly-report/index.md @@ -0,0 +1,7 @@ +# Quarterly reports + +Here are all the quarterly validation reports to date. + +:::{tableofcontents} +:titlesonly: +::: diff --git a/docs/validation/yearly-report/2023/index.md b/docs/validation/yearly-report/2023/index.md new file mode 100644 index 000000000..be13f00bb --- /dev/null +++ b/docs/validation/yearly-report/2023/index.md @@ -0,0 +1 @@ +# 2023: Yearly validation summary diff --git a/docs/validation/yearly-report/index.md b/docs/validation/yearly-report/index.md new file mode 100644 index 000000000..271604955 --- /dev/null +++ b/docs/validation/yearly-report/index.md @@ -0,0 +1,7 @@ +# Yearly reports + +Here are all the yearly validation reports to date. + +:::{tableofcontents} +:titlesonly: +:::