{"id":51102647,"url":"https://github.com/bcdev/balticaims-qgis","last_synced_at":"2026-06-24T12:01:18.284Z","repository":{"id":346786486,"uuid":"960355264","full_name":"bcdev/balticaims-qgis","owner":"bcdev","description":"QGIS plugin to load xcube datasets for BalticAIMS","archived":false,"fork":false,"pushed_at":"2026-03-25T15:12:00.000Z","size":1637,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-03-26T14:58:09.123Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bcdev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-04T09:41:51.000Z","updated_at":"2026-03-25T15:12:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bcdev/balticaims-qgis","commit_stats":null,"previous_names":["bcdev/balticaims-qgis"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/bcdev/balticaims-qgis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcdev%2Fbalticaims-qgis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcdev%2Fbalticaims-qgis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcdev%2Fbalticaims-qgis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcdev%2Fbalticaims-qgis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcdev","download_url":"https://codeload.github.com/bcdev/balticaims-qgis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcdev%2Fbalticaims-qgis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34731256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-24T12:01:17.546Z","updated_at":"2026-06-24T12:01:18.267Z","avatar_url":"https://github.com/bcdev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BalticAIMS QGIS plugin\n\nA plugin for [QGIS](https://qgis.org/) to load [Xcube](https://github.com/xcube-dev/xcube) data cubes from an xcube server.\nThe plugin is being developed for ESA's [BalticAIMS](https://eo4society.esa.int/projects/balticaims/) project.\n\nQGIS is a free and open-source geographic information system (GIS) software\nused for visualizing and editing geospatial data in a variety of raster and\nvector formats. QGIS provides a Python plugin infrastructure that can be used\nto add additional processing functionality or control and extend the graphical\nuser interface. The QGIS documentation page provides a \n[User Guide](https://docs.qgis.org/3.44/en/docs/user_manual/) for general\nusage of QGIS and a Plugin Development Guide for developing Python plugins.\n\nThe BalticAIMS QGIS plugin enables QGIS users to visualize and analyze the\nspatiotemporal data cubes located in S3 storage from the QGIS environment that\nthey are familiar with. The same datasets may be inspected using the\n[xcube viewer page](https://viewer.balticaims.eu/) for BalticAIMS.\n\nThe plugin itself provides “actions”, which are menu entries under the\n“Plugins” main menu, that can be used to select data to load into QGIS.\nThe data of one variable is represented as a Raster Layer in\nthe same way e.g. a GeoTIFF file would be, enabling users to analyze it with\nstandard QGIS functions. The functionality of the plugin encompasses loading\ndata from S3 and annotating it with the correct metadata to integrate with\nbuilt-in QGIS features. Data analysis is left to built-in tools and other\nplugins.\n\n\u003e [!IMPORTANT]\n\u003e The plugin is still experimental, please have a look at the [Limitations](#limitations) section.\n\n## Contents\n\n- [BalticAIMS QGIS plugin](\u003c#balticaims-qgis-plugin\u003e)\n    - [Contents](\u003c#contents\u003e)\n    - [Concepts](\u003c#concepts\u003e)\n        - [Data Cubes](\u003c#data-cubes\u003e)\n    - [Installation](\u003c#installation\u003e)\n        - [Windows](\u003c#windows\u003e)\n            - [Steps](\u003c#steps\u003e)\n        - [Notes](\u003c#notes\u003e)\n    - [Usage](\u003c#usage\u003e)\n        - [Features](\u003c#features\u003e)\n        - [Loading Data](\u003c#loading-data\u003e)\n        - [The interface](\u003c#the-interface\u003e)\n        - [Temporal Control](\u003c#temporal-control\u003e)\n    - [Limitations](\u003c#limitations\u003e)\n\n## Concepts\n\n### Data Cubes\n\nUnlike a traditional raster data set which represents a physical quantity for a\nsingle time frame, data cubes often represent data for many time steps in a\ntime series. The plugin represents time series data as a single raster layer\nwith one band per time step. The concept of a “variable” in a data cube is\nrepresented as a Layer in QGIS whereas the “band” concept is used to\nrepresent time steps. With this mapping, datasets with dense time series can be\nrepresented without overcrowding the Layers Panel. However, it is important to\nkeep these concepts separated to avoid confusion between “band” and\n“variable”.\n\n## Installation\n\n### Windows\n\nThe Plugin relies on the [Xcube](https://github.com/xcube-dev/xcube) Python package, which is not distributed with the plugin.\n\nIn order to use the BalticAIMS QGIS plugin, the Python virtual environment, including Xcube, must be installed and configured for QGIS to use.\n\nOn Windows, you can use the install scripts provided with the release, to:\n\n1) setup the environment (`setup.bat`), done only once on installation\n2) run the QGIS version configured with the correct Python virtual environment (`run_qgis_with_xcube.bat`), every time you want to use the plugin\n.\n\nAfter the setup has been completed, you can install the plugin  using \"Install from Zip\" in the [QGIS Plugin Manager](https://docs.qgis.org/3.40/en/docs/training_manual/qgis_plugins/fetching_plugins.html). Simply select the plugin `balticaims.\u003cversion\u003e.zip` zip file in the dialog, which is contained in the release archive together with the installation scripts.\nPlease make sure to not select the release archive (which you can download from this repository), but the QGIS plugin zip `balticaims.\u003cversion\u003e.zip`, which is contained in the release archive and can be accessed after unzipping the archive.\n\n#### Steps\n\n1) Download the relase to the directory where you would like to install the Python environment\n2) Unzip the archive\n3) Run (by double click) the `setup.bat` script to install the Python environment. This will take several minutes. Please be aware that the script will not produce text output for a few minutes shortly after launch. Please be patient!\n4) Run (double click) the `run_qgis_with_xcube.bat` script to launch QGIS. QGIS' Python interpreter should now be configured to support the plugin\n5) Install the plugin using QGIS' Plugin Manager, if you didn't already\n\n### Notes\n\n- If the plugin is installed, you may encounter an error when launching QGIS normally, without running `run_qgis_with_xcube.bat`. You can ignore this error, but the plugin will not work.\n- You can verify that the Python environment is configured correctly, by opening the [Python Console](https://docs.qgis.org/3.40/en/docs/user_manual/plugins/python_console.html) in QGIS and running `import xcube`. If no error is thrown, the environment is working correctly.\n- The scripts `setup.bat` and `run_qgis_with_xcube.bat` must remain next to the other files distributed with the release and created by running `setup.bat`. Do not move the scripts to another location, or they will stop working. You can create a Desktop shortcut, if you wish.\n\n## Usage\n\n### Features\n\n- Load data hosted by the [BalticAIMS xcube server](https://xcube.balticaims.eu/api/datasets) directly into QGIS.\n  Each variable appears as a layer with bands representing the time dimension\n- Annotates layers with temporal information. Use QGIS' built-in\n  [Temporal Controller](https://docs.qgis.org/3.44/en/docs/user_manual/map_views/map_view.html#the-temporal-controller-panel) to step through\n- Sets up a default symbology with reasonable limits\n\n### Loading Data\n\nThe plugin loads data in two steps, which are shown as an action each, in the \nmain menu. On a higher level, BalticAIMS provides data cubes in an S3 bucket. \nThe plugin adds an action “Add Datacube” listing the available cubes and \nallows the user to add one to the selection of open cubes. At this first stage, \nno data is downloaded yet; the action merely makes the plugin aware of the \nmetadata of the cube of interest.\n\n![Select data cube dialog](./docs/img/select_cube.png)\n\n*select a data cube*\n\nThe second action, “Load layer”, allows users to select any variable from \nthe data cubes previously opened using “Add data cube” to download and \nvisualize. After the download is complete, the newly created \nlayer appears in the Layers Panel.  \n\n![Load layer dialog](./docs/img/load_layer.png)\n\n*load a data layer*\n\n### The interface\n\nThe loaded data appears in the Layers panel on the bottom left.\nThe layer name indicates the variable, the data cube it is taken from and the unit of measurement.\nThe raster values can be inspected with the \n[Identify Features](https://docs.qgis.org/3.44/en/docs/user_manual/introduction/general_tools.html#identify)\ntool (values are shown on the right).\nUse the \n[Temporal Controller](https://docs.qgis.org/3.44/en/docs/user_manual/map_views/map_view.html#the-temporal-controller-panel)\nto step through the time series.\n\n![Overview of features](./docs/img/features.png)\n\n*overview of features*\n\n### Temporal Control\n\nEach band in the layer is annotated with the starting date of the time range it represents.\nThis annotation has been chosen, because of a bug in the QGIS temporal controller, which\ncauses problems in the visualization if the bands are annotated with the full time range, i.e. a\nmonthly product having \"Begin\" set to the first of the month and \"End\" set to the last of the month.\n\n![Temporal annotation table](./docs/img/temporal_annotation.png)\n\n*Temporal annotation*\n\nTo correctly visualize all time steps, set the temporal controller to *Animated temporal navigation*, step the Animation\nrange back by one unit and set the step matching your data cube, e.g. to *months* for a monthly product.\n\n\u003e [!TIP]\n\u003e If you do not see any data after enabling temporal control, make sure the step is set in such a way that \n\u003e the date set for the band (for example, the first of the month) is included in the range.\n\u003e If the step is set to monthly, a monthly product should always show data if the time frame is inside\n\u003e the temporal bounds of the data cube.\n\n## Limitations\n\n- The selected (time) slice of the data cube is downloaded into memory. This limits the plugin to sufficiently small\n  data cubes. Please double check the estimated download size in the layer selection interface to make sure the data\n  will fit into RAM.\n- Data cube layers will not reopen if a project is closed and reopened. For now, it is necessary to manually open\n  these layers again.\n\n\u003e [!IMPORTANT]\n\u003e These limitations may be well addressed by native Zarr support coming to QGIS in the near future.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcdev%2Fbalticaims-qgis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbcdev%2Fbalticaims-qgis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcdev%2Fbalticaims-qgis/lists"}