Skip to content

Results viewer

monitoreo-ugr edited this page Nov 5, 2026 · 1 revision

Versión en español

Results viewer: publishing the analyses so that anyone can see them

The results viewer is a static website with the monitoring analyses published by the OBSNEV. Whoever visits it chooses a report in the catalog and sees its interactive maps and charts, its texts and its data, without an Earth Engine account: the results are already computed and are read from files, without spending the quota of any project.

Only the administrators (the OBSNEV team) publish: the site has no accounts or forms, and whoever can write to the folder of the site or to its repository publishes. This page explains what a visitor sees and how it is published, reviewed and maintained.

The public site is https://monitoreo-obsnev.github.io/resultados/, from the repository monitoreo-obsnev/resultados. Its data and maps are published under the CC BY 4.0 license: they can be copied, redistributed and adapted for any purpose, also commercial, giving credit to the source.

What visitors see

The catalog (index.html) has one card per report, with its image, the area, the question, the short answer, the variables, the years of the data and the types of analysis. It can be filtered by park or area, variable, type of analysis and year of the data, and searched by text. The filters stay in the address of the page, which can be sent.

Catalog of the results viewer with the reports of seven national parks and the filters by park, variable, analysis and year

Each report (report.html?id=...) shows:

  • The area (with its link to the WDPA), its surface, the variables, the periods, the analyses, the date, the authorship and the series it belongs to.
  • The short answer and the result.
  • One map per GeoTIFF, over “Map (OpenStreetMap)” or “PNOA orthophoto (Spain)” (or “No base map”), with its Opacity: you choose the layer of the GeoTIFF in Layer (e.g. the slope, the p-value or the years with data of a trend), and in the trends, the pixels without a significant trend can be shown in gray (“Gray where the trend is not significant (p ≥ 0.05)”). When you click a pixel, the values of all its layers appear, read from the GeoTIFF at its original resolution. You zoom with the buttons or with Ctrl (⌘ on a Mac) and the mouse wheel.
  • One chart per table: the time series (with the Sen lines of their trends and, if they are long, an overview to choose the years), the trends of each month (the significant ones in color), the trends of a single part of the year (in figures), the comparison of two periods with its difference, and the area of each burn severity class of a fire. Each chart has its table (Show the table / Hide the table), can be downloaded as PNG or SVG and shows the values when the mouse hovers over it.
  • The method and the sections of the report, the downloads (GeoTIFF, CSV, charts, PDF) and, in each result, How it was computed: the tool, the equivalent Python call and its arguments.
  • How to cite it and its license, and the description, the acknowledgements and the logos of MonitorEO-OBSNEV.

Map of the summer NDVI trend from 1985 to 2024 in Ordesa y Monte Perdido National Park, with the values of the six layers of a pixel

Mean NDVI of July and August in Ordesa from 1985 to 2024, with the Sen lines of the whole series and of each Landsat generation, and the figures of the trend

It works on mobile and in dark mode, and nothing needs to be installed.

Publishing a report

You need the MonitorEO Python environment with GDAL (the conda one of Getting started): the GeoTIFFs are converted to Cloud Optimized GeoTIFF (COG), which the browser reads in parts.

1. Compute the results

With the MCP server, Python, the command line or R. The GeoTIFF and CSV files of download_trend, download_comparison, download_image, burn_severity, time_series, trend_table and compare_series are published, with the PNGs of their charts and any other file (a PDF, a figure).

2. Describe the report

A YAML file with the texts and the results in the order of the page:

id: 2026-10-teide-incendio              # lower case, digits and hyphens; by default, the date and the title
title: Which part of the park did the August 2023 fire burn, and with what severity?
summary: 956 ha burned on the north-eastern edge according to the dNBR and the USGS scale.
answer: |-
  The severity was classified with the dNBR and the official USGS scale...

  During the emergency, about 2,300 ha were mentioned...
method: Data: Sentinel-2 NBR (10 m), median from 15 May to 14 August 2023 (before)...
sections:
  - title: Against REMOTE
    text: REMOTE has no fire indices...
region: {name: Teide, full_name: Teide National Park, area_km2: 188}
authors: [Observatorio de Cambio Global de Sierra Nevada (OBSNEV), Universidad de Granada]
published: 2026-10-29                   # by default, today
collection: National Parks Network, October 2026
files: mcp_out                          # where to look up the result files by name
results:
  - answer: data/te_burn.json           # the answer of an MCP tool saved with its call
    title: Fire severity of August 2023 (dNBR and USGS scale)
    caption: Severity class of each 10 m pixel.
    chart_title: Area of each severity class inside the park
downloads:
  - {path: informe.pdf, title: Full report (PDF)}

The texts can be written in the language you prefer (the viewer shows them as written; the texts of the viewer itself are in English). Each result can be:

Form For
answer: data/x.json the answer of an MCP tool saved with its call ({call: {tool, args}, text: [result]})
tool:, args: and result: the call and what a function of monitoreo.services returned
file: path/of/the/file.tif a file written by the MCP server: its call is looked up in its calls.jsonl log

and can have title, caption, palette (the colors of the main layer of a map, e.g. [8c510a, f2efe6, 01665e]), band (the layer shown first), significance: false (no gray in the trends), chart_title and chart_caption (those of the chart of burn_severity). Of the report one can also give question, keywords, license and thumbnail (the catalog image; by default, the first map).

License. The data and maps of a report are published under the CC BY 4.0 license unless another is given in license:: CC-BY-SA-4.0, CC0-1.0 or {name: ..., url: ..., text: ...} (the text follows a colon: "they can be..."). The viewer shows it in the sheet of the report and in “How to cite”, and that of the site in the footer of each page.

The area, its WDPA ID, the variables, the periods and the types of analysis are taken from the calls. A YAML can have several reports in reports:; its other keys apply to all of them.

3. Publish to the site folder

monitoreo publish informe.yaml --site ~/visor

It converts the GeoTIFFs to COG, copies the CSVs and the downloads, makes the catalog image, writes the report.json of the report and rebuilds catalog.json with all the reports, and copies the viewer. Before writing anything it checks the report: if a file or a piece of data is missing, it publishes nothing. Publishing the same id again replaces the report.

monitoreo serve ~/visor          # the viewer on this computer: http://127.0.0.1:8000/

4. Publish it on the internet

The site folder is a static website: it is published with any web server that handles byte-range requests (the maps are read in parts), such as GitHub Pages, nginx or Apache.

  • GitHub Pages (the OBSNEV site): the folder is a clone of the repository monitoreo-obsnev/resultados, separate from the code one so as not to weigh it down with the maps, with Pages enabled on its main branch (root folder). Publishing is git add -A, git commit and git push, and the site updates in a minute; only whoever has write permission on that repository can do it, and the history records who published what and when.

    git clone git@github.com:monitoreo-obsnev/resultados.git ~/resultados    # once
    monitoreo publish informe.yaml --site ~/resultados
    cd ~/resultados && git add -A && git commit -m "Informe ..." && git push
  • OBSNEV web server: rsync -av --delete ~/visor/ servidor:/var/www/visor/. Whoever has access to the server publishes.

Check the site before uploading it (or in the continuous integration of the site repository):

monitoreo publish --check --site ~/visor

From the assistant (MCP)

The publish_report tool publishes to the site folder (site, the MONITOREO_SITE variable or ~/MonitorEO/visor) the files that the other tools have just written, with the texts of the report. The server saves each call that writes files in MONITOREO_OUTPUT/calls.jsonl, and from there it gets the call of each file. For example: "Publish in the viewer the map and the table of the trend you just computed, with the title 'Has the greenness of Sierra Nevada changed?' and a one-sentence summary". The report stays in the folder; it becomes public when you upload it (step 4).

From Python

import monitoreo.services as mo

mo.publish_report('informe.yaml', site='~/visor')          # or a dictionary with the same keys
mo.check_site('~/visor')                                    # [] if everything is fine
mo.remove_report('2026-10-teide-incendio', site='~/visor')

What each report stores

visor/
  index.html, report.html, assets/      the viewer
  catalog.json                          the reports, from the newest to the oldest
  reports/2026-10-teide-incendio/
    report.json                         texts, area, variables, periods, results, files and calls
    maps/*.tif                          the maps as COG, with all their layers
    data/*.csv                          the tables
    files/                              the PNG charts of the tools and the other downloads
    thumbnail.png                       the catalog image

report.json describes each result: a map (its COG, its reference system, its bounds in degrees, its resolution and, for each layer, its name, its unit, its legend and its statistics) or a chart (its CSV, its type and its unit), with the tool and the arguments that produced it and the equivalent Python call. They are open data: anyone can use catalog.json and report.json to read the results from another program.

Maintenance

  • Remove a report: monitoreo publish --remove ID --site ~/visor.
  • Correct a report: change the YAML and publish it again (same id).
  • Update the viewer after updating monitoreo: monitoreo publish --site ~/visor copies the new viewer and rebuilds the catalog, without touching the reports.
  • The browser libraries (OpenLayers, proj4, geotiff.js and Vega-Lite) are loaded from jsDelivr in fixed versions and with their fingerprint (SRI): the viewer does not change until they are updated in src/monitoreo/viewer.
  • Size: a COG takes a little more than its GeoTIFF (it carries overviews to see it from afar). GitHub accepts files of up to 100 MB and Pages sites of up to 1 GB; for more, the OBSNEV server.

First reports: the National Parks Network

The seven analyses of the report MonitorEO for the monitoring of the National Parks Network (October 2026), computed with the MCP server, are published with a single YAML (publicar.yaml, next to the report):

Park Question Results
Sierra Nevada In which season of the year has the greenness changed since 2001, and where? map of the EVI trend, trends by month, monthly series
Sierra de Guadarrama Is the surface of the park warming up in summer? map of the 2023 temperature (Landsat), series and summer trend (MODIS)
Picos de Europa Does the park have less snow today than at the beginning of the century? map of the spring snow difference, comparison by month
Aigüestortes i Estany de Sant Maurici In which months is snow being lost? trends by month, monthly series
Ordesa y Monte Perdido How has the vegetation changed in 40 years? map of the NDVI trend, series with the Sen lines, three trends
Sierra de las Nieves How much greenness did the park lose in the 2023 drought? map of the summer NDVI difference, comparison by month
Teide Which part of the park did the August 2023 fire burn? map of the severity (dNBR), hectares of each class
monitoreo publish publicar.yaml --site ~/resultados

Clone this wiki locally