How to update existing layers
Identify the layer and dataset configuration
Start by identifying the layer you want to update in QGreenland. For example,
this might be Human activity/Research sites/Seismograph stations. To find the
layer configuration in the qgreenland code, look in the associated
subdirectory of qgreenland/config/layers/. For the Seismograph stations layer,
this would be qgreenland/config/layers/Human activity/Research sites.
Note
Layer configuration is setup to mirror the layout of the Layers Panel in
QGIS. To change the order of layers or layer groups, see the __settings__.py
in the subdirectory in which you want to make a change. For more information,
see Layers and layer groups config
From the layer configuration, it should be easy to identify the dataset
configuration. Look for an import of a dataset at the top of the layer
configuration file. For example, the import for Seismograph stations may look
like:
from qgreenland.config.datasets.seismograph_stations import (
seismograph_stations as dataset,
)
In this case, the dataset config can be found in
qgreenland/config/datasets/seismograph_stations.py
Update dataset configuration
When a dataset is updated, it is usually necessary to update the dataset configuration to reflect the new version. Make sure to check the title, citation, and abstract for necessary updates.
If the location(s) of the source data has changed (e.g., the URL is different),
update the assets list.
To learn more about dataset configuration, see Datasets config.
Try fetching the updated data
Once the datasaet configuration has been updated, you should try testing out the configuration by fetching the data.
First, cleanup the existing dataset. This can be accomplished with the cleanup
subcommand of the CLI. The -f flag lets you specify what you want to cleanup
by passing it a dataset ID or a pattern that matches it. Below, we cleanup
any fetched data with seismograph_stations in the name.
./scripts/cli.sh cleanup -f "*seismograph_stations*"
Next, try fetching the data with the fetch subcommand, providing a similar
pattern:
./scripts/cli.sh fetch --workers 1 "*seismograph_stations*"
Assuming the fetch is successful, you may want to manually check the fetched
data. It can be found in the data/working-storage/fetch-datasets/ directory:
$ ls data/working-storage/fetch-datasets/seismograph_stations.only/
stations.kmz
$ ogrinfo -summary data/working-storage/fetch-datasets/seismograph_stations.only/stations.kmz
INFO: Open of `data/working-storage/fetch-datasets/seismograph_stations.only/stations.kmz'
using driver `LIBKML' successful.
1: International Registry of Seismograph Stations
Update layer configuration
Once you have successfully fetched the updated data, it is time to update the layer configuration.
Check the title and description of the layer and update as needed.
Consider any relevant changes to the style (see How to contribute styles) for more info.
Finally, check the steps configuration and determine if any tweaks need to be
made given the updated data. For example, if the updated dataset uses a new
filename or file format, these steps may need to change. To learn more about
layer steps, see Layer steps
Run QGreenland with the changes
After the dataset and layer configuration are updated, you can test the
QGreenland processing pipline with the run subcommand.
Pre-run cleanup
Before a new run, cleanup intermediate/work-in-progress (WIP) data. Without
this step, the code might report that the processing is already complete and
nothing needs to be done.
Below, the first command cleans up release layers, WIP packages, and release
packages. The second command cleans up WIP layers matching the given pattern, in
this case *seismograph*.
./scripts/cli.sh cleanup -RL -WP -RP
./scripts/cli.sh cleanup -wl "*seismograph*"
Building the package with run
The --include flag can be used to limit the number of layers processed to
speedup an otherwise long build. The -Z flag prevents the final zip step that
zips the package up for distribution, also saving time for testing.
./scripts/cli.sh run -Z --include="*coastline*" --include "*earthquake*" --include "*seismograph*"
Note that in the example above, we include the coastline and earthquake layers
in addition to the newly updated seismograph_stations for reference purposes.
Check the output
Assuming the run was successful, check the output to ensure that the updates
have been correctly applied. The newly built package is in
data/working-storage/wip-package/QGreenland. Open the
data/working-storage/wip-package/QGreenland/qgreenland.qgz in QGIS and
manually inspect the data.
Lock the config
After confirming that the new layer updates are successful, run the following command to update the config lock file:
inv config.export > qgreenland/config/cfg-lock.json
Update the CHANGELOG
Update the CHANGELOG.md, indicating what layers were updated. If needed, bump
the version for a new release. See How to release a new version of QGreenland
Core code for details!
Open a Pull Request
Finally, open a Pull Request (PR) on GitHub with the changes in a new branch that is named in a descriptive way.