Repository navigation
Results viewer
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.
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.

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.


It works on mobile and in dark mode, and nothing needs to be installed.
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.
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).
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.
monitoreo publish informe.yaml --site ~/visorIt 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/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
mainbranch (root folder). Publishing isgit add -A,git commitandgit 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 ~/visorThe 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).
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')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.
-
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 ~/visorcopies 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.
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 ~/resultadosMonitorEO es un resultado del Proyecto EVEREST (PID2023-151939OB-I00), financiado por MICIU/AEI 10.13039/501100011033 y cofinanciado por FEDER – Unión Europea, y del Proyecto NevadEO (C-EXP-074-UGR23), cofinanciado por el Programa FEDER 2014-2020 y la Consejería de Economía, Conocimiento, Empresa y Universidades de la Junta de Andalucía. Es también un resultado del Proyecto PRESINMED (Preserving the singularity of Mediterranean high-mountain biodiversity hotspots: a NBS approach, PCI 2025-163175) de la convocatoria Biodiversa+ NBS 2023.
MonitorEO is an output of the EVEREST Project (PID2023-151939OB-I00), funded by MICIU/AEI 10.13039/501100011033, and co-funded by ERDF – European Union, as well as of the NevadEO Project (C-EXP-074-UGR23), co-funded by the ERDF 2014-2020 Program and the Regional Ministry of Economy, Knowledge, Enterprise, and Universities of the Regional Government of Andalusia. It is also an output of the PRESINMED Project (Preserving the singularity of Mediterranean high-mountain biodiversity hotspots: a NBS approach, PCI 2025-163175) of the Biodiversa+ NBS 2023 call.
OBSNEV, Universidad de Granada · GPL-3.0-or-later



Empezar
Herramientas
Ayuda
Start
Tools
- Earth Engine app
- QGIS plugin
- MCP: Claude and other assistants
- Python package
- R package
- Results viewer
Help