[general]
name=GeoBridge
qgisMinimumVersion=3.28
description=Discover, semantically search, and preview Copernicus climate data (ERA5, CAMS, CEMS) as WMTS layers directly in QGIS, built entirely on QGIS's own bundled GDAL.
version=0.1.36
author=GeoBridge contributors
email=iliasmachairas@outlook.com

about=GeoBridge brings Copernicus Data Store (C3S/CAMS/CEMS) dataset discovery, plain-language semantic search, time-stepped WMTS raster preview layers (with a play/pause slider), point time series, and GeoTIFF export into QGIS — built entirely on QGIS's own bundled GDAL, with no extra Python packages to install. Enter your CDS API key once, search for a use case ("urban heat island", "PM2.5 exposure"), and add the recommended layer straight to the map.

    Built by participants of an ECMWF-affiliated open-source program. This is an independent community project — not an official ECMWF product, and not maintained or supported by ECMWF.

license=MIT
homepage=https://github.com/ECMWFCode4Earth/geobridge-qgis
repository=https://github.com/ECMWFCode4Earth/geobridge-qgis
tracker=https://github.com/ECMWFCode4Earth/geobridge-qgis/issues

hasProcessingProvider=no
changelog=0.1.36 Browse by Variable: fixed "Download GeoTIFF" crashing with "netCDFDataset::_SetProjection() should only be called once in update mode!" on some CDS files (confirmed on derived-era5-land-daily-statistics) — GDAL's netCDF driver can consider a projection already set internally even when GetSpatialRef() still reports None, so the plugin now tolerates that instead of retrying the write; a related bug where the source temp file stayed locked after any conversion error (masking the real error behind a Windows "[WinError 32]") is fixed too. Downloaded GeoTIFF bands are now labelled with their actual calendar date (built from the request's own year/month/day, not the file's own time metadata, which some CDS derived products encode relative to an arbitrary origin) instead of being unnamed. Search and Browse by Variable: new "Clip to polygon shape" option under Area of interest — once "Use extent" captures a real polygon layer, ticking this masks the exported GeoTIFF to that polygon's actual outline instead of just its rectangular bounding box. Search tab "Export to GeoTIFF": enabled multi-threaded chunk fetching for ARCO Zarr reads (was strictly sequential, one chunk at a time, confirmed via measurement); a new warning/hard-block now estimates how slow an export will be from its area and date range before it starts, instead of only warning for "Raw" aggregation — every aggregation reads the full native-resolution range over the network first regardless, so e.g. "Monthly mean" over a wide area and a long range was just as slow as "Raw" with no warning at all. A small area is exempted from that check no matter how long the date range, since that shape is confirmed fast (measured: 6 years over a small area in under 15 seconds) rather than slow.
    0.1.35 README: bump the QGIS badge to ≥ 3.38, the version that actually bundles GDAL 3.9+ for full Zarr V3 functionality — the plugin still installs and mostly works on 3.28+ (see the Requirements paragraph below the badge), but 3.38+ is what avoids the "Variable not found in Zarr store" surprise for the datasets that need it.
    0.1.34 Shortened the "Variable not found in Zarr store" error (the old-QGIS/GDAL one from 0.1.33's new Troubleshooting page) — no more confusing "Available: None"; on the Search tab it's now followed by a clickable link straight to that Troubleshooting section instead of repeating the explanation inline. Time Series tab: this same error is now also logged in full (with a stack trace) to Log Messages → GeoBridge, matching Search/Browse's exports.
    0.1.33 Search tab: the "Export failed: ..." status box could cut off a long error message (e.g. the Zarr V3 "Available: None" explanation) — given more room, and now also points to View → Panels → Log Messages → GeoBridge for the full text, matching 0.1.32's Browse-tab fix. Docs: add a Troubleshooting section covering that exact error (old QGIS/GDAL, needs Zarr V3 support) with the fix for each platform, and a note about where to find a full error when the in-app message looks cut off.
    0.1.32 A failed "Export to GeoTIFF"/"Download GeoTIFF" now logs the full error, including a full stack trace, to View → Panels → Log Messages → GeoBridge, and the on-screen message on the Browse by Variable tab now says to check there — the narrow, fixed-size status label couldn't reliably show a long error in full.
    0.1.31 Two fixes from the Browse by Variable tab: (1) Download GeoTIFF could fail with "There is no affine transformation and no GCPs" for some datasets (confirmed on derived-era5-land-daily-statistics) — the downloaded file is NetCDF4, whose container format is literally HDF5, and GDAL was sometimes auto-picking its plain HDF5 driver instead of its netCDF one, losing all CF-convention georeferencing in the process; now the netCDF driver is forced explicitly rather than left to auto-detection. (2) The Area of interest summary's second line (once real coordinates are set) could get clipped in this tab's narrower right-hand column — it's genuinely layout-managed here (unlike the Search tab's equivalent, fixed in 0.1.29), but had nowhere to grow into within this tab's fixed window size; that window now has more headroom.
    0.1.30 Search tab: fix the variable/"Dataset details" line under a selected result getting clipped when the dataset's title is long enough to wrap onto two lines itself (e.g. "CERRA sub-daily regional reanalysis data for Europe on single levels from 1984 to present") — confirmed in a Linux screenshot. Also corrects a mistake in 0.1.29's fix: it moved the right-column "Export to GeoTIFF" box in step with the left-column AOI box, which aren't related to each other — groupBox_export no longer moves for a left-column-only change.
    0.1.29 Search tab: fix the area-of-interest summary line ("Drawn on map — West: ... South: ... East: ... North: ...") getting its second line clipped when it wraps — its box only ever had room for one line. This is the Search tab specifically (its Area of interest section is absolute-positioned, not layout-managed, so nothing there grows on its own); confirmed the Browse by Variable tab's equivalent already auto-sizes correctly since it does use a real layout. Now sized for two lines, with everything below it on the tab shifted down to match.
    0.1.28 Fix the 0.1.26 legend tick-label fix not actually showing on screen: the label box itself was sized correctly, but the surrounding "Legend" group box on the Search tab has its own separate fixed height, too short to fit the taller box — so the labels were still clipped by the group box's edge regardless. Confirmed still cropped in a fresh Linux screenshot after 0.1.26. Group box is now tall enough to fit the legend widget in full.
    0.1.27 Fix the 0.1.25 API Key tab Linux note being effectively invisible: it kept its static designer position, but this tab's other widgets get shifted up at runtime (closing the gap left by a permanently-hidden legacy banner) and the whole tab's window is deliberately kept small — between the two, the note ended up sitting right at/past the bottom edge of the visible window. It now moves up along with the rest, and the tab's window got a little taller to fit it.
    0.1.26 Search tab legend: fix the tick value labels (e.g. "254", "296") getting clipped at the bottom on Linux — this was a separate bug from 0.1.22's fix (that one was about the labels being too narrow and overlapping sideways; this one was the label box being too short and cropping the bottom of the digits under Linux's taller default font). Confirmed by a real Linux screenshot after 0.1.22 shipped.
    0.1.25 API Key tab: below the "Get a free key..." hint, add a note for Linux users that GDAL versions can vary by distro, linking straight to the Read the Docs "Installing QGIS on Linux (Ubuntu) with a matching GDAL version" section.
    0.1.24 Genericized the disclaimer's mention of the specific program this plugin was built under (README, this page's About text, and the Read the Docs landing page) — no longer names it, just notes it's an ECMWF-affiliated open-source program. Still not an official ECMWF product, still independent, still not maintained or supported by ECMWF.
    0.1.23 Fix two more Linux-only overlap spots from the same cause as 0.1.22's legend fix (bold text rendering wider under Linux's default font than Windows'): the bold "Set area of interest by:" label on the Search and Browse by Variable tabs, and the bold current-timestep label next to the Play button on the Search tab's WMTS time slider (this one could show a fairly long message like "Layer failed to load — check connection." right beside a fixed-position button). Both now wrap to a second line instead of running into neighbouring text/widgets if the rendered text is wider than expected.
    0.1.22 Fix the Search tab legend's tick value labels overlapping on Linux (confirmed working fine on Windows, overlapping there with the same numbers) — they were sized from a fixed guessed pixel width tuned for Windows' default font, and Linux's different default system font renders the same digits at a different width. Now measured from the label's actual rendered width instead, so it's correct regardless of platform/font.
    0.1.21 Security review fixes (QGIS plugin repository's Bandit/detect-secrets scan): every outgoing HTTP request now goes through a shared helper that refuses any URL scheme other than http/https before opening it (previously flagged as a theoretical local-file-read risk if a URL ever resolved to something like "file://"); a couple of broad "catch anything and continue" blocks were narrowed to the specific exceptions they can actually raise, and the two that are genuinely meant to catch anything (an optional GDAL setup step, and best-effort diagnostic logging that must never interrupt the real operation) are now explicitly marked as intentional rather than looking like an oversight; and a placeholder example string in an error message ("your-key") that a secret-scanner mistook for a real hardcoded credential is now explicitly marked as not one. No functional/behavioral changes.
    0.1.20 No longer marked experimental in the Plugin Manager — stable after the full gdal-native rewrite plus extensive live testing (several real bugs found and fixed along the way, see below and 0.1.19's entry). Time Series tab: removed the "Quick" (WMTS GetFeatureInfo, no-auth) method entirely — the tab is now always the ARCO-Zarr "Full history" bulk read, with Aggregation permanently in place of the old Step control; a dataset with no ARCO Zarr archive now just disables "Pick point on map" instead of falling back to a method that no longer exists. Fixed a third, separate Windows "file in use by another process" error that could interrupt CDS downloads/conversions (GDAL's own file-open calls right after a download, not just this plugin's own code). Datasets/variables using an unusually-spelled "no real unit" marker (e.g. aod550's "~", or "Numeric"/"Fraction"/"index value" on various fire-danger and ice-concentration variables) are now correctly shown as "(dimensionless)" in the legend instead of a stray non-numeric unit string; the legend's unit now shows once on the title line instead of repeated on every tick label, which was overlapping for longer units. Added a clearer error message (with a suggestion to upgrade QGIS/GDAL) for the rare case where an older GDAL build can't read a dataset's newer Zarr V3 storage format — confirmed happening in practice on QGIS 3.34 (GDAL < 3.9).
    0.1.19 Complete rewrite: the plugin no longer depends on the geobridge Python library or any pip-installed package at all (numpy/xarray/zarr/dask/rioxarray/pyproj included) — everything now runs on QGIS's own bundled GDAL, with no "Install dependencies" step. Search tab: restored geobridge's curated use-case/domain matching (e.g. "urban heat island" now surfaces its exact curated recipe, not just a generic text match) alongside free-text search, and the legend now shows a color-scale with tick marks and units, including for datasets that split variables across several subsets (e.g. ERA5-Land) where it previously stayed blank. Time Series tab: "Full history" gets an Aggregation dropdown (raw/daily/weekly/monthly/annual mean/max/min) in place of Step, and a silent bug where it could return exactly 1 point regardless of the requested date range (a Zarr time-unit mismatch, no error shown) is fixed; picking a point on the map is now one-shot instead of staying armed for another click. Fixed two separate Windows "file in use by another process" errors that could interrupt CDS downloads. The dialog no longer stays pinned above every other application on screen. Added ARCO Zarr-only notices on the Search/Time Series tabs linking to a new docs page listing every ARCO-backed dataset, a CDS sign-in link and API-key quickstart link on the API Key tab, and a note that this is an independent ECMWF Code for Earth participant project, not an official ECMWF product.
    0.1.18 Fix "Install dependencies" failing on some fresh installs with "the ssl module in Python is not available": the pip subprocess it spawns now inherits QGIS's own OpenSSL DLL directory on PATH, which a plain subprocess doesn't otherwise see. Search tab: default Start/End for a newly selected dataset are now floored to midnight instead of using geobridge's raw metadata timestamp verbatim (which could carry a stray non-zero minute/second and make every tile in the default window fail identically without you touching the date fields). "Build layers" now refuses (with an explanation) to start a new batch while a previous batch's tiles are still being prefetched, instead of piling more requests on top and risking overloading the WMTS server. Bumped the minimum installed geobridge version to 0.1.13.
    0.1.17 Fix "Draw on map" for area of interest: completing a rectangle no longer depends on a second signal round-trip to bring the dialog back (it could stay hidden indefinitely), and the crosshair map tool no longer gets stuck active on the canvas (including after closing the plugin) when no previous tool existed to restore. Area-of-interest warning label is no longer clipped for long "too large" messages, and now shows a positive confirmation when the area size is fine instead of just going blank. Search tab: warns before building WMTS layers for a monthly/yearly-native dataset whose start date doesn't land on the expected calendar boundary (a frequent cause of every tile failing identically), and now shows the actual data-coverage range for the selected variable next to Start/End, warning (default: no) if the requested range falls entirely outside it. Bumped the minimum installed geobridge version to 0.1.12.
    0.1.16 README: add a Mermaid workflow diagram, a Mermaid module diagram in Architecture, and emoji markers on every section heading.
    0.1.15 README: add an Authors section (Mentors, Participants).
    0.1.14 README: add a centered logo/title header, License/QGIS-version/docs/last-commit/issues badges, and an up-to-date Search tab screenshot; refresh the same screenshot on Read the Docs.
    0.1.13 Docs: replace the large Read the Docs sidebar logo with a small icon on the home page only; favicon unchanged.
    0.1.12 Docs: close out the CDS API key walkthrough with a reminder to accept the licence and to paste only the raw token (not the .cdsapirc url:/key: lines) into this plugin's API key field; add the plugin's own icon as the Read the Docs site favicon/logo.
    0.1.11 Search tab: add a per-variable color-scale legend and a Help button linking to the documentation site; Step and Aggregation dropdowns now grey out choices finer than a dataset's native time resolution (not just flag the exact match); Time Series Y-axis now shows units; area of interest gets independent Draw-on-map/From-layer controls (polygon layers only), a source-tagged bbox display, and info icons clarifying it's a bounding box (not a polygon clip) that only scopes Export to GeoTIFF, not the WMTS preview. Browse by Variable tab: auto-fill dataset-specific required CDS fields (e.g. reference_dataset/version) that the fixed field cascade doesn't cover, fixing CDS 400 rejections on datasets like derived-near-surface-meteorological-variables; same area-of-interest controls as the Search tab. Export to GeoTIFF aggregation now offers daily/monthly/annual max and min alongside mean. Docs: add a full illustrated walkthrough for creating a CDS API key.
    0.1.10 Add a show/hide eye icon inside the API Key field (masked by default) so you can check what you typed before saving.
    0.1.9 Browse by Variable tab now lists only datasets present in geobridge's cds_snapshot.yaml catalogue, dropping ARCO-only entries with no CDS catalogue backing (142 -> 136 datasets on the current geobridge version).
    0.1.8 Add Sphinx documentation (docs/, ready for Read the Docs) covering installation and each tab, with screenshots. Docs source is excluded from the shipped plugin zip, same as build_plugin.sh and test/.
    0.1.7 Fix area-of-interest bleed-through between the Search tab and Browse-by-Variable tab: they shared a single bbox, so drawing/selecting an area in one tab silently overwrote what the other tab would export/download. Each tab now keeps its own independent area of interest.
    0.1.6 Fix "No module named 'netCDF4'" when exporting/downloading CDS-API-path datasets not in the ARCO Zarr lake (e.g. ERA5-Land via the Browse tab): netcdf4 is now installed alongside geobridge[zarr], and the dependency-availability check catches its absence instead of reporting everything as installed.
    0.1.5 Silence harmless "AttributeError: 'NoneType' object has no attribute 'write'" log spam from numpy/scikit-learn (a geobridge dependency) writing deprecation notices to sys.stderr, which QGIS leaves as None until its Python Console has been opened once.
    0.1.4 Qt6 compatibility: fully qualified 33 unscoped enum references (Qt.AlignLeft -> Qt.AlignmentFlag.AlignLeft, QMessageBox.Yes -> QMessageBox.StandardButton.Yes, etc.) across timeseries_task.py, export_task.py, ts_plot_widget.py, browse_tab.py, geobridge_plugin_dialog.py.
    0.1.3 Stopped shipping .gitignore in the release zip — a hidden file inside the plugin tripped the plugin repo's suspicious-file scan.
    0.1.2 Stopped shipping build_plugin.sh in the release zip — a .sh file inside the plugin tripped the plugin repo's suspicious-file-type scan.
    0.1.1 Security-scan fixes: narrowed broad except/pass blocks flagged by Bandit, renamed a settings-key constant that false-positived as a hardcoded secret, annotated the one legitimate subprocess call, and stopped shipping the test/ folder in the release zip.
    0.1.0 First release: API key tab, semantic search tab, WMTS time-slider viewer (ERA5/CAMS/CEMS via ECMWF WMTS).

tags=copernicus,climate,era5,cams,cems,wmts,raster,web,api,geobridge,ecmwf,c3s

category=Web
icon=icon.png
experimental=False
deprecated=False
server=False
